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

Eine Antwort auf „Linux: Aktives Fenster auf anderen Monitor verschieben“

  1. very nice script, thanks a lot for this.
    I modified it so it works with 2 monitors with different resolutions:

    [CODE]
    #!/bin/bash

    # screen width
    screen_width1=1680
    screen_width2=1920

    # 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

    # window on left monitor
    if [ „$x“ -lt „$screen_width1“ ]; then
    if [[ „$w“ -eq „$screen_width1“ ]]; then
    maximized=true
    fi

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

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

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

    # window on right monitor
    else
    if [[ „$w“ -eq „$screen_width2“ ]]; then
    maximized=true
    fi

    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
    [/CODE]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.