我有一個自訂的 xrandr 腳本,它可以啟用我的外部顯示器並停用我的筆記型電腦的顯示器。當我斷開外接顯示器時,我無法啟用顯示器,因為我的螢幕是空白的。
我希望能夠存取我的控制台 tty (ctrl-alt-f1),並觸發 xrandr 繼續(即 xrandr --output eDP1 --auto
)。在我的 tty 中運行它顯示“無法打開顯示”。有什麼建議可以幫助我做到這一點嗎?
答案1
無需進入控制台,您可以透過新增自訂鍵盤快速鍵來重新啟用內部螢幕來實現相同的目的。
選擇系統設定 > 鍵盤 > 捷徑 > 自訂快捷方式,按一下 + 並將命令新增至您選擇的捷徑:
xrandr --output <screenname> --auto
剛剛在我的系統上測試了它(筆記型電腦,15.10);關閉我的螢幕並使用鍵盤快捷鍵成功重新啟用它,運行命令:)
或者
您可以使用編輯版本這個腳本。下面的版本(小後台腳本,每四秒檢查一次是否連接了外部螢幕)確保您的內部螢幕已打開
#!/usr/bin/env python3
import subprocess
import time
# --- set your internal screen below (the example is my primary screen)
internal = "DVI-I-1"
#---
# don't change anything below
scr_info1 = 0
while True:
time.sleep(4)
# read the current screen setup from xrandr
get_screens = subprocess.check_output("xrandr").decode("utf-8").splitlines()
scr_data = [l for l in get_screens if " connected " in l]
# count the number of connected screens
scr_info2 = len(scr_data)
# if the number of connected screens changes,
# switch off the internal one if there are two screens
if scr_info2 != scr_info1:
if scr_info2 == 2:
ext = [s.split()[0] for s in scr_data if not internal in s][0]
subprocess.Popen(["xrandr", "--output", internal, "--off", "--output", ext, "--auto"])
else:
subprocess.Popen(["xrandr", "--output", internal, "--auto"])
scr_info1 = scr_info2
如何設定
- 將上面的腳本複製到一個空文件中,另存為
switch_screens.py
- 在腳本的頭部,設定您的名稱內部的螢幕.要找到答案,請打開終端機視窗並執行命令
xrandr
(未連接外部螢幕)其中帶有“connected”的行在第一個字串中顯示螢幕的名稱,如下所示:VGA-1
或類似的內容。 透過打開終端機視窗並鍵入命令來測試運行它:
python3 /path/to/switch_screens.py
當腳本運行時,連接外部螢幕,等待內部螢幕關閉並再次斷開連接。
如果一切正常,請將以下命令新增至啟動應用程式:開啟 Dash > 啟動應用程式 > 新增。新增指令:
/bin/bash -c "sleep 15 && python3 /path/to/switch_screens.py"
登出並重新登入。
該腳本根本不會為您的系統增加明顯的負擔。