◎本文翻譯自 WEB UPD8 網站,原文請參考這裡。
Nvidia 推出的 Optimus 技術是讓一台擁有內建顯示晶片的 Intel CPU 及 Nvidia 獨立顯示晶片的筆記型電腦,可以視情況在兩個顯示晶片之間做切換,來達到省電目的的解決方案,不過這一直都只能在 Windows 7 上正常的運作,使得 Linux 之父 Linus Torvalds 為此對 Nvidia 大比中指、表達不滿,儘管 Nvidia 推說有大力支援了 Bumblebee 計劃。而 Bumblebee 計劃的目的是在於把 Nvidia Optimus 的功能移植到 Linux 平台上,從命名也可以看出之間的關聯性(Optimus 與 Bumblebee 正是變形金剛中的柯博文及大黃蜂),目前的進度仍處於「需要時才把運算丟到獨立顯示晶片上處理」的階段,而這樣的情況,導致筆電上的 HDMI 或 Display Port 的輸出無法使用(筆電上通常這兩種 Port 為獨立顯卡所管理)。可惜的是,目前的情況,離 Windows 上的「終極型態」尚有很大一段差距,但是仍然有所謂「外道」的做法,可以讓我們「硬是要」透過 HDMI 或 Display Port 將畫面輸出,讓我們的內心得到小小的慰藉。
這裡提供的做法,就是使用第二個桌面環境,這邊使用的是 LXDE,但是其實也可以改用其他的桌面環境像是 Xfce,而這第二個桌面環境將會透過 HDMI 輸出到外接顯示器。你可以同時在平常使用的桌面環境與第二個桌面環境上執行任何應用程式像是玩遊戲、看影片等等,而且這兩個桌面環境共用鍵盤與滑鼠。看起來會像是這樣子:
圖1:筆電螢幕所使用的桌面環境
圖2:透過 HDMI 輸出到外接顯示器外接顯示器的第二個桌面環境
從圖中可以發現,他們執行在同一台電腦並各自使用不同的顯示晶片。
不過,這邊也有幾點要注意:以下的步驟將以 Ubuntu 12.04 為例:
1. 安裝 Bumblebee,如果你尚未安裝。這裡有相關說明。
2. 因為 Unity 無法透過 Bumblebee 運行(不確定是否能在不互相干擾的情況下運行兩個相同的桌面環境),所以你需要使用其他不同的桌面環境,像是 LXDE 、 Xfce 等等,安裝你想要的,在這邊我們以 LXDE 為例。然後為了讓這兩個桌面環境共用鍵盤滑鼠,我們需要利用 Synergy 這套可以在多台電腦間共用鍵盤滑鼠的跨平台軟體。以下指令將會安裝 LXDE 與 Synergy :
sudo apt-get install synergy lxde lxde-common
3. 安裝好 Synergy 後,你需要建立一個設定檔方能使用。你可以從這裡下載範例檔,複製到家目錄並更名為 .synergy.conf。這樣的設定檔應該足以使用,但如果你還想做些修改,你可以參考這篇文件來修改你的 Synergy 設定檔。
4. 透過這個 Script 讓 LXDE 啟動並顯示在外接外接顯示器上面。將壓縮檔解開,複製 hdmi 這個 script 到你的家目錄並透過下面指令將這個 script 標示為可執行:
chmod +x ~/hdmi
然後,你可以開始執行這個指令:
~/hdmi
之後, LXDE 將會透過 HDMI 啟動到外接顯示器上。等待一下(大約10秒),然後你可以嘗試將滑鼠往右移動,滑鼠游標應該會跑到你的 HDMI 顯示裝置上。
這邊解說一下這個 script 做了哪些事情:
export DISPLAY=:8.0
optirun startlxde &
synergys -f -a 127.0.0.1 --display :0 -n ubuntu & synergyc -f -n hdmi --display :8 127.0.0.1 &
export DISPLAY=:0.0
這個 script 也使用一些 sleep 指令,以確保有足夠的時間讓目前的指令在下個指令執行前完成所有動作。
啟動應用程式
如果你想要讓應用程式啟動到外接螢幕的畫面上,你可以直接將滑鼠移到外接螢幕上並點選 LXDE 的選單來執行程式,或是在主畫面下達以下指令:
export DISPLAY=:8.0 <application>
<application>可以是你要執行的任何程式。另外,你也可以先在終端機下先執行 export DISPLAY=:8.0,然後你接下來執行的程式都會出現在外接螢幕上。
設定 Nvidia 顯示卡
運用上面的指令,你也可以執行 nvidia-settings,如果你是使用 Nvidia 專用顯示驅動:
export DISPLAY=:8.0 nvidia-settings
修正重複啟動的自動執行程式 / 系統圖示:
為了避免啟動 LXDE 時,主畫面會出現兩組系統圖示(像是網路圖示等)的情況,我們可以透過下面的指令讓 LXDE 啟動時不會載入所有的自動執行程式:
for f in /etc/xdg/autostart/*; do if [[ ! `grep "NotShowIn=LXDE" $f` ]]; then echo "NotShowIn=LXDE;" | sudo tee -a $f; fi; done for f in ~/.config/autostart/*; do if [[ ! `grep "NotShowIn=LXDE" $f` ]]; then echo "NotShowIn=LXDE;" | tee -a $f; fi; done
你也可以手動將 NotShowIn=LXDE; 加到 `/etc/xdg/autostart` 及 `~/.config/autostart` 兩個資料夾中所有你不想在 LXDE 啟動載入的應用程式所對應的 .desktop 檔案。更多關於 NotShowIn 及 OnlyShowIn 的用法,請參考 MAKE APPLICATIONS AUTOSTART ONLY IN A CERTAIN ENVIRONMENT (GNOME, UNITY, KDE, ETC.)。