通过控制台 tty 激活显示?

通过控制台 tty 激活显示?

我有一个自定义的 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

如何设置

  1. 将上述脚本复制到一个空文件中,另存为switch_screens.py
  2. 在脚本的头部,设置你的内部的屏幕。要找出答案,请打开终端窗口并运行命令xrandr(未连接外部屏幕)其中带有“已连接”的行在第一个字符串中显示屏幕的名称,看起来像:VGA-1或类似的东西。
  3. 通过打开终端窗口并输入命令进行测试运行:

    python3 /path/to/switch_screens.py
    

    脚本运行时,连接外部屏幕,等待内部屏幕关闭并再次断开连接。

  4. 如果一切正常,请将以下命令添加到启动应用程序:打开 Dash > 启动应用程序 > 添加。添加命令:

    /bin/bash -c "sleep 15 && python3 /path/to/switch_screens.py"
    

注销并重新登录。现在,如果连接了外部屏幕,则内部屏幕会自动关闭,如果断开连接,则重新启用它。

该脚本不会给您的系统增加明显的负担。

相关内容