18 lines
756 B
Bash
18 lines
756 B
Bash
# Invoked by the fred-lock wrapper, with coreutils, systemd and qs on PATH.
|
|
set -euo pipefail
|
|
|
|
timeout 5s systemctl --user start quickshell-lock.service
|
|
deadline=$((SECONDS + 10))
|
|
while (( SECONDS < deadline )); do
|
|
# Select the running service, including one from an older generation.
|
|
locker_pid=$(timeout 1s systemctl --user show quickshell-lock.service --property=MainPID --value)
|
|
if [[ "$locker_pid" =~ ^[1-9][0-9]*$ ]] &&
|
|
timeout 1s qs ipc --pid "$locker_pid" call lock lock >/dev/null 2>&1 &&
|
|
secure=$(timeout 1s qs ipc --pid "$locker_pid" call lock secure 2>/dev/null) &&
|
|
[[ "$secure" == true ]]; then
|
|
exit 0
|
|
fi
|
|
sleep 0.1
|
|
done
|
|
echo "The compositor did not confirm a secure session lock" >&2
|
|
exit 1
|