Files
Panama/tests/quickshell/focus-session-restart.sh
T

41 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
fail() {
printf 'focus-session restart: %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
qs ipc call focus pause >/dev/null
before=$(qs ipc call focus status)
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 == true and .paused == true' <<<"$status" >/dev/null 2>&1; then
break
fi
sleep 0.2
done
jq -e '.active == true' <<<"$status" >/dev/null || fail 'active session was not restored'
jq -e '.paused == true' <<<"$status" >/dev/null || fail 'paused state was not restored'
[[ "$(jq -r .remaining <<<"$status")" == "$(jq -r .remaining <<<"$before")" ]] || fail 'paused remainder changed across restart'
jq -e '.doNotDisturb == true' <<<"$status" >/dev/null || fail 'Do Not Disturb was not reclaimed'
jq -e '.caffeine == true' <<<"$status" >/dev/null || fail 'Caffeine was not reclaimed'
cleanup
trap - EXIT
printf 'focus-session restart: PASS\n'