i3wm: uruchamiaj aplikacje w określonych obszarach roboczych podczas uruchamiania i3


56

Jak mogę uruchomić aplikacje w określonych obszarach roboczych w i3, gdy się uruchomi?

Dlaczego to nie działa w moim pliku konfiguracyjnym? :

workspace 1; exec firefox; workspace 2; exec chromium; workspace 1

Odpowiedzi:


61

Zgodnie ze stroną Arch Wiki i3 , aby automatycznie uruchomić aplikację w określonym obszarze roboczym, używasz i3-msg:

exec --no-startup-id i3-msg 'workspace 1:Web; exec /usr/bin/firefox'

4
Tak, linia jak exec --no-startup-id i3-msg 'workspace 1; exec firefox; workspace 2; exec urxvt; workspace 1'działa. Ale uważam, że to trochę dziwne, aby używać execna i3-msgco jest przeznaczona do wykonywania poleceń i3 poleceń. Dlaczego nie mogę bezpośrednio zapisać workspace 1; exec firefox; workspace 2; exec urxvt; workspace 1w pliku konfiguracyjnym?
Gradient

3
To po prostu otwiera dla mnie wszystko w Workspace 1.
cmc

4
Działa z większością aplikacji. Jednak google-chrome-stablezawsze otwiera się na ostatnim obszarze roboczym w mojej konfiguracji. Na przykład w tej konfiguracji Chrome otwiera się w obszarze roboczym 4 obok htop.
danijar

3
Zauważ, że i3 oferuje teraz funkcje zapisywania / przywracania układu, które w większości przypadków nie wymagają wywoływania i3-msg.
Wieland

1
@Wieland zapisywanie / przywracanie układu różni się od automatycznego startu ; Była dotyczy jedynie utworzenie połknąć pułapki na okna programu, a drugi uruchamia instancję aplikacji jako wnioskowanej OP.
Antony Thomas

12
# This is what I use in ie config
# custom variables for workspaces
set $ws1 "1< txt >"
set $ws2 "2> fm "
set $ws3 "3< Web >"
set $ws4 4
set $ws5 5
set $ws6 6
set $ws7 7
set $ws8 8
set $ws9 9


##==================================================##
#                         *** Workspace specific settings ***                     #
##=================================================##
# Assign Workspaces:
assign [class="Firefox"] $ws3
assign [class="Chromium"] $ws3
assign [class="Google-chrome-beta"] $ws3
assign [class="^Geany"] $ws1

Działa to w przypadku niektórych aplikacji, ale nie w innych. Podejrzewam, że może być powiązany z ciągiem użytym w classargumencie. Czy jest jakiś sposób, aby dokładnie wiedzieć, z którą klasą jest powiązana aplikacja?
Luís de Sousa

@ LuísdeSousa xprop | grep CLASSw terminalu, wskaźnik myszy zmienia się w celownik, klikasz program, który chcesz uzyskać klasę i używasz drugiej zmiennej, która pojawia się w twoim terminalu. Przykładowy wynik dla Chrome:WM_CLASS(STRING) = "google-chrome", "Google-chrome"
kittenparry

@kittenparry. Dziękujemy za sugestię, ale nadal za pomocą ciągu z xproppolecenia okna nie są przypisane do żądanego obszaru roboczego.
Luís de Sousa

1
@ LuísdeSousa niektóre programy nie działają z nim jak Spotify. Dla nich możesz napisać coś podobnego do tego, for_window [class="Spotify"] move to workspace $ws10gdzie $ws10jest twoja zmienna obszaru roboczego.
kittenparry

10

Jest to autostart tylko podczas uruchamiania obszaru roboczego, a nie autostart po uruchomieniu i3, ale pomyślałem, że może być użyteczny.

Na przykład, aby uruchomić moją przeglądarkę internetową w nazwanym drugim obszarze roboczym „web”, to zrobiłem w mojej konfiguracji:

bindsym $mod+2 workspace 2:web; layout tabbed; exec [ $(ps h -C vimb | wc -l) = 0 ] && /usr/bin/vimb -s

Po naciśnięciu klawisza 2 uruchamia się moja przeglądarka internetowa, ale gdy jest już otwarta, nie uruchamia się ponownie, po prostu przełącza się do obszaru roboczego sieci.

Uwaga: część układu może być czasem denerwująca, nie jest to wymagane.

Aby uzyskać więcej informacji, zobacz moje conf


1
Możesz to zrobić o wiele łatwiej , przypisując przestrzeń roboczą . Na przykład, aby przejść pidgindo trzeciego obszaru roboczego przy każdym uruchomieniu, mam w konfiguracji assign [class="Pidgin"] $tag3.
Cześć Angel

Przypisywanie do obszaru roboczego jest inne. Rozwiązanie @ tyjak spowoduje uruchomienie aplikacji po otwarciu określonego obszaru roboczego. Przypisanie aplikacji do obszaru roboczego spowoduje przeniesienie tej aplikacji do obszaru roboczego za każdym razem, gdy ją otworzysz.
Mike,

5

Właśnie załatwiłem to na końcu mojego ~/.config/i3/configpliku:

for_window [class="Firefox"] move container to workspace 2
exec --no-startup-id firefox

Według Arch Linux i3 Przykład dla Firefoksa: Najpierw ustaw zmienną, set $ws1 "Firefox"a następnie wstaw następujący wierszfor_window [class="Firefox"] move to workspace $ws1
Markus Weber

0

Po prostu użyj assign [class="<use your program name here e.g. - Firefox>"] $workspace<eg. 5>. To działa dla mnie.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.