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


15

我已在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监视器已有的规则。无论我使用哪个监视器,我都希望这两个工作区都可以工作,所以这不是一个选择。

TL; DR是否有一种方法可以根据所连接的显示器将工作区分配给两个不同的显示器(假设它们永远不会同时连接)?

Answers:


21

您不能将多个输出分配给单个工作空间,请参阅: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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.