我搜索过但没有完全帮助我的主题/网站
- 将物理 X 显示器拆分为两个虚拟显示器?
- https://chipsenkbeil.com/notes/linux-virtual-monitors-with-xrandr/
- https://askubuntu.com/questions/150066/split-monitor-in-two/998435#998435
语境
我的屏幕分辨率为 5120x1440px。我想将此显示器分成两个虚拟屏幕,以便我可以像使用双显示器设置一样使用此显示器。我还想快速切换回仅使用一个屏幕,因此我想在 bash 脚本中完成所有这些操作,但这目前并不重要。
的输出xrandr
如下
Screen 0: minimum 8 x 8, current 5120 x 1440, maximum 32767 x 32767
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
DP-4 connected primary 5120x1440+0+0 (normal left inverted right x axis y axis) 1mm x 1mm
3840x1080 119.97 + 99.96 59.97
5120x1440 119.97* 100.00 59.98
2560x1440 59.95
2560x1080 119.88 100.00 60.00 59.94
1920x1080 119.88 100.00 60.00 59.94
1680x1050 59.95
1600x900 60.00
1440x900 59.89
1280x1024 75.02 60.02
1280x800 59.81
1280x720 60.00
1152x864 75.00
1024x768 75.03 70.07 60.00
800x600 75.00 72.19 60.32 56.25
640x480 75.00 72.81 59.94
DP-5 disconnected (normal left inverted right x axis y axis)
USB-C-0 disconnected (normal left inverted right x axis y axis)
执行
按照我发现的教程和帖子,这就是我需要做的
xrandr --setmonitor VIRTUAL-LEFT 2560/0x1440/1+0+0 DP-4
xrandr --setmonitor VIRTUAL-RIGHT 2560/1x1440/1+2560+0 none
解释一下数字
- 虚拟左
2560
因为那是一半5120
0
因为在示例中,轴(在我的例子中为 1mm)除以 2,左侧显示得到向下舍入的数字1440
因为那是我的屏幕高度1
因为在示例中,另一个轴(在我的例子中也是 1mm)按原样使用0+0
因为这与 xrandr 输出相同DP-4
因为那是连接的主设备
- 虚拟右
2560
因为见上文1
因为见上文,尽管这需要四舍五入的数字1440
因为见上文1
因为见上文2560+0
因为这将是从左侧的偏移量并在示例中使用none
因为每个例子都是这样做的
由于我没有得到改变,所以我按照示例中的建议进行操作
xrandr --fb 5120x1441
xrandr --fb 5120x1440
预期结果
我现在期望有两个虚拟屏幕和一个随时可用的桌面。
实际结果
屏幕被切成两半,左边的屏幕是我当前的桌面,但右边的屏幕是全黑的,但是,我可以将鼠标移过去,但我无法配置它,我在显示器中看不到它,我做不到任何与它有关的东西
这里的解决方案是什么?
答案1
考虑到评论,我建议使用 DWM(动态/平铺窗口管理器)假全屏补丁。该补丁允许应用程序“全屏”进入当前分配给它们的空间,窗口或半屏或其他任何东西。它非常适合您的场景,半屏用于游戏(假装全屏),其余用于其他应用程序。虽然使用 WM 而不是 DE(桌面环境,如 xfce、gnome 等)是更高级的设置。
请记住,在 Linux 中,您可以使用不同的管理器/环境同时启动两个 X 服务器。一个可以是 xfce(您当前的设置),另一个可以是 DWM。您可以使用++ctrl在它们之间进行切换。altF1 - F12
关于显示器的 PBP 功能,您可以使用同一台 PC 的两个输出:我想您的图形控制器上有多个输出,例如 DisplayPort 和 HDMI 或 VGA。因此,您可以同时连接 DisplayPort 和 HDMI,就像您的 PC 连接到两个屏幕一样。因此,如果您的电脑有两个输出(很可能),您只需要一根单独的电缆,当然是正确类型的电缆。
答案2
不幸的是,由于一些未解决的问题,这不适用于 Linux 上的大多数窗口管理器。
第一个是 xserver 不允许在一个监视器上设置多个输出,并且没有监视器的输出会被多个应用程序忽略。此处提供了一个补丁:
https://gitlab.freedesktop.org/xorg/xserver/-/issues/1213
第二个是 gtk 使用监视器名称而不是输出名称来区分监视器(如果 2 个输出位于同一监视器上,则不起作用)。我做了一个小补丁,只是在显示器上添加了一个数字来“解决”问题。但需要进一步的工作才能使其在所有情况下都能充分发挥作用:
https://gitlab.gnome.org/GNOME/gtk/-/issues/2013#note_1280968
对于我来说,在我的(超宽)桌面上使用 Linux 真的很令人沮丧,也是一个阻碍。这些解决方法是有效的,但在上游实现之前,需要手动修补。
编辑:
我重新设计了解决方案并将所有内容记录在https://gitlab.gnome.org/GNOME/gtk/-/issues/2013#note_1564528。我会尝试将其合并到上游。