插入或拔出 HDMI 時如何編寫 bash 腳本來配置我的顯示器
我有一個執行 Kubuntu Precise (12.04) 的筆記本,我偶爾會用它來觀看影片。當我這樣做時,我插入一條連接到 A/V 接收器的 HDMI 電纜,並連接了一個 HDMI 監視器。
當我以這種方式觀看影片時,我在與系統互動控製播放等時仍然需要使用筆記本顯示器。HDMI顯示器上的文字從我坐的地方很難閱讀。
當我插入 HDMI 電纜時,Kubuntu 會檢測到它,但我必須通過一個奇怪的舞蹈序列(有效,但很複雜)才能每次都正確設置影片和音頻。為了解決這個問題,我正在嘗試編寫一個 bash 腳本,
xrandr
以便第一次正確地完成它。我從 Peoro 對這個 U&L Q&A 的回答中得到了基本的想法,標題為:插入外部顯示器時自動應用 RandR 配置的工具。
關於我的劇本
我的腳本(包括在下面)有效,但需要改進。
它為 HDMI 顯示器正確設置了影片模式,但 LVDS1 顯示器(在筆記型電腦上)變為僅顯示桌面的左上部分 - 這是一個問題,因為它切斷了右側的視窗捲動條和打開的工作列底端。
我嘗試使用 修復此問題
--scale
,但我的第一次嘗試將事情搞砸了,以至於我不得不重新啟動才能恢復正常工作的顯示。有沒有辦法讓兩個顯示器顯示相同的內容,但每個顯示器都使用自己單獨的首選解析度?
或者,至少,一種設置筆記本顯示器的方法,以便在使用 HDMI 顯示器時仍然可以訪問整個桌面?
由於我正在調試腳本,因此尚未清理它。我可能想讓它以後做更多。
我的劇本
#!/bin/bash ## hdmi_set ## Copyleft 11/13/2013 JPmicrosystems ## Adapted from ## https://unix.stackexchange.com/questions/4489/a-tool-for-automatically-applying-randr-configuration-when-external-display-is-p ## Answer by peoro # setting up new mode for my VGA ##xrandr --newmode "1920x1080" 148.5 1920 2008 2052 2200 1080 1089 1095 1125 +hsync +vsync ##xrandr --addmode VGA1 1920x1080 ##source $HOME/bin/bash_trace # default monitor is LVDS1 MONITOR=LVDS1 # functions to switch from LVDS1 to HDMI and vice versa function ActivateHDMI { echo "Switching to HDMI" ##xrandr --output HDMI1 --mode 1920x1080 --dpi 160 --output LVDS1 --off ##xrandr --output HDMI1 --same-as LVDS1 xrandr --output HDMI1 --mode 1920x1080 xrandr --output LVDS1 --mode 1366x768 MONITOR=HDMI1 } function DeactivateHDMI { echo "Switching to LVDS1" xrandr --output HDMI1 --off --output LVDS1 --auto MONITOR=LVDS1 } # functions to check if VGA is connected and in use function HDMIActive { [ $MONITOR = "HDMI1" ] } function HDMIConnected { ! xrandr | grep "^HDMI1" | grep disconnected } ## MONITOR doesn't do anything because it's not preserved between script executions # actual script ##while true ##do if HDMIConnected then ActivateHDMI fi if ! HDMIConnected then DeactivateHDMI fi ##sleep 1s ##done
xrandr 的輸出
這是 xrandr 看到的:
bigbird@ramdass:~$ xrandr Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192 LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 194mm 1366x768 60.0*+ 1360x768 59.8 60.0 1024x768 60.0 800x600 60.3 56.2 640x480 59.9 VGA1 disconnected (normal left inverted right x axis y axis) HDMI1 connected (normal left inverted right x axis y axis) 1920x1080 60.0 + 1680x1050 60.0 1280x1024 60.0 1440x900 59.9 1280x720 60.0 1024x768 60.0 800x600 60.3 720x480 59.9 640x480 60.0 720x400 70.1 DP1 disconnected (normal left inverted right x axis y axis)
您可能應該簡單地使用kscreen代替,這應該可以解決您的所有問題。它將記住先前連接的螢幕的設置,並在您再次連接後恢復它們。
如果您在使用 kscreen 時仍然遇到此類問題,則值得報告錯誤。
由於 Kubuntu 12.04 已經很老了,你可能應該看看這個.