Linux: Aktives Fenster auf anderen Monitor verschieben

Mit diesem kleinen Script lässt sich das aktuelle Fenster leicht per Shortcut von einem auf den anderen Monitor verschieben. Funktioniert auch mit maximierten Fenstern, die nach dem Verschieben weiterhin maximiert bleiben.

Das Script ist für zwei Monitore mit gleicher Auflösung ausgelegt.

#!/bin/bash

# screen width
screen_width=1280

# active window
window=`xdotool getactivewindow`

# get active window size and position
x=`xwininfo -id $window | grep "Absolute upper-left X" | awk '{print $4}'`
w=`xwininfo -id $window | grep "Width" | awk '{print $2}'`

maximized=false
if [[ "$w" -eq "$screen_width" ]]; then
	maximized=true
fi

# window on left monitor
if [ "$x" -lt "$screen_width" ]; then
	
	if $maximized; then
		wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz
	fi

	wmctrl -r :ACTIVE: -e 0,$screen_width,-1,-1,-1

	if $maximized; then
		wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz
	fi

# window on right monitor
else
	
	if $maximized; then
		wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz
	fi

	wmctrl -r :ACTIVE: -e 0,0,-1,-1,-1

	if $maximized; then
		wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz
	fi

fi