Last active
June 30, 2017 01:54
-
-
Save chrisvire/5571470 to your computer and use it in GitHub Desktop.
movewindow.sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
XDO=/usr/bin/xdotool | |
# This script moves the active window between different monitors | |
# usage: movewindow [-vsn] [left|right] | |
select=0 | |
noop=false | |
verbose=false | |
while getopts "h?vsn" opt; do | |
case "$opt" in | |
v) verbose=true | |
;; | |
s) select=1 | |
;; | |
n) noop=true | |
;; | |
esac | |
done | |
shift $((OPTIND-1)) | |
[ "$1" == "--" ] && shift | |
if [ $select -eq 1 ] | |
then | |
read WINDOW <<< `$XDO selectwindow 2> /dev/null` | |
else | |
read WINDOW <<< `$XDO getactivewindow` | |
fi | |
$verbose && echo "WINDOW=$WINDOW" | |
read DESKTOP_WINDOW DESKTOP_X DESKTOP_Y DESKTOP_WIDTH DESKTOP_HEIGHT DESKTOP_SCREEN <<< `$XDO search --name "Desktop" getwindowgeometry --shell | cut -d= -f2` | |
$verbose && echo "Desktop width is $DESKTOP_WIDTH" | |
read DISPLAY_WIDTH DISPLAY_HEIGHT <<< `$XDO getdisplaygeometry --shell |cut -d= -f2` | |
$verbose && echo "Display width is $DISPLAY_WIDTH" | |
read WINDOW X Y WIDTH HEIGHT SCREEN <<< `$XDO getwindowgeometry --shell $WINDOW | cut -d= -f2` | |
$verbose && echo "Window X is $X" | |
$verbose && echo "Window width is $WIDTH" | |
if [ $1 == "left" ] | |
then | |
if [ $X -lt $DISPLAY_WIDTH ] | |
then NEW_X=$[$DESKTOP_WIDTH - $DISPLAY_WIDTH + $X] | |
else NEW_X=$[$X - $DISPLAY_WIDTH] | |
fi | |
else | |
NEW_X=$[$X + $DISPLAY_WIDTH] | |
if [ $NEW_X -gt $DESKTOP_WIDTH ] | |
then NEW_X=$[$NEW_X - $DESKTOP_WIDTH] | |
fi | |
fi | |
$verbose && echo "New X is $NEW_X" | |
CMD="$XDO windowmove $WINDOW $NEW_X y" | |
if [ $noop == true ] | |
then | |
echo $CMD | |
exit 0 | |
fi | |
$CMD | |
#$XDO windowmove $WINDOW $NEW_X y |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I found on lines 33, 36, 39 I had to set the delimiter explicitly on Ubuntu 17.04 - by doing "read -d '\t'". I also suggesting quoting "$1" on line 43, consistent with line 23, so that it does not error if you pass no arguments.