i3wm:超過 10 個帶雙修飾鍵的工作區?
最近,我開始使用
i3wm
並愛上了它。然而,有一件事困擾著我:控制超過 10 個工作區。在我的配置
$mod+1
中$mod+9
切換工作區 1 到 9(以及$mod+0
10 個),但有時 10 個工作區還不夠。
$mod+mod1+1
目前,我使用to訪問工作區 11 到 20$mod+mod1+0
,即點擊mod+alt+number
。當然,這沒有任何問題,但是像這樣切換工作區很麻煩,因為按鍵不容易被擊中。此外,在工作區 11 到 20 之間移動應用程序需要mod+shift+alt+number
-> 醜陋。在我的
Vim
綁定(我有很多外掛)中,我開始使用雙修飾符快捷方式,例如modkey + r
外掛 1 和modkey + modkey + r
外掛 2。這樣我可以將每個鍵綁定兩次,然後按兩次 mod 鍵既簡單又快速。我可以做類似的事情
i3wm
嗎?您如何利用 10 多個工作區
i3wm
?還有其他解決方案嗎?
i3並不真正支持vim 之類的鍵序列。任何鍵綁定都由一個鍵組成,前面是一個可選的不同(所以沒有
Shift+Shift
)修飾符列表。並且在按下主鍵時需要按下所有修飾符。話雖如此,有兩種主要方法可以擁有大量工作空間,而不必將它們綁定到一長串修飾符:
- 使用外部程序動態創建和訪問工作區 ===================
您不必為每個工作區定義快捷方式,您可以通過將 a 發送
workspace NEW_WS
到i3來即時創建它們,例如使用i3-msg
程序:i3-msg workspace NEW_WS i3-msg move container to workspace NEW_WS
i3還附帶了
i3-input
命令,它打開一個小輸入欄位,然後以給定的輸入作為參數執行命令i3-input -F 'workspace %s' -P 'go to workspace: ' i3-input -F 'move container to workspace %s' -P 'move to workspace: '
將這兩個命令綁定到快捷方式,您只需按下快捷方式,然後輸入所需工作空間的名稱(或編號),即可訪問任意數量的工作空間。(如果您只使用編號的工作區,您可能想要使用
workspace number %s
而不是只是workspace %s
)
- 將工作區靜態綁定到鍵綁定模式中的簡單快捷方式 =========================
或者,對於更靜態的方法,您可以在i3配置中使用模式。您可以有不同的模式來聚焦和移動到工作區:
set $mode_workspace "goto_ws" mode $mode_workspace { bindsym 1 workspace 1; mode "default" bindsym 2 workspace 2; mode "default" # […] bindsym a workspace a; mode "default" bindsym b workspace b; mode "default" # […] bindsym Escape mode "default" } bindsym $mod+w mode $mode_workspace set $mode_move_to_workspace "moveto_ws" mode $mode_move_to_workspace { bindsym 1 move container to workspace 1; mode "default" bindsym 2 move container to workspace 2; mode "default" # […] bindsym a move container to workspace a; mode "default" bindsym b move container to workspace b; mode "default" # […] bindsym Escape mode "default" } bindsym $mod+shift+w mode $mode_move_to_workspace
或者,您可以使用單獨的綁定來在單一模式下聚焦和移動:
set $mode_ws "workspaces" mode $mode_ws { bindsym 1 workspace 1; mode "default" bindsym Shift+1 move container to workspace 1; mode "default" bindsym 2 workspace 2; mode "default" bindsym Shift+2 move container to workspace 2; mode "default" # […] bindsym a workspace a; mode "default" bindsym Shift+a move container to workspace a; mode "default" bindsym b workspace b; mode "default" bindsym Shift+b move container to workspace b; mode "default" # […] bindsym Escape mode "default" } bindsym $mod+shift+w mode $mode_move_to_workspace
在這兩個範例中,
workspace
ormove
命令都與 連結在一起mode "default"
,因此i3在每個命令之後自動返回預設鍵綁定映射。