有没有办法关闭单个屏幕?


13

我使用xset关闭屏幕,如下所示:

xset dpms force off

当您有多个与同一个X显示器相关联的屏幕时,是否可以关闭一个屏幕?


@myrdd:能否请您具体解释一下您希望看到的改进?
大卫·佛斯特

我想知道详细信息:(a)所需功能在技术上是否可行?—即“关闭”单个屏幕(我不是xrandr [...] --off)— (b)是否存在任何依赖关系?— 也就是说,图形卡芯片组和/或驱动程序需要具有特定功能?— (c)鉴于所需的功能尚不可用(作为CLI命令),下一步将采取什么措施?
2014年

Answers:


4

如果您使用的是传统的Ubuntu桌面,则应该可以使用系统>首选项>监视器。这将显示所有监视器,单击要禁用的监视器,然后使用“开/关”单选按钮禁用该特定监视器。

如果要从命令行执行此操作,则应该可以使用它xrandr --output <name> --off来禁用将触发监视器关闭电源的输出。


1
问题在于,当您使用Nvidia TwinView时,两个屏幕对于xrandr和xset都显示为一个,因此您不能单独关闭显示器。同样,Gnome Monitor Preferences被禁用,而您必须使用Nvidia驱动程序控件。当您禁用具有nvidia设置的一台显示器时,它会完全禁用该显示器,从而将所有窗口卡在另一屏幕上。我只想关闭一台显示器以观看另一台电影。
尼尔2010年

@Neil将硬件信息添加到问题中并使用nvidia对其进行标记可能也很有用。
Jorge Castro

2
@JorgeCastro它与硬件和TwinView没有关系:当它位于同一$ DISPLAY上时,似乎没有办法单独关闭屏幕,除非要从RandR配置中删除/禁用它。我们想关闭例如笔记本电脑的屏幕,但要保留所有窗口。
2015年

@muru您是编辑猴子!我不断看到您的修改。
MathCubes

4

现有答案存在问题

尽管七年前有一个答案是三票,但它未被接受,因为它导致关闭显示器上的所有打开的窗口都迁移到剩余的活动显示器上。

基于软件的亮度

在笔记本电脑上,您可以通过控制LCD面板的图形卡来控制亮度。对于外接电视和显示器,您需要一个软件解决方案将亮度调低到0。将其调至零是最接近的幻觉,我想将其关闭,同时将活动窗口保留在该外接显示器上。

精简版

从命令行(无脚本)使用:

$ xrandr | grep " connected"
HDMI-0 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 1107mm x 623mm
eDP-1-1 connected primary 1920x1080+3840+2160 (normal left inverted right x axis y axis) 382mm x 215mm
DP-1-1 connected 3840x2160+1920+0 (normal left inverted right x axis y axis) 1600mm x 900mm

这将显示由分配的监视器名称的列表xrandr。现在,如果要DP-1-1关闭亮度,请使用:

xrandr --output DP-1-1 --brightness 0

索尼电视bash脚本

这是我编写的三个脚本之一:

#!/bin/bash

# NAME: sony
# PATH: /mnt/e/bin
# DESC: Set brightness of Sony TV
# DATE: Dec 9, 2017.

if [[ $# -ne 1 ]]; then
    xrandr --verbose | grep -A5 "^HDMI-0" > /tmp/sony
    head -n1 /tmp/sony
    echo "$(tput setaf 1)" ; tail -n1 /tmp/sony ; echo "$(tput sgr0)"
    rm /tmp/sony
    echo 'One argument required for brightness level, e.g. "sony .63"'
    echo 'will set brightness level of Sony TV to level .63 using xrandr'
    exit 1
fi

xrandr --output HDMI-0  --brightness "$1"

要关闭显示屏,您将使用 sony 0

没有参数的调用脚本

当您不带任何参数调用脚本时,它将xrandr以红色显示屏幕名称以及当前亮度。您可以通过修改以下行将红色更改为另一种颜色:

echo "$(tput setaf 1)" ; tail -n1 /tmp/sony ; echo "$(tput sgr0)"

之后setaf改变1到:

  • 2 为绿色
  • 3 橘子
  • 4 用于蓝色等

修改和安装脚本

更改两次HDMI-0匹配您的屏幕名称。您可以xrandr在终端中输入所有屏幕的列表。

将脚本放在路径中的目录中,例如:

/usr/local/bin/sony

使用以下命令将脚本标记为可执行文件:

sudo chmod a+x /usr/local/bin/sony

选择哪个目录:/usr/local/binvs~/bin

在其中创建脚本时,/usr/local/bin必须使用sudo功能。更好的替代方法是使用目录~/bin的简写形式/home/YourUserID/bin

  • 创建目录 ~/bin
  • 关闭终端,然后重新打开。
  • 新创建的目录现在位于您的路径中。
  • 您在其中创建的所有脚本~/bin都可以使用常规权限创建。
  • 要启用脚本执行,您只需要使用chmod +x而不是chmod a+xa所有用户的意思)

2
谢谢您的回答。我不知道该xrandr [...] --brightness选项。请注意,您已经特别谈到了Sony显示器,但也--brightness应该适用于其他任何显示器。我已经--brightness在笔记本电脑上进行了测试,并且可以正常工作。但是,--brightness 0并没有关闭背光灯……我也已经--brightness在台式计算机上进行了测试:不幸的是,屏幕黑屏了1或2秒钟。在这1-2秒后,亮度会自动重置。我想它是否有效在很大程度上取决于gpu + driver + screen组合。
2014年

1
@myrdd我其实有三个脚本索尼东芝外星人的两个外部显示屏和内置的笔记本电脑显示屏。是的,背光不会关闭,因此您不会出现“纯黑”现象,但是这是一种解决方法。1到2秒的自动重置不会影响我的任何显示器,但我正在为硬连线的nVidia HDMI端口运行nVidia驱动程序,并运行nVidia驱动程序来控制Intel HD530 iGPU两个屏幕-Thunderbolt3和内置屏幕。
WinEunuuchs2Unix

无需脚本,只需运行xrandr来查找输出ID,然后xrandr --output HDMI-1 --brightness 0请简化答案
brauliobo

2
@brauliobo而不是删除大多数答案,我在最顶部放了一个简短的版本,我认为这是一个妥协。
WinEunuuchs2Unix
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.