Window-Manager

i3wm:如何使多個監視器在單個綁定中切換工作區

  • December 18, 2020

使用 Unity,我的兩個顯示器始終位於同一個工作區。如果我從工作區 1 開始,然後按 ctrl+alt+right,我的兩個顯示器都會移動到右側的新工作區。這種行為對我的工作流程很重要。

我想切換到 i3,但看起來 2 台顯示器並不總是需要指向同一個工作區。有沒有辦法改變這種行為,以便在 i3 中,當我按下 $mod+Shift+num 時,兩個螢幕都會改變,而不僅僅是具有焦點的螢幕?

(在某種程度上)可以模擬這個“功能”(對我來說,工作區行為i3是主要功能之一,所以我真的不建議這樣做,除非你真的無法在沒有跨越所有顯示器的工作區的情況下工作,同時仍然想要使用i3)。

您可以將多個命令綁定到快捷方式,這樣您就可以一次在兩個顯示器上切換工作區。例如:

# Default modifier key
set $mod Mod4

# variables for left and right monitor 
# (assuming names DP-1 and DP-3 with DP-1 being left of DP-3)
set $monL DP-1
set $monR DP-3

# variables for workpacenames; 
set $ws1L 1:A
set $ws1R 11:A
set $ws2L 2:B
set $ws2R 12:B
set $ws3L 3:C
set $ws3R 13:C

# assign workspaces to specific outputs
workspace $ws1L output $monL
workspace $ws1R output $monR
workspace $ws2L output $monL
workspace $ws2R output $monR
workspace $ws3L output $monL
workspace $ws3R output $monR

# do not toggle automatically between the current and previous 
# workspace on repeated calls to `workspace NAME` (with identical NAME)
workspace_auto_back_and_forth no

# Toggle between both monitors 
# (focus output left wraps from the leftmost to the rightmost output)
bindsym $mod+Tab focus output left

# switch two workspaces at once (the need to be on different outputs)
bindsym $mod+1 workspace $ws1L, workspace $ws1R
bindsym $mod+2 workspace $ws2L, workspace $ws2R
bindsym $mod+3 workspace $ws3L, workspace $ws3R

# move a window to a specific workpace; 
# $mod+Shift for left side, $mod+Control for right side
bindsym $mod+Shift+1 move workspace $ws1L
bindsym $mod+Control+1 move workspace $ws1R
bindsym $mod+Shift+2 move workspace $ws2L
bindsym $mod+Control+2 move workspace $ws2R
bindsym $mod+Shift+3 move workspace $ws3L
bindsym $mod+Control+3 move workspace $ws3R

bar {
   # [...]
   # Do not show workspace numbers (optional)
   strip_workspace_numbers yes
}

這使用變數來保持工作區和輸出名稱一致。左右監視器的工作區名稱需要不同。在這種情況下,我選擇使用不同的數字,因為如果需要,它們可以被隱藏。通過這些設置Super+1將切換到1:A左顯示器和11:A右顯示器上的工作區。workspace_auto_back_and_forth應該禁用以避免可能的混淆和不良行為。

注意事項:

  • 這僅適用於鍵盤快捷鍵,如果您點擊 i3bar 上的工作區按鈕,則只有一台顯示器上的工作區會改變,而不會改變它的伴侶。
  • 任何將視窗聚焦在目前不可見工作區 ( [criteria] focus) 上的命令都只會聚焦該工作區,而不會將其聚焦在另一個輸出上
  • 使用一個綁定切換兩個工作區時,第二個工作區將始終是焦點所在的工作區(在上面的範例中為右側)。
  • 在某些情況下,跨顯示邊界聚焦和移動可能需要不同的命令/鍵綁定。(雖然這也是非同步工作區的情況,但在期待一個大工作區時可能會更明顯/干擾)

使用 IPC 界面可能會解決一些(如果不是全部)警告,例如也可以自動切換到配套工作區。


就個人而言,我建議至少採用一種混合方法:在您的工作流程絕對需要它們的地方使用同步工作區,但i3在其他任何地方使用預設的 (for ) 單一顯示方法。否則,如果您絕對需要/想要一直同步的工作空間,那可能i3不是您正在尋找的視窗管理器。

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