
Angenommen, Sie haben mehrere Fenster auf mehreren Monitoren geöffnet. Dann wechseln Sie zur Verwendung eines einzelnen Monitors (möglicherweise, weil Sie Ihren Laptop aus der Dockingstation genommen haben). Alle Ihre Fenster werden jetzt auf einem Bildschirm angezeigt.
Dann wechseln Sie zurück zu Ihrer Konfiguration mit mehreren Monitoren. Sie haben jetzt mehr Platz auf dem Bildschirm, aber alle Ihre Fenster sind zunächst auf einem einzigen Monitor gestapelt. Es wäre schön, wenn Ihre Fenster auf den Monitor zurückkehren würden, auf dem sie ursprünglich waren.
Irgendwelche Ideen, wie dies erreicht werden könnte?
Antwort1
Abonnieren
Grobe Idee, aber Sie könnten erreichen, was Sie wollen, indem Sie ein paar Befehle erstellen mitxdotool
. Dann können Sie sie entsprechend ausführen, wenn Sie 1 oder 2 Monitore angeschlossen haben.
In diesem Artikel mit dem Titel finden Sie ein ziemlich gutes Beispiel dafür, wie Sie dies tun können:Xubuntu – Fenster zwischen Monitoren verschieben.
Auszug aus dem Abschnitt: Aktives Fenster auf den anderen Monitor verschieben (endlich!)
Folgendes müssen wir tun:
- Suchen des aktiven Fensters
- Holen Sie sich den maximierten Zustand und merken Sie ihn sich
- Maximierung entfernen
- Holen Sie sich die Geometrie
- Berechnen Sie die neue Position
- Bewege es
- Maximieren basierend auf dem vorherigen Zustand
- Erhöhen Sie es
Hier ist ein Skript, das dies tut:
wid=`xdotool getactivewindow`
max_state=`xprop -id $wid _NET_WM_STATE`
wmctrl -ir $wid -b remove,maximized_vert,maximized_horz
eval `xdotool getwindowgeometry --shell $wid`
new_x=1600
if [[ "$X" -ge "$new_x" ]]; then
new_x=0
fi
xdotool windowmove $wid $new_x $Y
if [ -z "${max_state/*_NET_WM_STATE_MAXIMIZED_*/}" ]; then
wmctrl -ir $wid -b add,maximized_vert,maximized_horz
fi
xdotool windowraise $wid
Interaktivere Methode
Ich habe auch einen anderen Ansatz gefunden, der ebenfalls verwendet xdotool
, aber in ein Shell-Skript eingebunden wurde, das Sie dann mit einer Tastenkombination verknüpfen konnten. Mit dieser Methode konnten Sie ein Fenster auswählen, sodass es hervorgehoben und fokussiert wurde, und durch Drücken der Tastenkombination wurde die Anwendung in ein anderes Fenster gesendet. Der Artikel trägt den Titel:Verschieben von Fenstern zwischen Monitoren.
Die Methode stellt das folgende Skript bereit windowmove.sh
:
#!/bin/bash
if [ $1 -eq 2 ]
then
POS1=`xrandr --current | head -2 | tail -1 | cut -d 'x' -f1 | cut -d ' ' -f3`
POS2=0
else
POS1=0
POS2=0
fi
/usr/bin/xdotool windowmove `/usr/bin/xdotool getwindowfocus` $POS1 $POS2
exit 0
POS1 berechnet die Breite Ihres Hauptbildschirms anhand der Ausgabe von xrandr. Wenn Sie feststellen, dass das Skript Fenster nicht nach rechts, aber nach links verschieben kann, ersetzen Sie diese Zeile durch POS1=1920 und ersetzen Sie 1920 durch die Breite Ihres Hauptmonitors in Pixeln.
Führen Sie dann das Applet „Tastaturbelegungen“ aus:
$ gnome-keybinding-properties
NOTIZ:Dies kann über die GUI von verschiedenen Orten auf verschiedenen Distributionen aus ausgeführt werden.
Erstellen Sie 2 Tastenkombinationen mit diesen 2 Anwendungsstarts:
- Befehl der Bindung Nr. 1:
./Scripts/windowmove.sh 1
- Befehl der Bindung Nr. 2:
./Scripts/windowmove.sh 2
Antwort2
Sie brauchen nicht xdotool
. Sie können alle Fensterpositionen aufzeichnen und sie später einfach wiederherstellen mit wmctrl
:
Aufzeichnen:wmctrl -lG > ${rcfile}
Ort:
while read row; do
IFS=" " read id g x y w h _ <<< ${row}
wmctrl -ir ${id} -e 0,${x},${y},${w},${h}
done < ${rcfile}