- Copy
99-u2f_lock_screen.rules
to/etc/udev/rules.d
. - Copy
gnome_lock_all_sessions
to/usr/local/bin
. - Mark
gnome_lock_all_sessions
as executable:chmod +x /usr/local/bin/gnome_lock_all_sessions
- Reload udev:
udevadm control -R
Last active
April 9, 2025 14:05
-
-
Save jhass/070207e9d22b314d9992 to your computer and use it in GitHub Desktop.
Lock (Gnome) session when removing Yubico U2F key
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ACTION=="remove", SUBSYSTEM=="usb", ENV{ID_MODEL_FROM_DATABASE}=="Yubikey Touch U2F Security Key", RUN+="/usr/local/bin/gnome_lock_all_sessions" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# List available names | |
# dbus-send --session --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames | |
# Lock session (Gnome) | |
# dbus-send --session --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock | |
# Unlock session (Gnome) | |
#dbus-send --session --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.SetActive boolean:false | |
# Lock session (freedesktop) (no effect?) | |
# dbus-send --session --type=method_call --dest=org.freedesktop.ScreenSaver /org/freedesktop/ScreenSaver org.freedesktop.ScreenSaver.Lock | |
for bus in /run/user/*/bus; do | |
uid=$(basename $(dirname $bus)) | |
if [ $uid -ge 1000 ]; then | |
user=$(id -un $uid) | |
export DBUS_SESSION_BUS_ADDRESS=unix:path=$bus | |
if su -c 'dbus-send --session --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames' $user | grep org.gnome.ScreenSaver; then | |
su -c 'dbus-send --session --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock' $user | |
fi | |
fi | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
# Lock session (freedesktop/KDE) dbus-send --session --type=method_call --dest=org.freedesktop.ScreenSaver --print-reply --reply-timeout=20000 /org/freedesktop/ScreenSaver org.freedesktop.ScreenSaver.SetActive boolean:true