i3wm: memulai aplikasi di ruang kerja tertentu ketika i3 dimulai

56

Bagaimana saya bisa memulai aplikasi pada ruang kerja tertentu di i3 ketika itu dimulai?

Mengapa ini tidak berfungsi di file konfigurasi saya? :

workspace 1; exec firefox; workspace 2; exec chromium; workspace 1
Gradien
sumber

Jawaban:

61

Menurut halaman Arch Wiki i3 , untuk melakukan autostart aplikasi pada ruang kerja tertentu, Anda menggunakan i3-msg:

exec --no-startup-id i3-msg 'workspace 1:Web; exec /usr/bin/firefox'
jasonwryan
sumber
4
Ya, garis seperti exec --no-startup-id i3-msg 'workspace 1; exec firefox; workspace 2; exec urxvt; workspace 1'bekerja. Tapi, saya merasa sedikit aneh untuk menggunakan execpada i3-msgyang merupakan perintah dimaksudkan untuk mengeksekusi i3 perintah. Mengapa saya tidak bisa langsung menulis workspace 1; exec firefox; workspace 2; exec urxvt; workspace 1di file konfigurasi saya?
Gradient
3
Ini hanya membuka semua yang ada di Workspace 1 untuk saya.
cmc
4
Berfungsi untuk sebagian besar aplikasi. Namun google-chrome-stableselalu terbuka di ruang kerja terakhir di pengaturan saya. Misalnya, dengan konfigurasi ini , Chrome terbuka di ruang kerja 4 di sebelah htop.
danijar
3
Perhatikan bahwa i3 sekarang menyediakan fitur penyimpanan / pemulihan tata letak yang membuatnya tidak perlu untuk memanggil i3-msg dalam banyak kasus.
Wieland
1
@Wieland layout saving / restore berbeda dari start otomatis ; yang pertama hanya menangani pengaturan perangkap walet untuk jendela program sementara yang kedua memulai instance aplikasi seperti yang diminta 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
tertembak di kepala
sumber
Ini berfungsi untuk beberapa aplikasi, tetapi tidak untuk yang lain. Saya menduga itu bisa dikaitkan dengan string yang digunakan dalam classargumen. Apakah ada cara untuk mengetahui dengan pasti kelas yang terkait dengan aplikasi?
Luís de Sousa
@ LuísdeSousa Anda xprop | grep CLASSdi terminal, penunjuk tetikus Anda berubah menjadi crosshair, Anda mengklik program yang ingin Anda dapatkan kelasnya dan menggunakan variabel kedua yang muncul di terminal Anda. Contoh hasil untuk Chrome:WM_CLASS(STRING) = "google-chrome", "Google-chrome"
kittenparry
@kittenparry. Terima kasih atas sarannya, tetapi masih menggunakan string dari xpropperintah windows tidak ditugaskan ke ruang kerja yang diinginkan.
Luís de Sousa
1
@ LuísdeSousa beberapa program tidak berfungsi seperti Spotify. Bagi mereka, Anda dapat menulis sesuatu yang mirip dengan ini di for_window [class="Spotify"] move to workspace $ws10mana $ws10variabel ruang kerja Anda.
kittenparry
10

Ini hanya autostart pada peluncuran workspace saja, bukan autostart ketika i3 dimulai tetapi saya pikir itu bisa berguna.

Misalnya, untuk meluncurkan browser web saya di ruang kerja "web" kedua yang dinamai ini adalah apa yang saya lakukan di konfigurasi saya:

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

Ketika saya menekan tombol 2, browser web saya mulai tetapi ketika sudah dibuka itu tidak meluncurkan lagi, itu hanya beralih ke ruang kerja web.

Catatan: bagian tata letak kadang-kadang bisa mengganggu, itu bukan keharusan.

Untuk lebih jelasnya lihat conf saya

tyjak
sumber
1
Anda dapat melakukannya dengan mudah dengan menetapkan ruang kerja . Sebagai contoh untuk pindah pidginke ruang kerja 3-rd pada setiap peluncurannya, saya miliki di konfigurasi assign [class="Pidgin"] $tag3.
Hi-Angel
Menugaskan ke ruang kerja berbeda. Solusi @ tyjak akan menyebabkan aplikasi diluncurkan saat Anda membuka ruang kerja tertentu. Menetapkan aplikasi ke ruang kerja akan menyebabkan aplikasi tersebut dipindahkan ke ruang kerja setiap kali Anda membukanya.
Mike
5

Saya baru saja membuatnya bekerja dengan ini di akhir ~/.config/i3/configfile saya :

for_window [class="Firefox"] move container to workspace 2
exec --no-startup-id firefox
robru
sumber
Menurut Arch Linux i3 Contoh untuk Firefox: Pertama atur variabel Anda set $ws1 "Firefox"dan kemudian masukkan baris berikutfor_window [class="Firefox"] move to workspace $ws1
Markus Weber
0

Gunakan saja assign [class="<use your program name here e.g. - Firefox>"] $workspace<eg. 5>. Ini bekerja untuk saya.

Tanmoy Nandi
sumber