Xrandr

在兩個顯示器上拉伸視窗,中間有“間隙”

  • May 3, 2017

我在 Ubuntu 14.04 上有一個使用 Compiz 作為視窗管理器的雙顯示器設置。我可以調整視窗大小以覆蓋兩個視窗。然而,雖然物理顯示面板相距幾厘米,但預設情況下,軟體認為它們彼此相鄰,中間沒有間隙。這意味著,例如,對角線最終看起來像這樣:

+----------+ +----------+
|          | |   /      |
|          | |  /       |
|          | | /        |
|          | |/         |
|         /| |          |
|        / | |          |
+----------+ +----------+

我想要實現的是更像這樣的東西:

+----------+ +----------+
|          | | /        |
|          | |/         |
|          | |          |
|          | |          |
|         /| |          |
|        / | |          |
+----------+ +----------+

這會導致部分視窗被隱藏,但這是可以接受的。

我可以讓 X 認為顯示器之間有如下差距:

$ xrandr
Screen 0: minimum 320 x 200, current 2048 x 1280, maximum 32767 x 32767
LVDS1 connected (normal left inverted right x axis y axis)
  1366x768       60.0 +
  1360x768       59.8     60.0  
  1024x768       60.0  
  800x600        60.3     56.2  
  640x480        59.9  
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
HDMI2 connected primary 1024x1280+0+0 left (normal left inverted right x axis y axis) 376mm x 301mm
  1280x1024      60.0*+   75.0  
  1280x960       60.0  
  1152x864       75.0  
  1024x768       75.1     70.1     60.0  
  832x624        74.6  
  800x600        72.2     75.0     60.3     56.2  
  640x480        75.0     72.8     66.7     60.0  
  720x400        70.1  
HDMI3 connected 1024x1280+1024+0 right (normal left inverted right x axis y axis) 376mm x 301mm
  1280x1024      60.0*+   75.0  
  1280x960       60.0  
  1152x864       75.0  
  1024x768       75.1     70.1     60.0  
  832x624        74.6  
  800x600        72.2     75.0     60.3     56.2  
  640x480        75.0     72.8     66.7     60.0  
  720x400        70.1  
DP2 disconnected (normal left inverted right x axis y axis)
DP3 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
$ xrandr --fb 2184x1280
$ xrandr --output HDMI3 --pos 1160x0

乍一看,這似乎工作得很好——當我將滑鼠沿對角線移動穿過顯示器之間的間隙時,它會消失在顯示器邊框的“後面”,然後重新出現在我期望對角線繼續存在的地方。

但是,我無法再移動或調整視窗大小以在兩個顯示器上進行拉伸。滑鼠wmctrl似乎都無法做到這一點。

有沒有辦法實現我想要的?

在 Ask Ubuntu 上找到了一個相關的問題,這對我有用。整個過程的說明,包括在監視器之間創建“間隙”(至少在 Ubuntu 14.04 上有效):

  • 找出目前的總螢幕尺寸(假設目前顯示器之間沒有虛擬間隙):

$ xrandr | grep Screen Screen 0: minimum 320 x 200, current2048 x 1280, maximum 32767 x 32767

  • 將所需的間隙大小(以像素為單位)添加到寬度(之後顯示的第一個值current——在我的例子中為 2048)。我選擇了 136 像素的間隙,所以我的新螢幕寬度為 2184。
  • 設置新的螢幕尺寸:

xrandr --fb 2184x1280

  • 找出您右側顯示器的顯示名稱:

$ xrandr | grep ^[^\(]*rightHDMI3connected 1024x1280+1024+0 right (normal left inverted right x axis y axis) 376mm x 301mm

  • 虛擬地將右側顯示器進一步向右移動以創建間隙。將您的間隙大小添加到上述命令顯示的第三個數字(以粗體突出顯示)。在我的範例中,這是 1024+136=1160:

xrandr --output HDMI3 --pos 1160x0

現在,讓 Compiz 將整個區域作為一個單獨的螢幕來處理

  • 啟動 CompizConfig 設置管理器(可安裝sudo apt-get install compizconfig-settings-manager
  • 轉到“正常選項”外掛(例如在搜尋框中輸入)
  • 選擇選項卡“顯示設置”
  • 取消選中“檢測輸出”
  • 如果這還不能解決問題,請右鍵點擊“輸出”下列出的每一行,選擇“編輯”並刪除其內容。

最大化視窗時,它現在將拉伸兩個監視器。全屏也會拉伸兩台顯示器。

顯然,這並不理想,因為大多數時候希望最大化的視窗填充單個顯示器。這意味著,必鬚根據目前所需的行為來檢查和取消選中“檢測輸出”Compiz 選項。

對非英語語言環境的使用者的說明:如果您因為不知道他們的名稱是如何翻譯而找不到 CompizConfig 外掛和設置,請像這樣啟動 CompizConfig:

LANG=C ccsm

引用自:https://unix.stackexchange.com/questions/182182