mirror of https://aur.archlinux.org/mtnm.git
commit
914c3be7bb
@ -0,0 +1,13 @@ |
||||
pkgbase = mtnm |
||||
pkgdesc = Moves window to next monitor / screen |
||||
pkgver = 2012.05.23 |
||||
pkgrel = 1 |
||||
url = http://icyrock.com/blog/2012/05/xubuntu-moving-windows-between-monitors/ |
||||
arch = any |
||||
license = unknown |
||||
depends = xdotool wmctrl |
||||
source = mtnm |
||||
md5sums = dc2fb22fb51cf83634474c7740dbfcf2 |
||||
|
||||
pkgname = mtnm |
||||
|
@ -0,0 +1,17 @@ |
||||
*.zip |
||||
*.jar |
||||
*.tar |
||||
*.tgz |
||||
*.tbz2 |
||||
*.gz |
||||
*.bz2 |
||||
*.xz |
||||
*.gem |
||||
*.run |
||||
*.deb |
||||
*.rpm |
||||
*.sig |
||||
*.log |
||||
/src |
||||
/pkg |
||||
*.kate-swp |
@ -0,0 +1,26 @@ |
||||
# Maintainer: Peter Babič <babicpet at gmail dot com> |
||||
pkgname=mtnm |
||||
pkgver=2012.05.23 |
||||
pkgrel=1 |
||||
pkgdesc="Moves window to next monitor / screen" |
||||
arch=(any) |
||||
url="http://icyrock.com/blog/2012/05/xubuntu-moving-windows-between-monitors/" |
||||
license=('unknown') |
||||
groups=() |
||||
depends=('xdotool' 'wmctrl') |
||||
makedepends=() |
||||
optdepends=() |
||||
provides=() |
||||
conflicts=() |
||||
replaces=() |
||||
backup=() |
||||
options=() |
||||
install= |
||||
changelog= |
||||
source=('mtnm') |
||||
noextract=() |
||||
md5sums=('c64f49268124746d83eb634aa6b9bbd0') |
||||
|
||||
package() { |
||||
install -Dm755 "$srcdir"/mtnm "$pkgdir"/usr/bin/mtnm |
||||
} |
@ -0,0 +1,72 @@ |
||||
#!/bin/sh |
||||
# |
||||
# |
||||
# Move the current window to the next monitor. |
||||
# |
||||
# Also works only on one X screen (which is the most common case). |
||||
# |
||||
# Props to |
||||
# http://icyrock.com/blog/2012/05/xubuntu-moving-windows-between-monitors/ |
||||
# http://makandracards.com/makandra/12447-how-to-move-a-window-to-the-next-monitor-on-xfce-xubuntu |
||||
# |
||||
# Unfortunately, both "xdotool getwindowgeometry --shell $window_id" and |
||||
# checking "-geometry" of "xwininfo -id $window_id" are not sufficient, as |
||||
# the first command does not respect panel/decoration offsets and the second |
||||
# will sometimes give a "-0-0" geometry. This is why we resort to "xwininfo". |
||||
|
||||
screen_width=`xdpyinfo | awk '/dimensions:/ { print $2; exit }' | cut -d"x" -f1` |
||||
screen_height=`xdpyinfo | awk '/dimensions:/ { print $2; exit }' | cut -d"x" -f2` |
||||
display_width=`xdotool getdisplaygeometry | cut -d" " -f1` |
||||
display_height=`xdotool getdisplaygeometry | cut -d" " -f2` |
||||
window_id=`xdotool getactivewindow` |
||||
|
||||
# Remember if it was maximized. |
||||
window_state=`xprop -id $window_id _NET_WM_STATE | awk '{ print $3 }'` |
||||
|
||||
# Un-maximize current window so that we can move it |
||||
wmctrl -ir $window_id -b remove,maximized_vert,maximized_horz |
||||
|
||||
# Read window position |
||||
x=`xwininfo -id $window_id | awk '/Absolute upper-left X:/ { print $4 }'` |
||||
y=`xwininfo -id $window_id | awk '/Absolute upper-left Y:/ { print $4 }'` |
||||
|
||||
# Subtract any offsets caused by panels or window decorations |
||||
x_offset=`xwininfo -id $window_id | awk '/Relative upper-left X:/ { print $4 }'` |
||||
y_offset=`xwininfo -id $window_id | awk '/Relative upper-left Y:/ { print $4 }'` |
||||
x=`expr $x - $x_offset` |
||||
y=`expr $y - $y_offset` |
||||
|
||||
# Compute new X position |
||||
new_x=`expr $x + $display_width` |
||||
# Compute new Y position |
||||
new_y=`expr $y + $display_height` |
||||
|
||||
# If we would move off the right-most monitor, we set it to the left one. |
||||
# We also respect the window's width here: moving a window off more than half its width won't happen. |
||||
width=`xdotool getwindowgeometry $window_id | awk '/Geometry:/ { print $2 }'|cut -d"x" -f1` |
||||
if [ `expr $new_x + $width / 2` -gt $screen_width ]; then |
||||
new_x=`expr $new_x - $screen_width` |
||||
fi |
||||
|
||||
height=`xdotool getwindowgeometry $window_id | awk '/Geometry:/ { print $2 }'|cut -d"x" -f2` |
||||
if [ `expr $new_y + $height / 2` -gt $screen_height ]; then |
||||
new_y=`expr $new_y - $screen_height` |
||||
fi |
||||
|
||||
# Don't move off the left side. |
||||
if [ $new_x -lt 0 ]; then |
||||
new_x=0 |
||||
fi |
||||
|
||||
# Don't move off the bottom |
||||
if [ $new_y -lt 0 ]; then |
||||
new_y=0 |
||||
fi |
||||
|
||||
# Move the window |
||||
xdotool windowmove $window_id $new_x $new_y |
||||
|
||||
# Maximize window again, if it was before |
||||
if [ -n "${window_state}" ]; then |
||||
wmctrl -ir $window_id -b add,maximized_vert,maximized_horz |
||||
fi |
Loading…
Reference in new issue