i3wm: запускайте програми на конкретних робочих просторах, коли запускається i3


56

Як я можу запустити програми на конкретних робочих просторах в i3, коли він запускається?

Чому це не працює в моєму конфігураційному файлі? :

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

Відповіді:


61

Згідно зі сторінкою Arch Wiki i3 , для автоматичної запуску програми на певній робочій області ви використовуєте i3-msg:

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

4
Так, така лінія, як exec --no-startup-id i3-msg 'workspace 1; exec firefox; workspace 2; exec urxvt; workspace 1'працює. Але, я вважаю , це трохи дивно , щоб використовувати execна i3-msgякий команда призначена для виконання i3 команди. Чому я не можу безпосередньо записати workspace 1; exec firefox; workspace 2; exec urxvt; workspace 1у свій конфігураційний файл?
Градієнт

3
Це просто відкриває для мене все в Workspace 1.
cmc

4
Працює для більшості програм. Однак google-chrome-stableзавжди відкривається на останньому робочому просторі в моїй установці. Наприклад, за допомогою цієї конфігурації Chrome відкривається в робочій області 4 поруч з htop.
danijar

3
Зауважте, що i3 тепер надає функції збереження / відновлення макета, які у більшості випадків не викликають необхідності викликати i3-msg.
Віланд

1
@ Збереження / відновлення макету Віленда відрізняється від автоматичного запуску ; перший займається лише встановленням ластівки для вікон програми, а другий запускає екземпляр програми, як вимагає ОП.
Антоній Томас

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

Це працює для деяких додатків, але не для інших. Я підозрюю, що це може бути пов'язано з рядком, який використовується в classаргументі. Чи є спосіб точно знати, до якого класу пов’язана програма?
Luís de Sousa

@ LuísdeSousa xprop | grep CLASSу терміналі, вказівник миші перетворюється на перехрестя, ви клацаєте на програму, для якої хочете отримати клас, і використовуєте другу змінну, яка з’являється у вашому терміналі. Приклад результату для Chrome:WM_CLASS(STRING) = "google-chrome", "Google-chrome"
kittenparry

@kittenparry. Дякую за пропозицію, але все ж за допомогою рядка з xpropкоманди вікна не призначаються потрібному робочому простору.
Luís de Sousa

1
@ LuísdeSousa деякі програми не працюють з нею, як Spotify. Для них ви можете написати щось подібне до цього, for_window [class="Spotify"] move to workspace $ws10де $ws10ваша змінна робоча область.
kittenparry

10

Це автозапуск лише під час запуску робочої області, а не автозапуск при запуску i3, але я вважав, що це може бути корисним.

Наприклад, щоб запустити мій веб-браузер у названому другому робочому просторі "web", це те, що я зробив у своїй конфігурації:

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

Коли я натискаю клавішу 2, мій веб-браузер запускається, але коли він вже відкритий, він не запускав його, він просто перемикається на веб-робочу область.

Примітка: частина компонування може колись дратувати, це не є вимогою.

Більш детально див. Мою конф


1
Це можна зробити набагато легко , призначивши робочу область . Наприклад, щоб перейти pidginдо 3-ї робочої області при кожному її запуску, у мене є конфігурація assign [class="Pidgin"] $tag3.
Привіт-Ангел

Призначення робочої області відрізняється. Рішення @ tyjak призведе до запуску програми, коли ви відкриєте певну робочу область. Призначення програми до робочої області призведе до того, що програма буде переміщена до робочої області щоразу, коли ви її відкриєте.
Майк

5

Щойно я працював із цим у кінці ~/.config/i3/configфайлу:

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

Відповідно до прикладу Arch Linux i3 для Firefox: Спочатку встановіть свою змінну, set $ws1 "Firefox"а потім вставте наступний рядокfor_window [class="Firefox"] move to workspace $ws1
Markus Weber

0

Просто використовуйте assign [class="<use your program name here e.g. - Firefox>"] $workspace<eg. 5>. Це працює для мене.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.