我有两台显示器(一台 HDMI,一台 DVI)连接到我的 Linux 盒子上的 Nvidia GT710 GPU。
当我通过 ssh 登录到我的盒子时,如果我运行
xeyes
它,它将始终在同一屏幕上运行。我知道这个屏幕的名称,因为
echo $DISPLAY
返回:0
根据我读过的一些内容,我希望能够分别使用:0.0
和将 X 窗口定位到我的左侧和右侧显示器:0.1
。对于 也一样:1
。
DISPLAY=:0.0 xeyes
确实会在左侧屏幕上显示 xeyes,但是:
~$ DISPLAY=:0.1 xeyes
Error: Can't open display: :0.1
我想也许我可以通过列出来看到我的右侧显示器的名称是什么,/tmp/.X11-unix/
但是:
~$ ls /tmp/.X11-unix/
X0
那么我该如何处理这个辅助显示器并知道如何处理它呢?
附言。我不在乎是否无法在屏幕之间移动窗口,如 ArchWiki 中所述:https://wiki.archlinux.org/title/Multihead#Separate_screens。这对我来说很好,但我不清楚如何实现这一目标。
答案1
我希望能够使用 :0.0 和 :0.1 将 X 窗口定位到我的左右显示器
这仅适用于您的左右显示器实际上会使用两个X 屏幕,除非您自己配置过,否则您通常不会看到它。
开箱即用,当今大多数系统使用希涅拉玛,这意味着你得到一个X屏两个xrandr
输出从不同位置的同一帧缓冲区读取。
但只有您可以告诉我们您的系统是如何配置的(阅读/var/log/Xorg.log
以了解详情)。
错误:无法打开显示::0.1
这证实了上面的假设:您没有两个 X 屏幕。
那么我该如何处理这个辅助显示器并知道如何处理它呢?
查看 的输出xrandr
,看看是否有两个输出附加到相同的帧缓冲区(即所有都列在下面Screen 0
)。
如果是,这意味着您需要在某个位置放置一个窗口,使其出现在左侧或右侧显示器上(或同时出现在两个显示器上,一半在左侧,另一半在右侧)。
你的窗口管理器(WM),在大多数现代发行版中都集成在您的桌面环境中,可以影响窗口的位置,并且通过正确配置它,它可以帮助将其放置在您想要的位置(从而监控)。
许多(但不是全部)X 应用程序也支持该-geometry
选项(请阅读手册页),该选项再次将窗口放置在某个位置,但 WM 可以自由覆盖该选项,因此如果它不起作用,这就是原因。
如果您没有运行现代桌面系统,并且您甚至不打算使用窗口管理器(甚至几十年前每个人都这样做;X 是意思是拥有一个窗口管理器),那么您需要通过命令行单独定位每个窗口并调整其大小(这也将确定它们出现在当前 setip 中的哪个屏幕上);您将无法调整窗口大小或移动窗口等(如果您能这样做,那么你就会在某个地方拥有一些 WM,即使你没有意识到这一点)。
你也能设置 X,使其使用两个屏幕,每个输出一个。您需要一个自定义xorg.conf
文件。这是我用于带有一个 HDMI3 屏幕的英特尔硬件的文件(当我不久前连接电视时,这就是为什么有两个屏幕是有意义的):
Section "Device"
Identifier "intel0"
Driver "intel"
Option "AccelMethod" "sna"
Option "ZaphodHeads" "VGA1,HDMI1,DP1"
Screen 0
EndSection
Section "Device"
Identifier "intel1"
Driver "intel"
Option "AccelMethod" "sna"
Option "ZaphodHeads" "HDMI3"
Screen 1
EndSection
Section "Screen"
Identifier "screen0"
Device "intel0"
EndSection
Section "Screen"
Identifier "screen1"
Device "intel1"
EndSection
Section "ServerLayout"
Identifier "default"
Screen "screen0" 0 0
Screen "screen1" Below "screen0"
EndSection
您需要根据您的硬件和要求进行调整;不同的硬件可能需要不同的选项(例如,当时我这样做时,英特尔硬件需要 AccelMethod 和 ZaphodHeads)。预计要花费相当多的时间才能使这项工作顺利进行。