Як ви реалізуєте макет із автоматичним запуском програм у менеджері вікон i3?


23

Це подальше попереднє запитання про те, як автозапустити програми на окремих робочих просторах за допомогою менеджера вікон i3 і що можна, а що не можна зробити всередині ~/.i3/configфайлу конфігурації.

По-перше, пропоноване рішення, засноване на документації Arch Linux, та оновлення, яке надається оп, де далі рухається логіка:

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не буде вирізати її, навіть якщо ви закриєте все на кожній з робочих областей.

Який правильний спосіб налаштування цього? Хтось має рішення, яке реалізує щось подібне? Документація досить добре , але це не дає , що я можу побачити детальний приклад , який змішує виконання і розташування на кількох робочих областях.


Крім того, розширюється на це .

Не потрібно використовувати FF або urxvt для надання рішення. Наскільки я знаю, в цих програмах немає нічого особливого, щоб хтось міг відтворити макет №2 з будь-якими програмами, збережіть файл json, зніміть його, подивіться, чи можна його запустити з конфігураційного файлу при вході, а потім просто змінити назви програм перед тим, як надсилати відповідь ...

чи можете ви завантажити частину у свій i3-файл у поєднанні із збереженим / відновленим json-макетом, будь ласка? У мене така ж проблема .., але не змушуйте її працювати. Чи використовуєте ви кілька дисплеїв у файлі config / json?

Відповіді:


11

Я вважаю, що ви шукаєте нову функцію збереження макета, яка була введена в i3 v4.8 (2014-06-15). Зв'язана документація здається досить ретельною.

Цитування з документації:

Збереження / відновлення макета дозволяє завантажити файл макета JSON, щоб ви могли мати базовий макет для початку роботи після живлення на комп’ютері. Динамічні випадки використання також приходять до уваги: ​​якщо вам часто (але не завжди!) Потрібен макет сітки терміналів з командами ping / traceroute для діагностики мережевих проблем, ви можете легко автоматизувати відкриття цих вікон у правильній компоновці.

... і примітки до випуску :

tl; dr: експортуйте 1 ваш поточний макет як файл JSON, завантажте його в нові сесії i3, отримайте вікна заповнювачів, які будуть замінені фактичними програмами після їх запуску.


1. Для використання утиліти вам можуть знадобитися пакети perl-anyevent-i3 та perl-json-xsi3-save-tree .


3
Функція компонування напрочуд складна у використанні. Їх концепція вікна заповнення заповнення, яка "заковтує" програми означає, що якщо ви хочете багато разів одне й те саме додаток, як lxterminalабо urxvtдля однієї робочої області, вам доведеться розмежувати їх, використовуючи їх, --name somethingколи виконувати їх у .i3 / config. Приклад у документі doc працює, але коли я використовую експорт з однієї зі своїх робочих областей, я не можу зробити так, щоб він працював. Ви використовуєте клас для імені та примірника для того, що ви використовували --name. У цьому випадку я можу серйозно сподіватися лише на інструмент gui, оскільки формат json має в ньому стільки дужок !!

1
Зараз я оновився до 4.8, і я дуже задоволений цією новою функцією. У мене завжди були проблеми з надійним запуском речей під час входу .i3/configз попередніх версій, але як тільки я зареєстрований належним чином, все працює добре. Що я зробив, це організувати кілька макетів та зберегти їх, а потім лише редагувати змінні класу файлів json. Потім щось подібне, i3-msg workspace 2\; append_layout mylayout.json\;а потім i3-msg exec lxterminal\; exec lxterminal\; exec lxterminal\; exec meditслід відновити свій перший бажаний макет. // Дякую за вдосконалення моєї відповіді, btw.
Дамієн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.