Linux

i3wm:超過 10 個帶雙修飾鍵的工作區?

  • February 28, 2022

最近,我開始使用i3wm並愛上了它。然而,有一件事困擾著我:控制超過 10 個工作區。

在我的配置$mod+1$mod+9切換工作區 1 到 9(以及$mod+010 個),但有時 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)修飾符列表。並且在按下主鍵時需要按下所有修飾符。

話雖如此,有兩種主要方法可以擁有大量工作空間,而不必將它們綁定到一長串修飾符:

  1. 使用外部程序動態創建和訪問工作區 ===================

您不必為每個工作區定義快捷方式,您可以通過將 a 發送workspace NEW_WSi3來即時創建它們,例如使用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

  1. 將工作區靜態綁定到鍵綁定模式中的簡單快捷方式 =========================

或者,對於更靜態的方法,您可以在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

在這兩個範例中,workspaceormove命令都與 連結在一起mode "default",因此i3在每個命令之後自動返回預設鍵綁定映射。

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