i3wm: i3 başladığında belirli çalışma alanlarındaki uygulamaları başlat


56

İ3'te belirli çalışma alanlarında uygulamaları başlattığında nasıl başlatabilirim?

Bu neden config dosyasımda çalışmıyor? :

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

Yanıtlar:


60

Göre Arch Wiki i3 sayfasında , belirli bir çalışma alanında bir uygulama otomatik başlatma, kullanmak i3-msg:

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

4
Evet, bir çizgi gibi exec --no-startup-id i3-msg 'workspace 1; exec firefox; workspace 2; exec urxvt; workspace 1'çalışır. Ama bu biraz garip kullanmak bulmak execüzerinde i3-msghangi i3 komutları yürütmek amaçlı bir komuttur. Neden doğrudan workspace 1; exec firefox; workspace 2; exec urxvt; workspace 1config dosyama yazamıyorum ?
Gradient

3
Bu sadece benim için Workspace 1'deki her şeyi açar.
cmc

4
Çoğu uygulama için çalışır. Ancak google-chrome-stableher zaman kurulumumdaki son çalışma alanında açılır. Örneğin, bu yapılandırmada Chrome, htop öğesinin yanındaki çalışma alanında 4 açılır.
danijar

3
İ3'ün şimdi çoğu durumda i3-msg'nin çağrılmasını gereksiz kılan düzen kaydetme / geri yükleme özellikleri sağladığını unutmayın.
Wieland

1
@Wieland düzen tasarrufu / geri yükleme otomatik başlatmasından farklıdır ; birincisi, yalnızca program pencereleri için yutkunma tuzakları kurmakla ilgilenirken , ikincisi, OP'nin istediği gibi bir uygulama örneği başlatır.
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

Bu, bazı uygulamalar için çalışır, ancak diğerleri için değil. classTartışmada kullanılan dize ile ilgili olabileceğinden şüpheleniyorum . Bir uygulamanın tam olarak hangi sınıfa bağlı olduğunu bilmenin bir yolu var mı?
Luís de Sousa

@ LuísdeSousa size xprop | grep CLASSterminalde, fare imleciniz artı göstergeye dönüşür, sınıfa almak istediğiniz programa tıklar ve terminalinizde çıkan ikinci değişkeni kullanırsınız. Chrome için örnek sonuç:WM_CLASS(STRING) = "google-chrome", "Google-chrome"
kittenparry,

@kittenparry. Öneri için teşekkür ederim, ancak yine de xpropkomuttan dize kullanarak pencereler istenen çalışma alanına atanmamış.
Luís de Sousa

1
@ LuísdeSousa bazı programlar Spotify gibi onunla çalışmıyor. Onlar için , çalışma alanı değişkeninizin for_window [class="Spotify"] move to workspace $ws10olduğu yere benzer bir şeyler yazabilirsiniz $ws10.
kittenparry

10

Yalnızca çalışma alanında başlatılan bir otomatik başlatma, i3 başladığında bir otomatik başlatma değil, faydalı olacağını düşündüm.

Örneğin, web tarayıcımı adlandırılmış ikinci çalışma alanında "web" olarak başlatmak için, konfigürasyonumda yaptığım buydu:

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

2. tuşa bastığımda web tarayıcım başlıyor, ancak zaten açıldığında yeniden başlatmadı, sadece web çalışma alanına geçti.

Not: düzen kısmı bazen rahatsız edici olabilir, bu bir gereklilik değildir.

Daha fazla ayrıntı için benim conf bakın


1
Çalışma alanı atayarak kolayca yapabilirsiniz . Örneğin pidgin, her açılışında 3. çalışma alanına geçmek için config dosyasında bulundum assign [class="Pidgin"] $tag3.
Hi-Angel,

Bir çalışma alanına atama farklıdır. @ tyjak'ın çözümü, belirli bir çalışma alanını açtığınızda uygulamanın başlatılmasına neden olur. Bir uygulamayı bir çalışma alanına atamak, o uygulamayı her açtığınızda bir çalışma alanına taşınmasına neden olur.
Mike

5

Dosyamın sonunda bununla çalışmamı ~/.config/i3/configsağladım:

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

Arch Linux i3'e göre Firefox Örneği: İlk önce değişkeninizi ayarlayın set $ws1 "Firefox"ve ardından şu satırı ekleyinfor_window [class="Firefox"] move to workspace $ws1
Markus Weber

0

Sadece kullan assign [class="<use your program name here e.g. - Firefox>"] $workspace<eg. 5>. Benim için çalışıyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.