在监视器连接/断开连接事件上运行脚本

时间:2016-05-15 08:32:43

标签: linux event-handling multiple-monitors udev

我读了很多关于如何做到这一点的线索,但它对我不起作用。

我想要实现的目标是:

当我的笔记本电脑关闭盖子时连接了2个额外的显示器时,我不想让它进入睡眠状态。但是,如果我断开显示器并关闭盖子,我想让笔记本电脑进入睡眠状态(这样,不要忘记它)。

因此,我创建了一个应该在VGA / HDMI连接事件上执行的BASH脚本。 BASH脚本计算连接的显示器数量,如果只有1,它将使盖子关闭时笔记本电脑进入睡眠状态。

我有Ubuntu 14.04 LTS。这就是我到目前为止所做的:

SUBSYSTEM=="drm", RUN+="/bin/bash /home/nir/dev/scripts/displays_count_sleep.sh"
  • 将我想要运行的bash脚本 displays_count_sleep.sh 放入/home/nir/dev/scripts
#!/bin/bash

DISPLAYS_NUM=2

`touch test`

display_count=`xrandr -d :0 -q | grep ' connected' | wc -l`

echo "display count="$display_count
echo "display_num="$DISPLAYS_NUM

if [ "$display_count" -ge "$DISPLAYS_NUM" ]; then
    echo "nothing"
    `gsettings set org.gnome.settings-daemon.plugins.power lid-close-ac-action nothing`
    `gsettings set org.gnome.settings-daemon.plugins.power lid-close-battery-action nothing`
else
    echo "sleep"
    `gsettings set org.gnome.settings-daemon.plugins.power lid-close-ac-action suspend`
    `gsettings set org.gnome.settings-daemon.plugins.power lid-close-battery-action suspend`
fi

这两个文件都是以root身份创建的。运行“udevadm test”时,输出与链接上的文件“ udevadm_test_output ”相同。

我不知道该事件是否被捕获,但是在真正的监视器(dis)连接上,脚本不会运行。如果我手动运行它就可以了。

0 个答案:

没有答案