i3wm: khởi động ứng dụng trên các không gian làm việc cụ thể khi i3 khởi động


56

Làm cách nào để khởi động ứng dụng trên các không gian làm việc cụ thể trong i3 khi nó khởi động?

Tại sao điều này không làm việc trong tập tin cấu hình của tôi? :

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

Câu trả lời:


61

Theo trang Arch Wiki i3 , để tự động khởi động một ứng dụng trên một không gian làm việc cụ thể, bạn sử dụng i3-msg:

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

4
Vâng, một dòng như exec --no-startup-id i3-msg 'workspace 1; exec firefox; workspace 2; exec urxvt; workspace 1'hoạt động. Nhưng, tôi thấy nó hơi kỳ quặc để sử dụng exectrên i3-msgđó là một lệnh có nghĩa là để thực hiện các lệnh i3. Tại sao tôi không thể trực tiếp viết workspace 1; exec firefox; workspace 2; exec urxvt; workspace 1vào tập tin cấu hình của mình?
Gradient

3
Điều này chỉ mở mọi thứ trong Workspace 1 cho tôi.
cmc

4
Hoạt động cho hầu hết các ứng dụng. Tuy nhiên google-chrome-stableluôn luôn mở trên không gian làm việc cuối cùng trong thiết lập của tôi. Ví dụ: với cấu hình này , Chrome sẽ mở trên không gian làm việc 4 bên cạnh htop.
danijar

3
Lưu ý rằng i3 hiện cung cấp các tính năng lưu / khôi phục bố cục khiến cho việc gọi i3-Spy trong hầu hết các trường hợp là không cần thiết.
Wieland

1
Lưu / khôi phục bố cục @Wieland khác với tự động bắt đầu ; cái trước chỉ liên quan đến việc thiết lập bẫy nuốt cho các cửa sổ chương trình trong khi cái sau bắt đầu một thể hiện của một ứng dụng như OP yêu cầu.
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

Điều này làm việc cho một số ứng dụng, nhưng không phải cho những người khác. Tôi nghi ngờ nó có thể liên quan đến chuỗi được sử dụng trong classđối số. Có cách nào để biết chính xác lớp nào là một ứng dụng liên quan không?
Luís de Sousa

@ LuísdeSousa bạn xprop | grep CLASStrong thiết bị đầu cuối, con trỏ chuột của bạn thay đổi thành dấu thập, bạn nhấp vào chương trình bạn muốn nhận lớp và sử dụng biến thứ hai xuất hiện trong thiết bị đầu cuối của bạn. Kết quả ví dụ cho Chrome:WM_CLASS(STRING) = "google-chrome", "Google-chrome"
kittenparry

@kittenparry. Cảm ơn bạn đã gợi ý, nhưng vẫn sử dụng chuỗi từ xproplệnh các cửa sổ không được gán cho không gian làm việc mong muốn.
Luís de Sousa

1
@ LuísdeSousa một số chương trình không hoạt động với nó như Spotify. Đối với họ bạn có thể viết một cái gì đó tương tự như sau for_window [class="Spotify"] move to workspace $ws10nơi $ws10có thể thay đổi không gian làm việc của bạn.
mèo con

10

Đó chỉ là tự khởi động trên không gian làm việc, không phải tự khởi động khi i3 khởi động nhưng tôi nghĩ nó có thể hữu ích.

Ví dụ: để khởi chạy trình duyệt web của tôi trong "web" không gian làm việc thứ hai được đặt tên, đây là những gì tôi đã làm trong cấu hình của mình:

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

Khi tôi nhấn phím 2, trình duyệt web của tôi khởi động nhưng khi nó đã mở, nó không khởi chạy lại, nó chỉ chuyển sang không gian làm việc trên web.

Lưu ý: đôi khi phần bố trí có thể gây khó chịu, đó không phải là một yêu cầu.

Để biết thêm chi tiết, xem conf của tôi


1
Bạn có thể làm điều đó dễ dàng bằng cách gán không gian làm việc . Ví dụ, để di chuyển pidginđến không gian làm việc thứ 3 trong mỗi lần khởi chạy, tôi có trong cấu hình assign [class="Pidgin"] $tag3.
Hi-Angel

Chỉ định cho một không gian làm việc là khác nhau. Giải pháp của @ tyjak sẽ khiến ứng dụng khởi chạy khi bạn mở một không gian làm việc cụ thể. Việc gán ứng dụng cho không gian làm việc sẽ khiến ứng dụng đó được chuyển sang không gian làm việc bất cứ khi nào bạn mở nó.
Mike

5

Tôi chỉ làm cho nó hoạt động với điều này ở cuối ~/.config/i3/configtập tin của tôi :

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

Theo ví dụ Arch Linux i3 cho Firefox: Đầu tiên hãy đặt biến của bạn set $ws1 "Firefox"và sau đó chèn dòng saufor_window [class="Firefox"] move to workspace $ws1
Markus Weber

0

Chỉ cần sử dụng assign [class="<use your program name here e.g. - Firefox>"] $workspace<eg. 5>. Đó là làm việc cho tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.