Jest to kontynuacja wcześniejszego pytania na temat automatycznego uruchamiania aplikacji w poszczególnych obszarach roboczych za pomocą menedżera okien i3 oraz tego, co można i czego nie można zrobić w ~/.i3/config
pliku konfiguracyjnym.
Po pierwsze, dostarczone rozwiązanie oparte na dokumentacji Arch Linux i aktualizacji dostarczonej przez op, gdzie popycha logikę dalej:
exec --no-startup-id i3-msg 'workspace 1:Web; exec /usr/bin/firefox'
exec --no-startup-id i3-msg 'workspace 1; exec firefox; workspace 2; exec urxvt; workspace 1'
Interesująca jest także wymiana informacji na temat wykorzystania niektórych z nich bezpośrednio w wierszu polecenia bez powielania:
i3-msg workspace 3; i3-msg exec firefox
i3-msg workspace 9; i3-msg exec chromium
Ale nigdy nie widziałem konfiguracji, która automatycznie uruchamia wiele okien / aplikacji w każdym obszarze roboczym zgodnie z pożądanym układem pionowym lub poziomym. Moim celem jest automatyczne uruchomienie tej prostej konfiguracji, której używam:
_____ _____ ___________ ___________
| lx | lx | | |u_| | | | proportions:
|_____|_____| | FF |lx| |spacefm | 1- 25% each
|medit| lx | | |__| | | vlc | 2- 75/25 x 25/50/25
|_____|_____| |________|u_| |_____|_____| 3- 50/50
1 2 3
Więc zaczyna się od czegoś takiego w config
pliku:
exec --no-startup-id i3-msg 'workspace 1; exec i3-sensible-terminal; layout toggle split; layout splitv; split vertical; exec i3-sensible-terminal; exec i3-sensible-terminal; exec i3-sensible-terminal; workspace 2; exec firefox; exec urxvt; exec i3-sensible-terminal; exec urxvt; workspace 3; exec spacefm; exec vlc'
Ale w jaki sposób na świecie osiągasz pożądany układ i podział w poziomie / w pionie? Próbuję, ale nie jest jasne, jak „miksujesz” wykonanie i układ. Składnia wydaje się dziwaczna, ponieważ uruchamia się i3-img
w konfiguracji i3. Czy używasz split h
(lub v) - layout split v
- exec layout split v
- focus down
(lub w prawo) pomiędzy każdym exec
połączeniem?
W przypadku pojedynczego obszaru roboczego konfiguracja uruchamia wszystkie aplikacje w pionie lub w poziomie i nie mogę wpływać na układ - lub ostatnie split
polecenie w łańcuchu decyduje, czy okna są dodawane pionowo czy poziomo. i3-msg
pozornie ignoruje części polecenia, które nie są odpowiednio sformatowane w niektórych przypadkach, więc trudno jest debugować. Sytuację dodatkowo pogarsza fakt, że naprawdę musisz wyjść z X i startx
ponownie za każdym razem, aby zweryfikować wyniki, ponieważ samo odświeżenie konfiguracji mod+shift+R
nie spowoduje jej odcięcia, nawet jeśli zamkniesz wszystko w każdym obszarze roboczym.
Jaki jest właściwy sposób skonfigurowania tego? Czy ktoś ma rozwiązanie, które implementuje coś takiego? Dokumentacja jest całkiem dobry, ale to nie świadczy, że mogę zobaczyć szczegółowy przykład, który miesza wykonanie i rozmieszczenie na wielu obszarach roboczych.
Odpowiedzi:
Uważam, że szukasz nowej funkcji oszczędzania układu, która została wprowadzona w i3 v4.8 (2014-06-15). Powiązana dokumentacja wydaje się dość dokładna.
Cytowanie z dokumentacji:
... i informacje o wersji :
1. Możesz potrzebować pakietów perl-anyevent-i3 i perl-json-xs do korzystania z tego
i3-save-tree
narzędzia.źródło
lxterminal
luburxvt
dla pojedynczego obszaru roboczego, musisz je rozróżnić, używając ich--name something
podczas uruchamiania w .i3 / config. Przykład w dokumencie działa, ale kiedy korzystam z eksportu z jednego z moich obszarów roboczych, nie mogę sprawić, by działał. Używasz klasy dla nazwy i instancji dla tego, czego używałeś z --name. W tym przypadku mogę mieć tylko nadzieję na narzędzie GUI, ponieważ format Json zawiera tak wiele nawiasów !!.i3/config
wcześniejszych wersji, ale po prawidłowym zalogowaniu wszystko działa dobrze. To, co zrobiłem, to zaaranżować kilka układów i zapisać je, a następnie edytować tylko zmienne klasowe plików json. Następnie coś takiego,i3-msg workspace 2\; append_layout mylayout.json\;
a następniei3-msg exec lxterminal\; exec lxterminal\; exec lxterminal\; exec medit
powinno przywrócić pierwszy pożądany układ. // Dziękuję za poprawę mojej odpowiedzi, btw.