默认为多显示器镜像

默认为多显示器镜像

我有一台带英特尔显卡的笔记本电脑,在家里我把它连接到外接显示器上。有没有办法让显示器默认镜像?现在每次启动时我都必须以这种方式重新配置。

谢谢!

答案1

1. 简洁干净

我认为最干净、最简单的方法是:

  1. 借助以下方法找出两个屏幕名称xrandr(查找字符串“connected”)
  2. 打开系统设置>“键盘”>“快捷键”>“自定义快捷键”,点击“+”,添加命令:

    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 的某个地方,但我不知道在哪里)

相关内容