sistema: bloquear con slock antes de suspender y evitar la doble suspensión
elogind ignora la tapa y los botones para que solo actúe acpid (zzz), y un hook de zzz lanza slock antes de suspender. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MymT1wzMgXhfC3ZwHqNAVF
This commit is contained in:
parent
6e3577087b
commit
c736ea8b01
2 changed files with 33 additions and 0 deletions
11
sistema/etc/elogind/logind.conf.d/10-acpid.conf
Normal file
11
sistema/etc/elogind/logind.conf.d/10-acpid.conf
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
# acpid ya se encarga de la tapa y del botón de suspender (llama a zzz) y del
|
||||||
|
# botón de encendido. Si elogind también reacciona, el portátil se suspende
|
||||||
|
# dos veces: al abrir la tapa se enciende, se vuelve a suspender y luego
|
||||||
|
# arranca. Así solo lo gestiona acpid.
|
||||||
|
[Login]
|
||||||
|
HandlePowerKey=ignore
|
||||||
|
HandleSuspendKey=ignore
|
||||||
|
HandleHibernateKey=ignore
|
||||||
|
HandleLidSwitch=ignore
|
||||||
|
HandleLidSwitchExternalPower=ignore
|
||||||
|
HandleLidSwitchDocked=ignore
|
||||||
22
sistema/etc/zzz.d/suspend/10-slock
Executable file
22
sistema/etc/zzz.d/suspend/10-slock
Executable file
|
|
@ -0,0 +1,22 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# Bloquear con slock ANTES de suspender, para que al volver no se vea el
|
||||||
|
# escritorio. zzz ejecuta este hook como root; slock se lanza como el
|
||||||
|
# usuario de la sesión de dwm, con su DISPLAY y XAUTHORITY.
|
||||||
|
|
||||||
|
pgrep -x slock >/dev/null && exit 0
|
||||||
|
|
||||||
|
pid=$(pgrep -xo dwm) || exit 0
|
||||||
|
user=$(getent passwd "$(stat -c %u "/proc/$pid")" | cut -d: -f1)
|
||||||
|
env=$(tr '\0' '\n' <"/proc/$pid/environ" | grep -E '^(DISPLAY|XAUTHORITY)=')
|
||||||
|
[ -n "$user" ] && [ -n "$env" ] || exit 0
|
||||||
|
|
||||||
|
env $env setsid chpst -u "$user" /usr/local/bin/slock >/dev/null 2>&1 &
|
||||||
|
|
||||||
|
# Esperar a que slock arranque y tape la pantalla (máximo 2 s) antes de
|
||||||
|
# dejar que zzz siga con la suspensión.
|
||||||
|
i=0
|
||||||
|
while ! pgrep -x slock >/dev/null && [ "$i" -lt 20 ]; do
|
||||||
|
sleep 0.1
|
||||||
|
i=$((i + 1))
|
||||||
|
done
|
||||||
|
sleep 0.5
|
||||||
Loading…
Add table
Add a link
Reference in a new issue