« 玩星海爭霸 (StarCraft) 所學到的幾件事 | 首頁 | Linux Shell Script: pdf2png »

2008年02月22日

Xinerama 雙螢幕實作

目的: 利用筆記型電腦的 VGA Out 連接電腦螢幕, 讓 Fedora 8 Gnome 桌面延伸到外接螢幕, 以獲取更多的桌面操作範圍

環境:

  • BenQ S41 Laptop (Nvidia GeForce 8600M GS)
  • Twinhead 1024x768 LCD Monitor
  • Fedora 8, Gnome 2.20.3, Xorg 1.3.0

Before

After

  • 接上外螢幕時
    • 使用 Gnome 預設的 Metacity 視窗管理程式
    • 主螢幕底部出現 Gnome Panel, 並帶有 Window List Applet (視窗清單)
    • 桌面大小: 2304 (1024+1280) x 800 (外接螢幕的可用高度依然是 768 畫素)
  • 僅使用主螢幕時
    • 使用 Compiz (Compiz-Fusion) 視窗管理程式
    • 隱藏主螢幕底部的 Gnome Panel
    • 啟動 Avant Window Navigators

Step 1: 備份原本的 xorg.conf 設定檔

su -
cd /etc/X11
cp xorg.conf xorg.conf.original

註: 雖然 system-config-display 修改後會自動備份原始設定, 但還是另外手動備份一份比較安心 :P

Step 2: 設定 "Dual Head"

System → Administration → Display → Dual head

  • 勾選 "Use dual head"
  • Second Monitor Type: Generic LCD Display → LCD Panel 1024x768
  • Resolution: 1024x768 (如果不能選就算了)
  • Desktop layout: Spanning Desktops

sudo vi /etc/X11/xorg.conf

#以下僅列出編輯重點, 未提到的部份皆保持原設定

Section "ServerLayout"

Screen 0 "Screen0" RightOf "Screen1"
Option "Xinerama" "on"
Option "Clone" "off"

EndSection

↑說明:

  • 因為我的主螢幕 (Screen0) 在外接螢幕 (Screen1) 的右手邊, 所以改成 RightOf
  • 延展桌面 (Spanning desktops) 的設定: Xinerama=on, Clone=off
  • 獨立桌面 (Individual desktops) 的設定: Xinerama=off, Clone=on

Section "Device"

Identifier "Videocard1"
Driver "nvidia" (與 Videocard0 的 Driver 一致)
Screen 1

EndSection

Section "Screen"

Identifier "Screen1"
SubSection "Display"
    Modes "1024x768" (外接螢幕的解析度)
EndSubSection

EndSection

連結: 完整的 xorg.conf

Step 3: 設定登入後自動判斷是否啟用 Compiz 桌面管理程式

System → Preferences → Personal → Sessions → 停用自動啟動 avant-window-navigator 與 fusion-icon

於畫面下方加入 Gnome panel, 並在這個 panel 加入 "Window List" applet (像 MS Windows 那樣的視窗清單)

vi ~/.bash_profile

#加入以下內容

if [ -n "$DISPLAY" ]; then

if [ -n "`grep 'Unable to find available Display Devices for screen 1.' /var/log/Xorg.0.log`" ]; then

#未連接外接螢幕時, 使用 Compiz 桌面管理程式 (由 fusion-icon 設定使用 Compiz) 與 Avant Window Navigator, 並隱藏 Gnome 的 bottom panel.
gconftool-2 -t bool -s /apps/panel/toplevels/panel_1/auto_hide true
fusion-icon &
avant-window-navigator &

else

gconftool-2 -t bool -s /apps/panel/toplevels/panel_1/auto_hide false

fi

fi

Step 4: 測試

  • 接上外螢幕, 按 Ctrl + Alt + Backspace 重新啟動 X window:
    • 登入畫面出現在主螢幕上
    • 登入後外螢幕出現延伸桌面
    • 視窗管理程式為 Metacity
    • 主畫面底部出現 Gnome Panel
  • 拔除外螢幕連接線, 按 Ctrl + Alt + Backspace 重新啟動 X window, 登入後:
    • 視窗管理程式為 Compiz
    • 畫面底部出現 Avant Window Navigator
    • 畫面底部看不到 Gnome Panel


附錄: Xinerama vs. Nvidia TwinView 我所觀察到的差異

  Xinerama Nvidia Twinview
X window 登入畫面 只會出現於主螢幕 兩個螢幕合併成一個登入畫面
螢幕解析度 每個螢幕以自己的解析度顯示 整合成新的解析度
Compiz 支援
Menu 在右螢幕,
向左邊延伸桌面
不行
置中視窗預設出現位置 游標所在螢幕 兩個螢幕之間
視窗最大化 只在視窗所在螢幕最大化 跨越所有的螢幕
設定介面 system-config-display
nvidia-settings
nvidia-settings

簡而言之, Twinview 將兩個顯示裝置整合起來, 將它視為一個超大型螢幕, 適合用在解析度相同的顯示裝置; 我只想把舊的顯示器拿來延伸桌面, 所以選擇使用 Xinerama :)


Bookmarks

Posted by Jamyy at 2008年02月22日 00:17

Trackback Pings

TrackBack URL for this entry:
http://cha.homeip.net/cgi-bin/mt/mt-tb.cgi/333