使用 Unity,我的两个显示器始终位于同一工作区。如果我从工作区 1 开始,然后按 ctrl+alt+right,两个都我的显示器转移到右侧的新工作区。这种行为对我的工作流程很重要。
我想切换到 i3,但看起来 2 个显示器并不总是需要指向同一个工作区。有没有办法改变这种行为,以便在 i3 中,当我按 $mod+Shift+num 时,两个屏幕都会发生变化,而不仅仅是具有焦点的屏幕发生变化?
答案1
可以(在某种程度上)模拟这个“功能”(对我来说,的工作区行为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
在其他地方使用默认的(对于 )单一显示方法。否则,如果您绝对需要/想要一直同步工作区,那么这可能i3
不是您正在寻找的窗口管理器。