I3

如何在 i3 視窗管理器中通過應用程序的自動啟動來實現佈局?

  • March 16, 2019

這是關於如何使用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似乎忽略了在某些情況下格式不正確的命令部分,因此很難調試。由於您確實需要startx每次都退出 X 並再次驗證結果,因為mod+shift+R即使您關閉每個工作區上的所有內容,僅刷新配置也不會削減它,這使情況更加複雜。

配置它的正確方法是什麼?有沒有人有一個實現類似的解決方案?該文件非常好,但它沒有提供我可以看到在多個工作區上混合執行和佈局的詳細範例。

我相信您正在尋找i3 v4.8 (2014-06-15)中引入的 佈局保存功能。連結的文件似乎非常詳盡。

從文件中引用:

佈局保存/恢復允許您載入 JSON 佈局文件,以便您可以在打開電腦電源後開始使用基本佈局。動態案例也會浮現在腦海中:如果您經常(但不總是!)需要使用 ping/traceroute 命令的終端網格佈局來診斷網路問題,您可以輕鬆地以正確的佈局自動打開這些視窗。

…和發行說明

tl;dr:將1您目前的佈局導出為 JSON 文件,將其載入到新的 i3 會話中,獲取佔位符視窗,一旦您啟動它們,它們將被實際應用程序替換。


  1. 您可能需要perl-anyevent-i3perl-json-xs軟體包才能使用該i3-save-tree實用程序。

引用自:https://unix.stackexchange.com/questions/134980