it-swarm.com.de

Separater WorkSpace für zweiten Bildschirm

Ich möchte folgendes Verhalten erreichen: Wenn ich meinen Laptop-Bildschirm benutze, wird mein erster Arbeitsbereich verwendet. Wenn ich einen zweiten Bildschirm (über HDMI) anschließe, wird ein zweiter Arbeitsbereich verwendet und alle neu geöffneten Fenster auf diesem zweiten Bildschirm landen im zweiten Bereich, mit der Ausnahme, dass ich den Arbeitsbereich auf dem zweiten Bildschirm auf einen anderen Arbeitsbereich umstelle.

Wenn ich meinen zweiten Bildschirm ausstecke, bleiben alle Fenster in den Arbeitsbereichen, in denen sie erstellt wurden, und ich kann die Arbeitsbereiche auf meinem Laptop wechseln, um sie anzuzeigen.

Ist dieses Verhalten schon möglich?

16
velop

Ist dieses Verhalten schon möglich?

Unter Linux ist alles möglich. Sie benötigen einige Grundkenntnisse über den Xserver , einige Zeit und ein System zum Testen, da Sie mit Ihrem X herumspielen und auf jeden Fall den Browser zum Laufen brauchen, wenn Sie Hilfe benötigen :-)

Meiner Meinung nach gibt es drei mögliche Lösungen:

  • Multimonitor-Setups verwenden Xinerama . Die einfachste Lösung, die ich mir vorstellen kann, besteht darin, Ihrer Konfiguration einen dritten virtuellen Bildschirm hinzuzufügen und die Fenster einfach mit xdotool dorthin zu verschieben. Diese Lösung hat einige Nachteile, erfordert jedoch nicht den Aufwand, Fenster zwischen verschiedenen Xservern verschieben zu müssen, was im Allgemeinen nicht möglich ist.

  • Da es nicht möglich ist, Fenster zwischen verschiedenen Xservers zu verschieben, benötigen wir eine Art Proxy wie xmove oder Xpra , um dies für uns zu tun. Ich denke, die Fenster leben dann in einer separaten Xfvb Sitzung, um die Fenster auszublenden. Sie können eine Verbindung zur Sitzung herstellen und trennen.

  • Unabhängig davon, welche Methode Sie verwenden, benötigen Sie ein Ereignis, wenn der Monitor vom Stromnetz getrennt wird. Das Ereignis sollte ausgelöst werden, wenn die Verbindung zum Bildschirm getrennt wird und auch, wenn die Verbindung wiederhergestellt wird. Sie können das Skript dämonisieren, um auf das Ereignis zu achten.

Ich würde die Lösung aus verschiedenen Gründen mit Xpra bevorzugen. Ich kann Ihnen nur einige Hinweise geben, wie es geht. Die Lösungen sind noch nicht vollständig, sollten Sie jedoch in den Griff bekommen.

Xinerama-Lösung

Konfiguration

Das Xinerama-Setup muss erweitert werden, um eine statische Konfiguration zu erhalten: Siehe https://help.ubuntu.com/community/XineramaHowTo

siehe auch gefälschter dritter Bildschirm und Xdummy

betroffene Fenster bekommen

Wir können xdotool verwenden, um nach Fenstern zu suchen. Danach können wir ihre Position überprüfen und sie bewegen. Ich gehe von zwei Monitoren mit 1920x1080 Konfiguration aus. Im Folgenden werden alle Fenster vom rechten zum linken xinerama-Bildschirm verschoben.

while read xwindowid; do
    eval $(xdotool getwindowgeometry --Shell "$xwindowid")
    if (( X > 1920 && X <= (1920 * 2))); then
        xdotool windowmove --relative $WINDOW -1920 y
    fi
done <<< "$(xdotool search --screen 0 '.*')"

Sie können jetzt alle Fenster von Ihrem Laptop-Bildschirm (screen0) auf einen dritten (virtuellen) Bildschirm verschieben, wenn ein Monitor angeschlossen wird. Gleichzeitig können Sie jedes auf dem dritten Bildschirm gespeicherte Fenster auf den ersten Bildschirm verschieben.

XPRA-Lösung

Um Xpra zum Verschieben der Fenster verwenden zu können, müssen alle Fenster zuvor von Xpra verwaltet werden. Sie müssen starten Sie den gesamten Desktop mit Xpra beim Systemstart. Zweimal ist einer Ihr Hauptdesktop, auf dem Sie arbeiten, und der andere ist hauptsächlich ein virtueller Desktop.

xpra start-desktop :99
xpra start-desktop :1 --exit-with-children −−attach

Jetzt können Sie Windows für den nicht verbundenen Bildschirm in einer separaten xpra-Sitzung ausführen und ihn beim Umschalten des Monitors verbinden oder trennen.

xpra attach :99
xpra detatch :99

Es gibt auch eine nicht mehr unterstützte Gnome-Shell-Erweiterung , die nützlich sein kann, wenn Sie ein Fenster zwischen gestarteten xpra-Anzeigen manuell vom versteckten :99 zum normalen :0 verschieben möchten.

Das Ereignis

  • Sie können auf das Trennen/Wiederverbinden eines bestimmten Displays achten

  • vielleicht können Sie mit xwininfo nach geänderten Abmessungen Ihres Xinerama suchen, um es unabhängig vom nicht angeschlossenen Monitor zu haben, wenn Sie Ihr Setup auf 3 Monitore erweitern und ein beliebiges Gerät vom Netz trennen möchten. Beachten Sie, dass dies nur für die xpra-Lösung funktioniert.

    xwininfo -display :0 -root | grep -e "-geometry"

    -geometry 5760x2160+0+0

1
ukos