DPMS,盖子关闭时保持屏幕关闭

DPMS,盖子关闭时保持屏幕关闭

我有一台运行 Linux 的笔记本电脑。在我的 xorg 配置中,我设置了 DPMS,以便在发生多个事件时屏幕自动关闭。除此之外,我还将以下脚本与 ACPI 盖子打开/关闭事件绑定在一起:

#!/bin/sh

for i in $(pidof X); do
        CMD=$(ps --no-heading $i)

        XAUTH="$(echo $CMD | sed -n 's/.*-auth \(.*\)/\1/p')"
        DISPLAY="$(echo $CMD | sed -n 's/.* \(:[0-9]\) .*/\1/p')"

        # turn the display off or back on
        export XAUTHORITY=$XAUTH
        /usr/bin/xset -display $DISPLAY dpms force $1
done

基本上,这个脚本接受一个参数(“开”或“关”),然后遍历我所有正在运行的 X 会话并打开或关闭监视器。

这是我的问题。当我合上笔记本电脑的盖子时,屏幕会按预期关闭,但如果发生鼠标事件(例如如果有东西撞到桌子...),即使屏幕已合上,屏幕也会重新打开(我可以通过笔记本电脑的侧面看到灯光)。

如果盖子关闭,有没有办法防止屏幕在鼠标事件期间打开?

答案1

在文件中添加以下行/etc/acpi/lid.sh

#open
screenon
chvt 7
#close
chvt 12
screenoff

当盖子关闭时,这将切换到控制台,并避免 X 检测鼠标移动。

答案2

你也许可以用 xrandr 做一些神奇的事情;例如

xrandr——输出LVDS——关闭

将其关闭,然后

xrandr——输出LVDS——自动

将其恢复。将 LVDS 替换为笔记本电脑屏幕输出的名称。

这样做的缺点是,如果出现问题,可能很难通过电源循环让屏幕恢复正常。

答案3

按照禁用鼠标的想法,您可以使用 xinput 以更有选择性和更安全的方式进行操作:

# open
DISPLAY=:0.0 xinput set-int-prop 12 "Device Enabled" 8 1
# close
DISPLAY=:0.0 xinput set-int-prop 12 "Device Enabled" 8 0

您可以使用以下方式找到 ID(此处为 12):xinput --list

答案4

阻止 X 发出活动信号并在接收到活动事件时禁用 DPMS 似乎有点困难。

但是,既然您已经进入了脚本领域,那么在盖子关闭时禁用 USB 设备怎么样?只需删除模块或暂停 USB 设备即可实现效果。类似这样的操作可能会有效:

echo suspend > /sys/bus/usb/devices/usb1/power/level

如果此方法有效,则当盖子关闭时,你的 X 将不会收到任何事件。

相关内容