如何將 X 視窗定位到輔助監視器?(並且知道為了做到這一點它被稱為什麼)
- 我有兩台顯示器(一台 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
那麼我該如何處理這個輔助顯示器並知道如何處理它呢?
PS。我不在乎是否不能在螢幕之間移動視窗,如 ArchWiki 中所述:https ://wiki.archlinux.org/title/Multihead#Separate_screens 。這對我來說很好,但我不清楚如何實現這一目標。
我希望能夠使用 :0.0 和 :0.1 將 X 視窗定位到我的左右顯示器
這僅適用於您的左右顯示器實際上會使用兩個X 螢幕,除非您自己配置,否則您通常不會看到它。
開箱即用,今天的大多數係統都使用Xinerama,這意味著您可以獲得一個X 螢幕,其中兩個
xrandr
輸出從不同位置的相同幀緩衝區讀取。但只有您可以告訴我們您的系統是如何配置的(閱讀
/var/log/Xorg.log
以了解)。錯誤:無法打開顯示::0.1
這證實了上面的假設:您沒有兩個 X 螢幕。
那麼我該如何處理這個輔助顯示器並知道如何處理它呢?
查看 的輸出
xrandr
,看看是否有兩個輸出連接到同一個幀緩衝區(即,所有輸出都列在 下Screen 0
)。如果是,這意味著您需要在某個位置放置一個視窗,以使其顯示在左側或右側監視器上(或同時顯示在左側或右側,一半在左側,另一半在右側)。
您的視窗管理器(WM),在大多數現代發行版中集成在您的桌面環境中,可以影響視窗的放置,並且通過正確配置它,它可以幫助將其放置在您想要的位置(並因此監控)。
許多(但不是全部)X 應用程序也支持該
-geometry
選項(閱讀手冊頁),它再次將視窗放置在某個位置,但 WM 可以自由地覆蓋它,所以如果它不起作用,那就是原因。如果您沒有執行現代桌面系統,並且您甚至不打算使用視窗管理器(甚至幾十年前每個人都這樣做了;X意味著有一個視窗管理器),那麼您需要定位和調整每個視窗的大小單獨通過命令行(這也將確定它們出現在目前設置中的哪個螢幕上);你將無法調整視窗大小或移動視窗等(如果你能做到這一點,那麼即使你沒有意識到這一點,你也會在某處擁有一些 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)。期望花費相當多的時間來完成這項工作。