Build the Panama Hyprland desktop
This commit is contained in:
Executable
+41
@@ -0,0 +1,41 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
fail() {
|
||||
printf 'focus-session expiry: %s\n' "$1" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
cleanup() {
|
||||
qs ipc call focus end >/dev/null 2>&1 || true
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
qs ipc call focus end >/dev/null 2>&1 || true
|
||||
qs ipc call focus start >/dev/null
|
||||
|
||||
state_file=$(find "${XDG_STATE_HOME:-$HOME/.local/state}/quickshell/by-shell" -name focus-session.json -print -quit)
|
||||
[[ -n "$state_file" ]] || fail 'persistent state file was not created'
|
||||
|
||||
expired=$(mktemp "${state_file}.expired.XXXXXX")
|
||||
jq '.paused = false | .deadlineMs = 1' "$state_file" >"$expired"
|
||||
chmod --reference="$state_file" "$expired"
|
||||
mv "$expired" "$state_file"
|
||||
|
||||
qs kill >/dev/null
|
||||
qs --daemonize >/dev/null
|
||||
|
||||
status=""
|
||||
for _ in $(seq 1 60); do
|
||||
status=$(qs ipc call focus status 2>/dev/null || true)
|
||||
if jq -e '.active == false' <<<"$status" >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
sleep 0.2
|
||||
done
|
||||
|
||||
jq -e '.active == false and .caffeine == false and .doNotDisturb == false' <<<"$status" >/dev/null || fail 'expired session was not completed and released'
|
||||
|
||||
trap - EXIT
|
||||
printf 'focus-session expiry: PASS\n'
|
||||
Reference in New Issue
Block a user