snap your window to the left or right

By Hal Canary, 2011-11-08 12:00:00 (link)

This script will snap your window to the left or right side of the screen in Linux: (SOURCE)

#!/bin/sh
## ${HOME}/bin/wmctrl-snap-edge
#DTPD#
WMCTRL="${HOME}/bin/wmctrl_`arch`"
#WMCTRL="/usr/bin/wmctrl"
test -x "/usr/bin/xdpyinfo" -a -x "$WMCTRL" || {
    echo "error"; exit 1; }

WIDTH=`xdpyinfo | sed -n 's/ *dimensions: *\([0-9]*\)x.*/\1/p'`
HALF=$(($WIDTH / 2));
"$WMCTRL" -r :ACTIVE: -b add,maximized_vert;
if test "$1" = "left" ; then
	"$WMCTRL" -r :ACTIVE: -e 0,0,0,$HALF,-1
elif test "$1" = "right" ; then
	"$WMCTRL" -r :ACTIVE: -e 0,$HALF,0,$HALF,-1
fi

If you don't have wmctrl installed, you can apt-get it (Ubuntu):

sudo apt-get --yes install wmctrl
Or compile it yourself:
sudo yum install libXmu-devel
cd /tmp
wget 'http://tomas.styblo.name/wmctrl/dist/wmctrl-1.07.tar.gz'
tar --extract --gzip --file "wmctrl-1.07.tar.gz"
cd wmctrl-1.07
./configure
make -j 4
mv wmctrl ${HOME}/bin/wmctrl_`arch`

The next step is to set up hotkeys. If you use Metacity like I do, then:

gconftool-2 --type string --set \
	/apps/metacity/global_keybindings/run_command_6 \
	'<Ctrl><Alt>Page_Up'

gconftool-2 --type string --set \
	/apps/metacity/keybinding_commands/command_6 \
	"${HOME}/bin/wmctrl-snap-edge left"

gconftool-2 --type string --set \
	/apps/metacity/global_keybindings/run_command_7 \
	'<Ctrl><Alt>Page_Down'

gconftool-2 --type string --set \
	/apps/metacity/keybinding_commands/command_7 \
	"${HOME}/bin/wmctrl-snap-edge right"

(back)