2013年1月6日

Ubuntu Linux Desktop 12.10 多螢幕顯示器設定與消失的 xorg.conf

Ubuntu 近期版本的 Gnome + Unity 桌面,已將系統相關設定變成簡化的整合介面,這對一般使用者來說是件好事,Ubuntu 讓 Linux 變得比較平易近人。

不過剛開始使用 Unity 桌面的使用者,可能會找不到系統設定在哪,以顯示器設定來說,打開設定選項的步驟是:左上角的關機按鈕、系統設定值、顯示器。

Ubuntu 12.10 的「顯示器」設定

多螢幕分別顯示不同桌面的設定,就是將「鏡射顯示器」選項的打勾取消,就可以讓每顆螢幕都有自己的解析度和旋轉。如果將螢幕轉 90 度變成直向顯示,建議將「起動器放置」只設定在主螢幕,這樣可以避免 Unity 的工作選單列同時顯示在每個畫面(很佔位)。

如果夠幸運的話,只要利用這個「顯示器」設定,就可以正確調整成想要的模式。

可惜的是,從 Ubuntu 12.04 升級到 12.10,發生了不少問題。第一個問題來自 12.10 的 fglrx 驅動無法正確支援舊顯卡 ATI Radeon 4850;為此,我用最快的的解決辦法:直接買一張新的 NVIDIA GeForce GTX 650,目前 NVIDIA 的 Linux 驅動程式比較友善,所以只要安裝新的驅動套件即可正常顯示流暢的畫面:

sudo apt-get install nvidia-experimental-304 nvidia-settings-experimental-304

新的 GTX 650 顯卡最多可支援 4 個螢幕(VGA * 1、DVI * 2、HDMI * 1),手邊剛好有三部 DELL 23" 顯示器;趁著這個週末整理工作環境,就將三個螢幕並列顯示,想讓工作效率再升一級,三螢幕打造的新桌面解析度共有 3240 * 1920,更能滿足同時寫程式、測試除錯、瀏覽文件及操作終端機的需求。

照片最左邊的螢幕有色差,右邊與中間的螢幕是上一代的 DELL U2311H 使用 CCFL 背光,有漏光問題但顏色比較準確;而左邊的新款 DELL U2312HM 已改成 LED 背光,雖然省電但色彩明顯有些差異。由於 U2311H 已經停產,不得已之下只好跟 U2312HM 湊合著用。


Ubuntu Linux 12.10 內建的顯示器設定功能,使用上發現一點 BUG,在拖曳螢幕順序排列方式的地方,並無法正常選擇、拖曳螢幕圖示;這個問題造成顯示器的順序、位置沒辦法正確設定。

在過去舊版 Linux 系統調整顯示設定,都是透過修改「/etc/X11/xorg.conf」這個設定檔。不過近期的 Ubuntu Linux 使用了新的架構,預設下已經不會有「xorg.conf」檔案。

新的設定方式比較個人化,每個使用者可以有自己的顯示器設定值;設定檔位置在「~/.config/monitors.xml」,內容是 XML 格式可以直接修改,重新登入桌面就會套用新設定值。

<width> 及 <height> 標籤用來設定解析度,例如 1920 x 1080。
<x> 及 <y> 可以修改虛擬桌面(合併多個顯示器)的起始座標。
<rotation> 用於指定螢幕的旋轉方向。

monitors.xml 設定範例如下:

<monitors version="1">
  <configuration>
      <clone>no</clone>
      <output name="VGA-0">
          <vendor>DEL</vendor>
          <product>0x4071</product>
          <serial>0x4154334c</serial>
          <width>1920</width>
          <height>1080</height>
          <rate>60</rate>
          <x>2160</x>
          <y>0</y>
          <rotation>left</rotation>
          <reflect_x>no</reflect_x>
          <reflect_y>no</reflect_y>
          <primary>no</primary>
      </output>
      <output name="DVI-D-0">
          <vendor>DEL</vendor>
          <product>0xa05f</product>
          <serial>0x3233484c</serial>
          <width>1920</width>
          <height>1080</height>
          <rate>60</rate>
          <x>1080</x>
          <y>0</y>
          <rotation>left</rotation>
          <reflect_x>no</reflect_x>
          <reflect_y>no</reflect_y>
          <primary>no</primary>
      </output>
      <output name="HDMI-0">
      </output>
      <output name="DVI-D-1">
          <vendor>DEL</vendor>
          <product>0xa05f</product>
          <serial>0x3134544c</serial>
          <width>1920</width>
          <height>1080</height>
          <rate>60</rate>
          <x>0</x>
          <y>0</y>
          <rotation>left</rotation>
          <reflect_x>no</reflect_x>
          <reflect_y>no</reflect_y>
          <primary>yes</primary>
      </output>
  </configuration>
</monitors>

沒有留言:

張貼留言

lyhcode by lyhcode
歡迎轉載,請務必註明出處!