目前 Linux 系統 和 KDE 桌面環境已經整合的十分漂亮,尤其是硬體部份,更是讓使用者在使用的時候,咸少感到不適。
以螢幕設備來說,目前 KDE 已經和 Xrandr 合作的十分成功的情況下,操作起來真的也十分直覺順暢。操作界面如下圖:
不過,若遇到有些螢幕的顯示比較與眾不同,系統則會偵測錯誤,從而造成有些想要的解析度無法呈現出來。
面對這個問題,可以利用「xrandr」和「cvt」這兩個工具程式來做系統性的解決。
整個過程,大致可分為「列出目前現有狀況」、「偵測與生成新的解析度參數」、「加入新解析度參數」、「套用與調校」四個過程。
(註: xrandr 和 cvt 分別是 x11-xserver-utils 和 xserver-xorg-core 底下的工具程式。)
- 列出目前現有狀況
- 有 4 個螢幕連接界面:eDP-1, HDMI-1, DP-1, HDMI-2。
- 目前正透過 eDP-1 連接一個螢幕,其餘 3 個螢幕連接界面,目前都沒有連接螢幕。
- 螢幕支援許多解析度,目前使用的的解析度為「1920×1080」(有 * 符號者)。
- 偵測與生成新的解析度參數
- 加入新解析度參數
- 套用與調校
了解這部機器有哪些螢幕連接界面,以及目前正連接上螢幕的狀況。
/usr/bin/xrandr
由執行結果可以得知,這部機器目前:
若目前所列出的螢幕解析度並沒有自己所需要的模式,可執行「/usr/bin/cvt」來偵測與生成解析度參數。
若要生成解析度為 1920×1028 螢幕更新頻率為 60HZ。
/usr/bin/cvt 1920 1028 60
或
/usr/bin/cvt 1920 1028
(由於螢幕更新頻率預設值為 60HZ,所以可省略!但若為其他,則必須要填上)
由執行結果可得:
Modeline “1920x1028_60.00” 163.75 1920 2040 2240 2560 1028 1031 1041 1067 -hsync +vsync
宣告與新增一個新的解析度選項,使用 xrandr 指令將剛才 cvt 生成的參數合併,生成新的螢幕解析度選項,原 “1920x1028_60.00” 可以自行更名,例如更名為 “1920x1028_new”
/usr/bin/xrandr –newmode “1920x1028_new” 163.75 1920 2040 2240 2560 1028 1031 1041 1067 -hsync +vsync
再將 “1920x1028_new” 加入 eDP-1 螢幕解析度組中。
/usr/bin/xrandr –addmode 螢幕名稱 “解析度選項名稱”
所以,
/usr/bin/xrandr –addmode eDP-1 “1920x1028_new”
將新的解析度選項套用到螢幕。
/usr/bin/xrandr –output 螢幕名稱 –mode “解析度選項名稱”
所以,
/usr/bin/xrandr –output eDP-1 –mode “1920x1028_new”
若是想同時使用 eDP-1 螢幕 並接上 HDMI 螢幕來作為雙螢幕應用。
系統預設會將非熱插拔顯示裝置作為主螢幕,所以 eDP-1 會被識別為 primary screen。
當然也可以透過 xrandr 來決定哪個螢幕中做為主螢幕,例如將 eDP-1 設為主螢幕,此時 HDMI-1 螢幕就會被視為「延伸螢幕」。
/usr/bin/xrandr –output eDP-1 –primary
可以將兩個螢幕設定成「同步顯示」:
/usr/bin/xrandr –output HDMI-1 –same-as eDP-1 –auto
也可以決定將 eDP-1 螢幕放在左邊,HDMI-1 螢幕放在右邊:
/usr/bin/xrandr –output HDMI-1 –right-of eDP-1 –auto
或是將 HDNI-1 螢幕往右邊旋轉:
/usr/bin/xrandr –output HDMI-1 –rotate right
關於旋轉,有四種情況可選:一般(預設值),上下相反(180度),往左旋轉90度,往右旋轉90度。(normal,inverted,left,right)
xrandr 還有許多參數可供使用,若有需要就「 xrandr –help 」就可以獲得許多明確參考訊息。
以自己教室個人用電腦為例,使用兩部螢幕,一部接在 HDMI-2,一部接在 VGA-0,兩部螢幕雖然型號完全一樣,但系統可以抓到連接到 HDMI-2 螢幕的解析度 1280×1024 的參數,但卻無法準確抓到連接在 VGA-0 螢幕在解析度 1280×1024 模式的參數。
所以,只要調校 HDMI-2 螢幕就可。
- 先偵測螢幕在 1280×1024 的參數:
- 用 xrandr 將偵測到的參數,新增為一組解析度選項
- 再用 xrandr 將新增的解析度選項,加入到 VGA-0 螢幕
- 因為我是使用雙螢幕,接在 VGA-0 的螢幕是放接在 HDMI-2 螢幕的右邊,所以:
cvt 1280 1024 60
xrandr –newmode 1280x1024_58.85 106.00 1280 1360 1488 1696 1024 1027 1034 1062 -hsync +vsync
xrandr –addmode VGA-0 1280x1024_58.85
xrandr –output VGA-0 –mode 1280x1024_58.85 –right-of HDMI-2
參考資源
- Linux 新增其他螢幕解析度到 xrandr
- OK3399 Ubuntu 雙屏擴充套件顯示+雙屏異觸
- [Linux] 使用 xrandr 指令調整延伸螢幕、相同螢幕、解析度
https://linwebs.tw/note/linux-add-screen-solution
https://www.gushiciku.cn/pl/g6db/zh-tw
https://clay-atlas.com/blog/2020/10/23/linux-cn-xrandr-adjust-resolution-screen-settings/