我有一个 udev 规则,当插入 USB 设备(任何设备)时执行一个简单的命令。
规则是:
ACTION=="add", SUBSYSTEM=="usb", RUN+="/bin/sh -c 'xhost +local:pi; sudo -u pi xscreensaver-command -lock'"
它工作得很好,当我将东西插入任何 USB 端口时,屏幕就会被遮挡。
但是当我已经插入设备并启动时,这不起作用。我希望在屏幕已经锁定的情况下启动。
我该怎么做才能在启动时执行此规则? 有可能吗?
答案1
X 服务器启动较晚,因此您的脚本在启动之前就白跑了。创建一个 python 脚本作为守护进程来监视使用的设备可能是值得的pyudev
。
答案2
这是我为 Sharkforce 鼠标使用的 Python 脚本...应该很容易在您的场景中采用它...有关更多信息,请参阅:https://pyudev.readthedocs.io/en/v0.13/api/index.html
#!/usr/bin/env python3
from pyudev import Context
import os
context = Context()
for device in context.list_devices(subsystem='input', ID_INPUT_MOUSE=True):
if device.sys_name.startswith('event'):
name = device.parent['NAME']
#print(name)
test = name.find('SHARKFORCE')
if test != -1:
os.system('synclient TouchpadOff=1')