xidlehook 使用教程
项目介绍
xidlehook 是一个通用的 xautolock 替代品,它可以在计算机空闲一段时间后执行指定的命令。与 xautolock 相比,xidlehook 提供了更多的功能,例如允许“取消器”在检测到新的用户活动时撤销计时器操作,支持无限数量的计时器(前提是有足够的资源),不限于锁定屏幕,多个实例可以同时运行等。
项目快速启动
安装
推荐使用 Nix 包管理器进行安装,这样可以获得一个合理的默认配置以及所有必需的库:
nix-env -iA nixpkgs.xidlehook
如果你想要使用最新的 master 分支,可以使用以下命令:
nix-env -if https://gitlab.com/jD91mZM2/xidlehook/-/archive/master/xidlehook-master.tar.gz
配置和启动
以下是一个简单的配置示例,使用 slock
程序在空闲 15 分钟后锁定屏幕:
xidlehook --not-when-audio --not-when-fullscreen --timer 900 '/usr/bin/slock' ''
应用案例和最佳实践
使用 xidlehook 锁定屏幕
一个常见的用例是使用 xidlehook 来运行一个锁屏程序。以下是一个使用 i3lock
和屏幕变暗支持的示例:
xidlehook --not-when-audio --not-when-fullscreen --timer 900 'i3lock -c 000000 -n' ''
手动触发锁屏
你可以使用 xidlehook-client
手动触发锁屏。首先,你需要知道计时器的 ID,可以通过查询计时器信息来获取:
xidlehook-client --socket /path/to/xidlehook.sock query
然后,你可以绑定一个热键或 bash 别名来锁定屏幕:
xidlehook-client --socket /path/to/xidlehook.sock control --action trigger --timer <my_timer_id>
典型生态项目
与 redshift 集成
如果你使用 redshift
来调整屏幕色温,可能会遇到屏幕亮度被 redshift
快速覆盖的问题。你可以通过指定屏幕亮度来解决这个问题:
redshift -b 0.5:0.5
与 systemd 集成
如果你使用的是使用 systemd 的发行版,可以使用 systemd 来确保 xidlehook 在登录时总是启动。你可以在用户级别通过放置以下服务文件来实现:
[Unit]
Description=Automatic Screen Locker
[Service]
Type=simple
Environment=DISPLAY=:0
Environment=XIDLEHOOK_SOCK=%t/xidlehook.socket
ExecStart=/usr/bin/xidlehook --not-when-audio --not-when-fullscreen --socket $XIDLEHOOK_SOCK --timer 900 '/usr/bin/slock' ''
[Install]
WantedBy=multi-user.target
将上述服务文件放置在 $XDG_CONFIG_HOME/systemd/user/xidlehook.service
(通常是 $HOME/.config/systemd/user/xidlehook.service
)。