将 i3 上的工作区分配给多个显示器

将 i3 上的工作区分配给多个显示器

我已经在我的 Linux 笔记本电脑上使用 i3。我通常只使用笔记本电脑的内部显示器(显示器eDP1),但当我工作时,我倾向于将辅助显示器连接到计算机的 HDMI 端口(显示器HDMI2)。到目前为止,我已经通过将这些命令添加到我的 i3 配置文件中来使这项工作正常进行:

# use workspaces on different monitors
workspace "1: P1" output eDP1
workspace "2: P2" output eDP1
workspace "3: P3" output eDP1
workspace "4: P4" output eDP1
workspace "5: P5" output eDP1
workspace "6: S1" output HDMI2 
workspace "7: S2" output HDMI2
workspace "8: S3" output HDMI2
workspace "9: S4" output HDMI2
workspace "10: S5" output HDMI2

# add HDMI monitor when connected
exec --no-startup-id xrandr --output HDMI2 --right-of eDP1
bindsym $mod+m exec --no-startup-id xrandr --output HDMI2 --auto --right-of eDP1

换句话说,当我连接 HDMI 显示器时,我只需按Mod+M即可让 i3 检测到它,将其放置在主显示器的右侧,并将 5 个命名工作区 (6-10) 委托给它。

问题是这样的:在家里,我有另一台可以连接 VGA(显示器DP2)的显示器。我xrandr也可以运行上面的命令将此显示器放置在主显示器的右侧,但默认情况下我无法将工作区分配给此显示器,除非我代替我已经为我的 HDMI 显示器制定了规则。我希望无论我使用哪个显示器,这两个工作区都能以相同的方式工作,因此这不是一个选项。

长话短说有没有办法将工作区分配给两个不同的显示器,具体取决于连接的显示器(假设它们永远不会同时连接)?

答案1

您无法将多个输出分配给单个工作区,请参阅:https://github.com/i3/i3/issues/555

所以唯一的方法是动态更改 i3 配置。您可以分配给热键脚本,该脚本将执行两件事:xrandr使用以下命令更改监视器输出和移动工作区i3-msg

xrandr --output DP2 --auto --right-of eDP1
i3-msg "workspace 6, move workspace to output DP2"
...
i3-msg "workspace 10, move workspace to output DP2"

使用上面的脚本,您将把 6-10 个工作区移动到 DP2,并最终停留在工作区 10 上。

2019 年更新: 从 v4.16 开始实现多输出分配,请参见https://i3wm.org/docs/userguide.html#workspace_screen。现在你可以像这样使用它们:

workspace "6: S1" output HDMI2 VGA

然后将使用第一个可用的输出。

答案2

根据用户手册, 句法:

workspace 1 output eDP1
...
workspace 6 output HDMI2 VGA

应该管用。

或者,您可以在计算机上定义主要输出(如果未设置 ( xrandr --output <output> --primary)),并使用以下语法:

workspace 1 output primary
...
workspace 6 output secondary

相关内容