xrandr 添加新 mode (Ubuntu)

今天開機發現 Ubuntu Mate 的桌面整個變大了,去設定頁面看顯示器的部份,最高的解析度居然變為 1024x768??

這有點奇怪,我最近明明沒有動到這些設定阿。自從兩個小鬼頭每天早上都到這搞破壞後,我的這台電腦就變成了『巧虎 DVD 專用播放機』。這麼一想,大概就知道兇手是誰了。沒辦法,還是要搞定。

還是來研究一下老朋友 xrandr 的用法好了,先來看一下目前的狀況。

ghill@grantce:~$ xrandr -q
Screen 0: minimum 8 x 8, current 1024 x 768, maximum 32767 x 32767
HDMI1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
VGA1 connected 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768      60.00* 
   800x600       60.32    56.25  
   848x480       60.00  
   640x480       59.94  
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

界面是 VGA1,目前是輸出 1024x768@60HZ。我現在用的螢幕是 CHIMEI CMV-938D 螢幕,是 19 寸寬的螢幕,所以他的面板解析度應該是 1440x900,這也是我希望的桌面解析度。

先用 cvt 這個指令來看 1440x900 的 Timing 。

ghill@grantce:~$ cvt

usage: cvt [-v|--verbose] [-r|--reduced] X Y [refresh]

 -v|--verbose : Warn about CVT standard adherance.
 -r|--reduced : Create a mode with reduced blanking (default: normal blanking).
            X : Desired horizontal resolution (multiple of 8, required).
            Y : Desired vertical resolution (required).
      refresh : Desired refresh rate (default: 60.0Hz).

Calculates VESA CVT (Coordinated Video Timing) modelines for use with X.

ghill@grantce:~$ cvt 1440 900 
# 1440x900 59.89 Hz (CVT 1.30MA) hsync: 55.93 kHz; pclk: 106.50 MHz
Modeline "1440x900_60.00"  106.50  1440 1528 1672 1904  900 903 909 934 -hsync +vsync
ghill@grantce:~$

更新率 [refresh] 預設是 60HZ ,所以不用打沒關係。

Modeline ... 那一行就是我們要的 Timeing 參數。接著用 xrandr 來新增這個 mode 並切換到 1440x900@60HZ 。

ghill@grantce:~$ xrandr --newmode "1440x900_60.00"  106.50  1440 1528 1672 1904  900 903 909 934 -hsync +vsync
ghill@grantce:~$ xrandr --addmode VGA1 "1440x900_60.00"
ghill@grantce:~$ xrandr --output VGA1 --mode 1440x900_60.00
ghill@grantce:~$ xrandr -q
Screen 0: minimum 8 x 8, current 1440 x 900, maximum 32767 x 32767
HDMI1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
VGA1 connected 1440x900+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1440x900      59.89 +
   1024x768      60.00  
   800x600       60.32    56.25  
   848x480       60.00  
   640x480       59.94  
   1440x900_60.00  59.89* 
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
ghill@grantce:~$ 

這樣就設定好了,畫面若是有點偏,就按一下螢幕旁邊的 [AUTO] 按鍵自動調整一下。上面的 VGA1 會根據每個人用的 port 而不同,如 HDMI1 或其他。

但問題是重開機後,就又要在輸入一次上面那些指令,只好用一個最簡單的方法,將上面的指令加入 ~/.xprofile

$ nano ~/.xprofile
xrandr --newmode "1440x900_60.00"  106.50  1440 1528 1672 1904  900 903 909 934 -hsync +vsync
xrandr --addmode VGA1 "1440x900_60.00"
xrandr --output VGA1 --mode 1440x900_60.00

這樣每次開機就會顯示 1440x900@60hz 的解析度了。