当我离开电脑一段时间时,我喜欢将显示器置于省电/待机模式。如果不是鼠标过于敏感,那就没问题了。有时驱动程序会读取一些肉眼看不见的移动(即光标),从而破坏省电模式。它会再等待 10 分钟,然后才回到待机状态。
我的解决方法是将以下脚本绑定到C-S-q
:
xlock -startCmd 'xset dpms 2 2 2' -endCmd 'xset dpms 600 1200 1300' -mode blank -echokeys -timeelapsed +usefirst
通过使用,xset
我将值设置为每次 2 秒,然后进入待机状态。无论如何,这并不好。有时我想在输入密码之前阅读一些很酷的运势。我可以让光标保持移动,但它很笨拙。(顺便说一句,xlock 的选项mousemotion
没有帮助——它只是隐藏光标,但显示屏仍然会亮起。)
所以问题是:有没有办法让显示器进入待机状态并保持待机状态直到按下键盘键?我正在运行 gentoo 和最新的 Xorg,但我希望答案不必特定于发行版。
基本上答案可以很简单如何在命令行中启用/禁用鼠标? 如果 DPMS 不知道这个想法的话,我认为这就可以完成工作。
答案1
有一个很棒的帖子@pbm 在 Unix SE 网站上介绍了这一内容。
简而言之,首先使用xinput list
获取鼠标的设备 ID,然后使用
xinput --set-prop [ID#] "Device Enabled" "0"
和
xinput --set-prop [ID#] "Device Enabled" "1"
禁用和启用鼠标。
我刚刚通过禁用鼠标然后调用 来测试这些xset dpms force standby
。挥动鼠标几秒钟不会干扰屏幕,但按一个键就可以了。然后使用第二个命令将鼠标恢复正常,包括我的默认启动脚本为我设置的“恒定减速”设置。
您应该能够将这两个命令传递给-startCmd
和-endCmd
选项以xlock
获得您想要的结果。
答案2
我在 Ubuntu 中这样做:
#!/bin/bash
# allow only one instance
r=$(pidof -x -o $$ ssmonoff.sh)
set -- $r
if [ "${#@}" -ge 1 ]; then
echo "Script already running. Exit..."
exit
fi
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | ( while read line; do
if echo $line | grep "boolean true" &> /dev/null; then
xinput --set-prop "Dell Premium USB Optical Mouse" "Device Enabled" "0"
xset dpms force off
else
xinput --set-prop "Dell Premium USB Optical Mouse" "Device Enabled" "1"
fi
done )
一些说明:
- 我也强制关闭显示器。
- 最好使用全名而不是ID。
我希望这个对你有用。
答案3
与MiLo答案类似但没有dbus:
MOUSE="Logitech Wireless Mouse"
# Disable mouse
xinput --set-prop "${MOUSE}" "Device Enabled" "0"
# Turn off screen
xset dpms force off
# Wait to screen to be on again to enable mouse
while true; do
status=$(xset q | grep -o "^\s*Monitor is .*" | grep -o -e On -e Off)
if [[ $status == "On" ]]; then
xinput --set-prop "${MOUSE}" "Device Enabled" "1"
exit 0
fi
sleep 1
done