add fingerprint auto-shutoff on lid close to docs
This commit is contained in:
93
arch.md
93
arch.md
@@ -192,10 +192,101 @@ sudo ufw enable
|
|||||||
|
|
||||||
```conf
|
```conf
|
||||||
# fingerprint auth
|
# fingerprint auth
|
||||||
auth sufficient pam_unix.so try_first_pass likeauth nullok
|
|
||||||
auth sufficient pam_fprintd.so
|
auth sufficient pam_fprintd.so
|
||||||
```
|
```
|
||||||
|
|
||||||
|
sudo vim /etc/pam.d/system-auth and at the top of the file:
|
||||||
|
|
||||||
|
```conf
|
||||||
|
# fingerprint auth
|
||||||
|
auth sufficient pam_fprintd.so
|
||||||
|
```
|
||||||
|
|
||||||
|
**Turn Off Fingerprint When Laptop Lid Closed**
|
||||||
|
|
||||||
|
To disable fingerprint authentication when the laptop lid is closed, and
|
||||||
|
re-enable when it is reopened, we will use acpid to bind to the button/lid.*
|
||||||
|
event to a custom script that will stop and mask the fprintd service on lid
|
||||||
|
close, and unmask and start the fprintd service on lid open.
|
||||||
|
|
||||||
|
We also check that the HDMI cable is connected by testing the contents of
|
||||||
|
/sys/class/drm/card0-HDMI-A-1/status.
|
||||||
|
|
||||||
|
Follow the steps below:
|
||||||
|
|
||||||
|
1. `pacman -S acpid` and then `systemctl enable --now acpid`
|
||||||
|
1. Create a .locks file in your home dir: `mkdir ~/.locks`
|
||||||
|
2. Create file /etc/acpi/laptop-lid.sh with the following contents:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
lock=/home/ducoterra/.locks/fprint-disabled.lock
|
||||||
|
|
||||||
|
if grep -Fq closed /proc/acpi/button/lid/LID0/state # &&
|
||||||
|
# This is used to detect if a display is connected.
|
||||||
|
# For USB C displayport use:
|
||||||
|
# grep -Fxq connected /sys/class/drm/card1-DP-2/status
|
||||||
|
# For hdmi use:
|
||||||
|
# grep -Fxq connected /sys/class/drm/card0-HDMI-A-1/status
|
||||||
|
then
|
||||||
|
touch "$lock"
|
||||||
|
systemctl stop fprintd
|
||||||
|
systemctl mask fprintd
|
||||||
|
elif [ -f "$lock" ]
|
||||||
|
then
|
||||||
|
systemctl unmask fprintd
|
||||||
|
systemctl start fprintd
|
||||||
|
rm -f "$lock"
|
||||||
|
fi
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Make the file executable with
|
||||||
|
|
||||||
|
`chmod +x /etc/acpi/laptop-lid.sh`
|
||||||
|
|
||||||
|
4. Create file /etc/acpi/events/laptop-lid with the following contents:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
event=button/lid.*
|
||||||
|
action=/etc/acpi/laptop-lid.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
5. Restart the acpid service with:
|
||||||
|
|
||||||
|
`systemctl restart acpid`
|
||||||
|
|
||||||
|
Now the fingerprint will be used only when the lid is open.
|
||||||
|
|
||||||
|
In order to restore the correct state of the fprintd service if you
|
||||||
|
disconnect/reconnect while the laptop is off, you may call the above script
|
||||||
|
from a systemd init file. The steps to do this are the following:
|
||||||
|
|
||||||
|
1. Create a file named /etc/systemd/system/laptop-lid.service with the following contents:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
[Unit]
|
||||||
|
Description=Laptop Lid
|
||||||
|
After=suspend.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/etc/acpi/laptop-lid.sh
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
WantedBy=suspend.target
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Reload the systemd config files with
|
||||||
|
|
||||||
|
`sudo systemctl daemon-reload`
|
||||||
|
|
||||||
|
3. Start and enable the service with
|
||||||
|
|
||||||
|
`sudo systemctl enable --now laptop-lid.service`
|
||||||
|
|
||||||
|
Now the status should be correct even after connecting/disconnecting when the computer is off.
|
||||||
|
|
||||||
### AppImage Support
|
### AppImage Support
|
||||||
|
|
||||||
fuse is required to run most appimages.
|
fuse is required to run most appimages.
|
||||||
|
|||||||
Reference in New Issue
Block a user