Przypisz obszary robocze na i3 do wielu wyświetlaczy

15

Włączyłem i3 na moim laptopie z systemem Linux. Zwykle używam tylko wewnętrznego monitora (wyświetlacza eDP1) laptopa , ale kiedy jestem w pracy, zwykle podłączam dodatkowy monitor do portu HDMI (wyświetlacza HDMI2) mojego komputera . Jak dotąd poprawiłem to, dodając następujące polecenia do mojego pliku konfiguracyjnego i3:

# use workspaces on different monitors
workspace "1: P1" output eDP1
workspace "2: P2" output eDP1
workspace "3: P3" output eDP1
workspace "4: P4" output eDP1
workspace "5: P5" output eDP1
workspace "6: S1" output HDMI2 
workspace "7: S2" output HDMI2
workspace "8: S3" output HDMI2
workspace "9: S4" output HDMI2
workspace "10: S5" output HDMI2

# add HDMI monitor when connected
exec --no-startup-id xrandr --output HDMI2 --right-of eDP1
bindsym $mod+m exec --no-startup-id xrandr --output HDMI2 --auto --right-of eDP1

Innymi słowy, kiedy podłączam swój monitor HDMI, po prostu naciskam Mod+, Maby i3 go wykrył, umieścił go po prawej stronie mojego głównego wyświetlacza i przekazałem mu 5 nazwanych obszarów roboczych (6-10).

Oto problem: w domu mam inny monitor, który mogę połączyć z VGA (wyświetlacz DP2). Mogę również uruchomić xrandrpowyższe polecenie, aby umieścić ten ekran po prawej stronie mojego głównego ekranu, ale nie mogę domyślnie przypisać obszarów roboczych do tego ekranu, chyba że zastąpię reguły, które już mam dla mojego monitora HDMI. Chciałbym, aby oba te obszary robocze działały tak samo bez względu na to, jakiego monitora używam, więc nie jest to opcja.

TL; DR Czy istnieje sposób przypisania obszarów roboczych do dwóch różnych ekranów, w zależności od tego, który ekran jest podłączony (zakładając, że nigdy nie zostaną połączone w tym samym czasie)?

Frxstrem
źródło

Odpowiedzi:

21

Nie można przypisać wielu wyników do jednego obszaru roboczego, patrz: https://github.com/i3/i3/issues/555

Więc jedynym sposobem jest dynamiczna zmiana konfiguracji i3. Możesz przypisać do skryptu skrótu, który będzie robił 2 rzeczy: zmieniając wyjścia monitora za pomocą xrandri przenosząc obszary robocze za pomocą i3-msg:

xrandr --output DP2 --auto --right-of eDP1
i3-msg "workspace 6, move workspace to output DP2"
...
i3-msg "workspace 10, move workspace to output DP2"

Za pomocą powyższego skryptu przeniesiesz 6-10 obszarów roboczych do DP2 i ostatecznie pozostaniesz w obszarze roboczym 10.

Aktualizacja 2019: Przypisanie wielu wyjść zostało wdrożone od wersji 4.16, patrz https://i3wm.org/docs/userguide.html#workspace_screen . Teraz możesz użyć ich w ten sposób:

workspace "6: S1" output HDMI2 VGA

Zostanie użyta pierwsza dostępna moc wyjściowa.

anlar
źródło
2

Zgodnie z instrukcją obsługi składnia:

workspace 1 output eDP1
...
workspace 6 output HDMI2 VGA

powinno działać.

Lub możesz zdefiniować podstawowe dane wyjściowe na swoich komputerach, jeśli nie set ( xrandr --output <output> --primary), i użyć tej składni:

workspace 1 output primary
...
workspace 6 output secondary
caseneuve
źródło