我读了许多关于如何做到这一点的线索,但这对我没有任何作用。
我想要达到的是:
当我的笔记本电脑有两个额外的显示器连接,当我关上它的盖子,我不想让它去睡觉。 但是,如果我断开显示器并closures盖子,我想让笔记本电脑进入睡眠状态(这样不会忘记)。
因此,我创build了一个应该在VGA / HDMI连接事件上执行的BASH脚本。 BASH脚本计算连接的显示器数量,如果只有1个,那么当盖子closures时,它将使笔记本电脑进入睡眠状态。
我有Ubuntu 14.04 LTS。 这是我迄今为止所做的:
创build了2个文件: displays_count_sleep.sh和on_hdmi_connected.rules
https://gist.github.com/nbtk123/9ffbf7541e47b9c0015f5c3e9f44b7c9
把这个on_hdmi_connected.rules放到/etc/udev/rules.d来捕捉事件:
SUBSYSTEM=="drm", RUN+="/bin/bash /home/nir/dev/scripts/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身份创build的。 运行“ udevadm test ”时,输出如链接上的文件“ udevadm_test_output ”中所示。
我不知道事件是否被捕获,但在真正的监视器(dis)连接上,脚本不运行。 它工作正常,如果我手动运行。