我读了很多关于如何做到这一点的线索,但它对我不起作用。
我想要实现的目标是:
当我的笔记本电脑关闭盖子时连接了2个额外的显示器时,我不想让它进入睡眠状态。但是,如果我断开显示器并关闭盖子,我想让笔记本电脑进入睡眠状态(这样,不要忘记它)。
因此,我创建了一个应该在VGA / HDMI连接事件上执行的BASH脚本。 BASH脚本计算连接的显示器数量,如果只有1,它将使盖子关闭时笔记本电脑进入睡眠状态。
我有Ubuntu 14.04 LTS。这就是我到目前为止所做的:
创建了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身份创建的。运行“udevadm test
”时,输出与链接上的文件“ udevadm_test_output ”相同。
我不知道该事件是否被捕获,但是在真正的监视器(dis)连接上,脚本不会运行。如果我手动运行它就可以了。