通过udev规则和xrandr监视热插拔

时间:2018-10-17 22:25:19

标签: udev xrandr

我尝试实现以下目标:
当我将笔记本电脑连接至扩展坞时,我希望使用连接至扩展坞的外部显示器。

为此,我使用了一个udev规则,该规则运行一个脚本,我知道该脚本实际上应在预期的时间运行。在执行xrandr命令之前,该脚本会在我的xsesison中设置与它们的值相对应的XAUTHORITY和DISPLAY环境变量。我运行的命令可以从xsession内部完美调用。 从scipt调用,但是,遇到以下错误:
“配置crtc 0失败”。

在另一个tty(设置了XAUTHORITY和DISPLAY env vars)上执行xrandr会导致相同的错误。

有什么想法吗?

xsession中的env变量:

> echo $XAUTHORITY 
/run/user/1000/gdm/Xauthority
> echo $DISPLAY 
:0

我的脚本:

#!/bin/bash

export XAUTHORITY=/run/user/1000/gdm/Xauthority
export DISPLAY=:0

HDMI_2_STATUS=$(</sys/class/drm/card0/card0-HDMI-A-2/status )

if [ "connected" == "$HDMI_2_STATUS" ]; then
  # is connected

  # video
  xrandr --output LVDS-1 --off
  xrandr --output HDMI-2 --auto

  # debug
  # echo $? >> /tmp/foo
else
  # not connected

  # video
  xrandr --output HDMI-2 --off
  xrandr --output LVDS-1 --auto

  # debug
  # echo $? >> /tmp/foo
fi

0 个答案:

没有答案