Bildschirmsperre beim Abziehen von USB-Devices

Nach etwas Bastelei klappt es jetzt endlich:

Automatisch den Bildschirm sperren wenn ich meinen U2F-Stick vom Rechner ziehe.

Wegen der Bastelei möchte ich kurz aufschreiben wie es klappt.

Vorweg: Wir brauchen die product id vom Stick, die über udev ausgelesen werden kann. Dafür widerrum wird der device-path gebraucht, für den ich nicht wirklich weiß wie man den bekommt, außer ausprobieren.

Also, Stick raus, gucken welche Dateinamen in /sys/bus/usb/devices/ liegen, Stick rein, gucken welche Namen dazu gekommen sind. Bei mir war es 2-1.

Danach:

udevadm info -p /sys/bus/usb/devices/2-1

Die (gekürzte) Ausgabe:

P: /devices/pci0000:00/0000:00:14.0/usb2/2-1
N: bus/usb/002/029
E: BUSNUM=002
E: DEVNAME=/dev/bus/usb/002/029
....
E: PRODUCT=123/456/7890
.....

Mit dem Wert von PRODUCT, dem eigenen Homeverzeichnis und Nutzernamen wird folgende udev-Regel darauf:

ACTION=="remove", ENV{PRODUCT}=="123/456/7890", ENV{XAUTHORITY}="<HOME_DIR>/.Xauthority", ENV{DISPLAY}=":0", RUN+="/usr/bin/su <USER> -c /usr/bin/xscreensaver-command -lock"

die ich in /etc/udev/rules.d/20-u2fxlock.rules gespeichert habe.

Danach Regeln neu laden:

sudo udevadm control --reload

Und es funktionierte.