Это продолжение предыдущего вопроса о том, как автоматически запускать приложения в отдельных рабочих пространствах с помощью оконного менеджера i3 и что можно и что нельзя делать в ~/.i3/config
файле конфигурации.
Во-первых, предоставленное решение, основанное на документации Arch Linux и обновлении, предоставленном op, где он продвигает логику дальше:
exec --no-startup-id i3-msg 'workspace 1:Web; exec /usr/bin/firefox'
exec --no-startup-id i3-msg 'workspace 1; exec firefox; workspace 2; exec urxvt; workspace 1'
Также интересен этот обмен информацией об использовании некоторых из них непосредственно в командной строке без дублирования:
i3-msg workspace 3; i3-msg exec firefox
i3-msg workspace 9; i3-msg exec chromium
Но я никогда не видел конфигурацию, которая автоматически запускает множество окон / приложений в каждой рабочей области в соответствии с желаемой вертикальной или горизонтальной компоновкой. Моя цель - автоматически запустить эту простую конфигурацию, которую я использую:
_____ _____ ___________ ___________
| lx | lx | | |u_| | | | proportions:
|_____|_____| | FF |lx| |spacefm | 1- 25% each
|medit| lx | | |__| | | vlc | 2- 75/25 x 25/50/25
|_____|_____| |________|u_| |_____|_____| 3- 50/50
1 2 3
Итак, все начинается примерно так в config
файле:
exec --no-startup-id i3-msg 'workspace 1; exec i3-sensible-terminal; layout toggle split; layout splitv; split vertical; exec i3-sensible-terminal; exec i3-sensible-terminal; exec i3-sensible-terminal; workspace 2; exec firefox; exec urxvt; exec i3-sensible-terminal; exec urxvt; workspace 3; exec spacefm; exec vlc'
Но как в мире вы достигаете того типа макета и вертикального / горизонтального разбиения, который хотите? Я пытаюсь, но не понятно, как вы "смешиваете" исполнение и верстку. Синтаксис кажется уникальным для запуска, потому что вы выполняете i3-img
в конфигурации i3. Используете ли вы split h
(или V) - layout split v
- exec layout split v
- focus down
(или право) между каждым exec
вызовом?
Для одного рабочего пространства конфигурация запускает все приложения либо по вертикали, либо по горизонтали, и я не могу повлиять на макет - или последняя split
команда в цепочке решает, будут ли окна добавлены вертикально или горизонтально. i3-msg
по-видимому, игнорирует части команды, которые в некоторых случаях не отформатированы должным образом, поэтому их сложно отлаживать. Это еще более усугубляется тем фактом, что вам действительно нужно выходить из X и startx
снова каждый раз, чтобы проверить результаты, так как простое обновление конфигурации mod+shift+R
не обрезает ее, даже если вы закроете все в каждой из рабочих областей.
Как правильно настроить это? У кого-нибудь есть решение, которое реализует что-то подобное? Документация довольно хорошо , но это не дает , что я могу увидеть подробный пример , который смешивает исполнение и расположение на нескольких рабочих областях.
Ответы:
Я считаю, что вы ищете новую функцию сохранения макета, которая была представлена в i3 v4.8 (2014-06-15). Связанная документация кажется довольно тщательной.
Цитирование из документации:
... и примечания к выпуску :
1. Вам может потребоваться, чтобы пакеты perl-anyevent-i3 и perl-json-xs использовали
i3-save-tree
утилиты .источник
lxterminal
илиurxvt
для одного рабочего пространства, вам придется различать их, используя--name something
при выполнении их в .i3 / config. Пример в документе работает, но когда я использую экспорт из одного из моего рабочего пространства, я не могу заставить его работать. Вы используете класс для имени и экземпляр для того, что вы использовали с --name. В этом случае я могу только серьезно надеяться на инструмент для графического интерфейса, так как формат json содержит так много скобок !!.i3/config
с более ранних версий, но как только я вошел в систему, все работает нормально. Я сделал несколько компоновок и сохранил их, а затем отредактировал только переменные класса файлов json. Затем что-то вроде,i3-msg workspace 2\; append_layout mylayout.json\;
а затемi3-msg exec lxterminal\; exec lxterminal\; exec lxterminal\; exec medit
следует восстановить ваш первый желаемый макет. // Спасибо за улучшение моего ответа, кстати.