我是 Windows 用户,正在加入 Ubuntu 的行列。目前使用的是14.04
。我有一台电视,用于观看电影等,通过 HDMI 连接。我想实现以下行为,但我还没有想出办法
- HDMI 连接时,笔记本电脑上不显示任何内容,只在电视上显示(自动)
- HDMI 断开后,重新显示我的笔记本电脑
只能通过修改设置来实现这一点,但这非常手动。我遗漏了什么吗?
多谢!
答案1
如果连接了外接屏幕,则自动关闭内部屏幕
这可以通过运行一个小型后台脚本(在启动(登录)时自动启动)轻松完成。
它能做什么
如果您的电视(或任何其他辅助屏幕)已连接,脚本将自动关闭您的内部屏幕。如果您只想让它工作一段时间具体的外接屏幕,请提及。
剧本
#!/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"])
scr_info1 = scr_info2
如何设置
- 将以下脚本复制到一个空文件中,并将其另存为
switch_screens.py
- 在脚本的头部,设置你的内部的屏幕。要找出答案,请打开终端窗口并运行命令
xrandr
(未连接外部屏幕)其中带有“已连接”的行在第一个字符串中显示屏幕的名称,看起来像:VGA-1
或类似的东西。 通过打开终端窗口并输入命令进行测试运行:
python3 /path/to/switch_screens.py
脚本运行时,连接电视,等待内部屏幕关闭并再次断开连接。
如果一切正常,请将以下命令添加到启动应用程序:打开 Dash > 启动应用程序 > 添加。添加命令:
/bin/bash -c "sleep 15 && python3 /path/to/switch_screens.py"
注销并重新登录。现在,如果连接了外部屏幕,您的内部屏幕将自动关闭。
答案2
Unity 通常会记住您描述的设置。这意味着如果您曾经激活电视,然后停用笔记本电脑屏幕,则下次再次连接电视时应该会这样做。此外,如果您拔下电视插头,它应该会返回到 Laptopsreen。
正如您所说,这种情况没有发生,您可以制作一个小的批处理文件,如果已连接,则激活第二个屏幕并停用笔记本电脑屏幕。这与问题