禁用未插电的显示器(xrandr)


17

我有一台带有两个视频输出的笔记本电脑,我在家时可以使用它们(HDMI1,VGA1)。要启用它们,我这样做:

xrandr --output HDMI1 --right-of LVDS1 --auto
xrandr --output LVDS1 --off
xrandr --output VGA1 --right-of HDMI1 --auto

当我想上班时,我带上笔记本电脑,但首先运行以下命令:

xrandr --output VGA1 --off
xrandr --output LVDS1 --left-of HDMI1 --auto
xrandr --output HDMI1 --off

然后,这使我的笔记本电脑显示屏保持应有的状态。

我遇到的问题是,有时我不记得在使计算机工作之前不禁用两个屏幕。到达时,我尝试使用--output和的各种组合,--off但无法重新启用屏幕。

这是我运行xrandr时未显示任何内容的输出:

Screen 0: minimum 320 x 200, current 3840 x 1080, maximum 8192 x 8192
LVDS1 connected (normal left inverted right x axis y axis)
   1366x768       60.0 +
   1024x768       60.0··
   800x600        60.3     56.2··
   640x480        59.9··
VGA1 disconnected 1920x1080+1920+0 (normal left inverted right x axis y axis) 0mm x 0mm
HDMI1 disconnected 1920x1080+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
DP1 disconnected (normal left inverted right x axis y axis)
  1920x1080 (0x4c)  148.5MHz
        h: width  1920 start 2008 end 2052 total 2200 skew    0 clock   67.5KHz
        v: height 1080 start 1084 end 1089 total 1125           clock   60.0Hz

我尝试过的几乎每个命令都会返回:

xrandr: Configure crtc 2 failed
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  21 (RRSetCrtcConfig)
  Serial number of failed request:  40
  Current serial number in output stream:  40

就像两个监视器都没有放弃其CRTC一样,由于我的硬件仅支持2,所以它将一直处于锁定状态,直到我将这些监视器插入并禁用它们为止。

Answers:


11

您可以将所有配置放在一个命令中,例如:

xrandr --output VGA1 --off --output HDMI1 --off --output LVDS1 --left-of HDMI1 --auto

而且应该可以完成工作,而且由于很难编写命令(很长时间),因此您可以创建一个脚本来测试当前连接的屏幕并进行所需的设置。(您可以将其添加到快捷键中)

if [ -z `xrandr --query | grep "HDMI1 connected"` ]
then
    xrandr --output DP2 --off --output DP1 --off --output HDMI2 --off \
        --output HDMI1 --off \
        --output LVDS1 --mode 1366x768 --pos 0x0 --rotate normal \
        --output VGA1 --off
else
    xrandr --output DP2 --off --output DP1 --off --output HDMI2 --off \
        --output HDMI1 --mode 1920x1080 --pos 0x0 --rotate normal --primary \
        --output LVDS1 --off --output VGA1 --off
fi

这不是花哨的脚本,但可能适合您。


1

不幸的是,拔出屏幕时似乎没有事件生成。进行脚本民意调查xrandr非常繁重,但是您可以查看/ sys / class / drm / * / status并轮询这些文件,然后在状态从“已连接”更改为其他状态(或完全消失)时采取所需的xrandr操作。


1

我知道这是一个超旧的线程,但是我想分享您如何解决此问题,并使用有关打开和关闭显示器然后断开它们的信息。我使用了一个名为autorandr的程序,并且基本上只是在显示器上设置了两个显示器autorandr --save docked。然后,我用了它xrandr --output VGA --off,然后拔下了显示器的电源,然后拔掉了autorandr --save mobile。Autorandr会根据您插入或拔出的内容自动在不同模式之间切换。希望这对其他偶然发现的人有所帮助!同样,这就像我的第一个真实答案,所以让我知道我是否可以更改任何内容以使其更加清晰。

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.