连接外部屏幕时如何自动关闭内部屏幕?

Windows用户在这里,跳上Ubuntu火车。 目前使用14.04 。 我有一台电视用于观看电影等,通过HDMI连接。 我想完成以下行为,但我还没想到

  • 在HDMI连接上,不要在我的笔记本电脑上显示任何内容,只需在电视上显示(自动)
  • 在HDMI断开连接时,显示我的笔记本电脑

只有修改设置我才能实现,但它非常手动。 我错过了什么吗?

非常感谢!

如果连接了外部屏幕,则自动关闭内部屏幕

这可以通过运行一个小的后台脚本(在启动时自动启动(登录))轻松完成。

它能做什么

如果连接了电视(或任何其他固定屏幕),脚本将自动关闭内部屏幕。 如果您只想让它适用于特定的外部屏幕,请提及。

剧本

 #!/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 

如何设置

  1. 将下面的脚本复制到一个空文件中,将其另存为switch_screens.py
  2. 在脚本的head部分中,设置内部屏幕的名称。 要查找,打开一个终端窗口并运行命令xrandr (没有连接外部屏幕)其中带有“connected”的行显示第一个字符串中的屏幕名称,如: VGA-1或类似的东西。
  3. 通过打开终端窗口测试运行它并输入命令:

     python3 /path/to/switch_screens.py 

    脚本运行时,连接电视,等待内部屏幕切换并再次断开连接。

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

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

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

Unity通常会记住您描述的设置。 这意味着如果您曾经激活过电视,然后停用笔记本电脑屏幕,则应在下次再次连接电视时执行此操作。 此外,如果你拔掉你的电视,它应该回到Laptopsreen。

正如你所说,这没有发生,你可以制作一个小的批处理文件,如果连接并激活你的笔记本电脑屏幕,它将激活第二个屏幕。 这与该问题有关