我有一台带英特尔显卡的笔记本电脑,在家里我把它连接到外接显示器上。有没有办法让显示器默认镜像?现在每次启动时我都必须以这种方式重新配置。
谢谢!
答案1
1. 简洁干净
我认为最干净、最简单的方法是:
- 借助以下方法找出两个屏幕名称
xrandr
(查找字符串“connected”) 打开系统设置>“键盘”>“快捷键”>“自定义快捷键”,点击“+”,添加命令:
xrandr --output <screen_name1> --auto --same-as <screen_name2>
您选择的组合键。
这样,您只需按下组合键即可激活镜像屏幕。
2. 无需查找屏幕名称
更复杂一点的做法是做同样的事情,但让脚本找出两个屏幕名称:
#!/usr/bin/env python3
import subprocess
output = subprocess.check_output(["/bin/bash", "-c", "xrandr"]).decode("utf-8").split()
connected = [output[i-1] for i in range(len(output)) if output[i] == "connected"]
command = "xrandr --output "+connected[0]+" --auto --same-as "+connected[1]
subprocess.Popen(["/bin/bash", "-c", command])
将脚本另存为mirror.py
,通过以下命令运行:
python3 /path/to/mirror.py
在组合键下,就像在第一个选项中一样。
3.全自动
如果您希望无需采取任何操作即可完成所有操作,请在后台运行以下脚本。它每 5 秒检查一次是否连接了第二台显示器,如果连接了,则将其设置为镜像。
剧本
#!/usr/bin/env python3
import subprocess
import time
def screens():
output = subprocess.check_output(["/bin/bash", "-c", "xrandr"]).decode("utf-8").split()
return [output[i-1] for i in range(len(output)) if output[i] == "connected"]
todo = True
while True:
scr = screens()
if len(scr) == 2 and todo == True:
command = "xrandr --output "+scr[0]+" --auto --same-as "+scr[1]
subprocess.Popen(["/bin/bash", "-c", command])
todo = False
elif len(scr) == 1 and todo == False:
todo = True
time.sleep(5)
如何使用
- 将脚本复制到一个空文件中,另存为
mirror_screen.py
- 通过重新启动笔记本电脑进行测试(屏幕断开连接)
通过以下命令运行脚本:
python3 /path/to/mirror_screen.py
连接第二台显示器,看看它是否自动切换到镜像。
- 如果一切正常,请将上述命令添加到您的启动应用程序中:
Dash > 启动应用程序 > 添加
答案2
在 22.04 (不知道这可以追溯到多久以前):
gsettings set com.canonical.unity.settings-daemon.plugins.xrandr default-monitors-setup clone
有关此设置的其他选项:
gsettings describe com.canonical.unity.settings-daemon.plugins.xrandr default-monitors-setup
(希望这个设置位于 GUI 的某个地方,但我不知道在哪里)