我已经在这个网站和其他网站上查看了数十个答案,试图调试我的 udev 规则,但无济于事。规则很简单:我想在我的屏幕锁定时锁定我的屏幕。尤比奇已拔掉插头。
- 我的规则在文件里
/etc/udev/rules.d/98-yubikey.rules
。 - 我已经尝试了这两种方法
# udevadm control --reload-rules && udevadm trigger
,只需重新启动计算机即可更新规则。
以下是我到目前为止尝试过的规则,其中没有一个会锁定屏幕(我已经测试过该脚本实际上在运行时会锁定屏幕)。
ACTION=="remove", SUBSYSTEM=="input", ATTRS{idVendor}=="XXXX", ATTRS{idProduct}=="YYYY", RUN+="/home/user/bin/lock_screen", OWNER="user"
ACTION=="add", SUBSYSTEM=="input", ENV{ID_VENDOR_ID}=="XXXX", ENV{ID_MODEL_ID}=="YYYY", RUN+="/home/user/bin/lock_screen", OWNER="user"
- 这些项目的各种组合,有或没有子系统/所有者(并且子系统作为 USB 而不是输入)。
答案1
我有一个配置为执行相同操作的系统,它看起来像这样:
SUBSYSTEM=="input", ACTION=="remove", RUN+="/usr/local/sbin/yubikey_gone"
然后脚本/usr/local/sbin/yubikey_gone
包含:
#!/bin/sh
if [ "x$ID_MODEL" != "xYubico_Yubikey_II" ]; then
exit 0
fi
exec su vandry -c "DISPLAY=:0.0 gnome-screensaver-command --lock"
这会在以下情况下调用脚本:任何输入设备被拔掉,然后脚本在继续之前测试它是否确实是 Yubikey。这不是正确的解决方案,但我一定在让它直接在 udev 配置文件中与设备模型测试一起工作时遇到了麻烦(我不记得为什么 - 该脚本已经很长时间没有被触及了)。这不是最好的方法,但至少有效。