Only allow fingerprint setup if a sensor is detected

This commit is contained in:
David Heinemeier Hansson
2025-07-09 20:46:43 -04:00
parent 6434fddb59
commit c567dbffaa

View File

@ -1,15 +1,18 @@
#!/bin/bash #!/bin/bash
yay -S --noconfirm --needed fprintd libfprint yay -S --noconfirm --needed fprintd libfprint lsusb
# Add fingerprint authentication as an option for sudo if ! lsusb | grep -iq fingerprint; then
if ! grep -q pam_fprintd.so /etc/pam.d/sudo; then echo "No fingerprint sensor detected."
sudo sed -i '1i auth sufficient pam_fprintd.so' /etc/pam.d/sudo else
fi # Add fingerprint authentication as an option for sudo
if ! grep -q pam_fprintd.so /etc/pam.d/sudo; then
sudo sed -i '1i auth sufficient pam_fprintd.so' /etc/pam.d/sudo
fi
# Add fingerprint authentication as an option for hyprpolkitagent # Add fingerprint authentication as an option for hyprpolkitagent
if [ ! -f /etc/pam.d/polkit-1 ] || ! grep -q pam_fprintd.so /etc/pam.d/polkit-1; then if [ ! -f /etc/pam.d/polkit-1 ] || ! grep -q pam_fprintd.so /etc/pam.d/polkit-1; then
sudo tee /etc/pam.d/polkit-1 >/dev/null <<'EOF' sudo tee /etc/pam.d/polkit-1 >/dev/null <<'EOF'
auth required pam_unix.so auth required pam_unix.so
auth optional pam_fprintd.so auth optional pam_fprintd.so
@ -17,18 +20,19 @@ account required pam_unix.so
password required pam_unix.so password required pam_unix.so
session required pam_unix.so session required pam_unix.so
EOF EOF
fi fi
systemctl --user restart hyprpolkitagent systemctl --user restart hyprpolkitagent
# Enroll the first finger # Enroll the first finger
echo -e "\e[32m\nLet's setup your right index finger as the first fingerprint.\nKeep moving the finger around on sensor until the process completes.\n\e[0m" echo -e "\e[32m\nLet's setup your right index finger as the first fingerprint.\nKeep moving the finger around on sensor until the process completes.\n\e[0m"
sudo fprintd-enroll $USER sudo fprintd-enroll $USER
echo -e "\e[32m\nNow let's verify that it's working correctly.\e[0m\n" echo -e "\e[32m\nNow let's verify that it's working correctly.\e[0m\n"
if fprintd-verify; then if fprintd-verify; then
echo -e "\e[32m\nPerfect! Now you can use your fingerprint on the lock screen (Super + Escape).\e[0m" echo -e "\e[32m\nPerfect! Now you can use your fingerprint on the lock screen (Super + Escape).\e[0m"
else else
echo -e "\e[31m\nSomething went wrong. Maybe try again?\e[0m" echo -e "\e[31m\nSomething went wrong. Maybe try again?\e[0m"
fi
fi fi