Oddzielna przestrzeń robocza dla drugiego ekranu

16

Chciałbym osiągnąć takie zachowanie: Kiedy korzystam z ekranu laptopa, używany jest mój pierwszy obszar roboczy. Po podłączeniu drugiego ekranu (przez HDMI) używany jest drugi obszar roboczy i wszystkie nowe otwarte okna na tym drugim ekranie wylądują w drugim obszarze, z wyjątkiem tego, że przełączam obszar roboczy na drugim ekranie na inny obszar roboczy.

Po odłączeniu drugiego ekranu wszystkie okna pozostaną w obszarach roboczych, w których zostały utworzone, i mogę je przełączać na laptopie, aby je zobaczyć.

Czy to zachowanie jest już możliwe?

velop
źródło
Udało mi się już włączyć obszary robocze za pomocą Wygląd -> Zachowanie i wyłączyć pionowe obszary robocze za pomocą Menedżera ustawień CompizConfig. Istnieją również wtyczki Expo i Viewport Switcher, które wydają się być w stanie robić to, co chcę, ale obawiam się zmiany ustawień bez wiedzy.
velop,
Twoje pytanie jest trochę mylące. Jeśli chcesz utworzyć ekrany jako dwa osobne obszary robocze, odpowiedź brzmi nie, nie jest możliwa. Jeśli poprosisz o automatyczną zmianę liczby obszarów roboczych po podłączeniu drugiego ekranu, jest to możliwe. Proszę wyjaśnić / uprościć to, o co pytasz
Sergiy Kolodyazhnyy,
2
Znalazłem opcję Compiz -> Ściana pulpitu -> Przełączanie rzutni -> Multimonitor bahvior -> Przełącz osobno. Ale najwyraźniej to nie działa.
velop,
@velop, czy możesz edytować te komentarze w pytaniu?
SDsolar

Odpowiedzi:

1

Czy to zachowanie jest już możliwe?

W Linuksie wszystko jest możliwe. Będziesz potrzebować podstawowej wiedzy na temat Xserver , trochę czasu i systemu do testowania, ponieważ masz problemy z X i na pewno potrzebujesz przeglądarki, jeśli potrzebujesz pomocy :-)

Moim zdaniem istnieją trzy możliwe rozwiązania:

  • Konfiguracje wielomonitorowe wykorzystują Xinerama . Najprostszym rozwiązaniem, jakie mogę wymyślić, jest dodanie trzeciego wirtualnego ekranu do konfiguracji i po prostu przeniesienie tam okien za pomocą xdotool. Istnieją pewne wady tego rozwiązania, ale nie wymagałoby to wysiłku w przenoszeniu okien między różnymi serwerami Xserver, co zasadniczo nie jest możliwe.

  • Ponieważ nie jest możliwe, aby poruszać się pomiędzy różnymi oknami Xservers musimy rodzaj pełnomocnictwa jak xmove lub Xpra to zrobić dla nas. Myślę, że okna następnie żyją w osobnej sesji Xfvb, aby je ukryć. Możesz dołączyć i odłączyć do sesji.

  • Niezależnie od używanej metody potrzebujesz zdarzenia, gdy monitor zostanie odłączony od zasilania. Zdarzenie powinno zostać uruchomione, gdy ekran zostanie odłączony, a także po ponownym połączeniu. Możesz demonizować skrypt, aby obserwować zdarzenie.

Wolę rozwiązanie wykorzystujące Xpra z różnych powodów. Mogę tylko dać ci kilka wskazówek, jak to zrobić. Rozwiązania nie są kompletne, ale powinieneś zacząć.

Rozwiązanie Xinerama

Ustawiać

Konfiguracja Xinerama musi zostać rozszerzona, aby uzyskać konfigurację statyczną: patrz https://help.ubuntu.com/community/XineramaHowTo

zobacz także fałszywy trzeci ekran i Xdummy

uzyskać wpływ na okna

Możemy użyć xdotool do wyszukiwania okien. Następnie możemy sprawdzić ich pozycję i przesunąć je. Zakładam dwa monitory z 1920x1080konfiguracją. Poniższe spowoduje przeniesienie wszystkich okien z prawego do lewego ekranu xinerama.

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 '.*')"

Możesz teraz przenieść wszystkie okna z ekranu laptopa (screen0) na trzeci (wirtualny) ekran, jeśli monitor zostanie podłączony. W tym samym czasie możesz przenieść dowolne okno zapisane na trzecim ekranie na pierwszy ekran.

Rozwiązanie XPRA

Aby używać Xpra do przenoszenia okien, wszystkie okna muszą być wcześniej zarządzane przez Xpra. Musisz uruchomić cały pulpit za pomocą Xpra podczas uruchamiania systemu. Dwa razy jeden to główny pulpit, na którym pracujesz, a drugi to głównie pulpit wirtualny.

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

Teraz możesz mieć system Windows dla odłączonego ekranu działający w osobnej sesji xpra i dołączać / odłączać go, gdy monitor się przełącza.

xpra attach :99
xpra detatch :99

Istnieje również przerwane rozszerzenie powłoki gnome, które może być przydatne, jeśli chcesz ręcznie przenieść okno z ukrytego :99do normalnego :0między uruchomionymi ekranami xpra.

Wydarzenie

  • Możesz obserwować rozłączenie / ponowne połączenie określonego wyświetlacza

  • może uważaj na zmienione wymiary xineramy za pomocą xwininfo, aby uniezależnić go od niepodłączonego monitora, jeśli chcesz, tj. rozszerzyć konfigurację do 3 monitorów i odłączyć dowolne urządzenie. Zauważ, że będzie to działać tylko w przypadku rozwiązania xpra.

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

    -geometry 5760x2160+0+0

ukos
źródło