#!/bin/bash set -euo pipefail repo_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/../.." && pwd)" qs_dir="$repo_dir/config/dot/quickshell" osd="$qs_dir/modules/osd/Osd.qml" state="$qs_dir/services/OsdState.qml" shell_file="$qs_dir/shell.qml" keybinds="$repo_dir/config/dot/hypr/keybinds.lua" fail() { printf 'osd ui contract: %s\n' "$1" >&2 exit 1 } [[ -f "$osd" ]] || fail 'Prism OSD surface is missing' [[ -f "$state" ]] || fail 'OSD presentation state is missing' [[ -f "$qs_dir/modules/osd/qmldir" ]] || fail 'OSD module manifest is missing' rg -q '^import Quickshell$' "$state" \ || fail 'OSD singleton does not import the Quickshell Singleton type' rg -Fq 'import qs.modules.osd' "$shell_file" || fail 'shell does not import the OSD module' [[ "$(rg -c '^[[:space:]]*Osd \{\}' "$shell_file")" -eq 1 ]] \ || fail 'shell does not create exactly one OSD per screen' rg -Fq 'target: "osd"' "$shell_file" || fail 'OSD IPC target is missing' rg -Fq 'OsdState.progress(kind, value, maximum, label)' "$shell_file" \ || fail 'progress IPC is not wired to OSD state' rg -Fq 'OsdState.message(kind, label)' "$shell_file" \ || fail 'message IPC is not wired to OSD state' rg -Fq 'WlrLayershell.namespace: "qs-popover-osd"' "$osd" \ || fail 'OSD does not use the existing Prism blur namespace' rg -Fq 'WlrLayershell.keyboardFocus: WlrKeyboardFocus.None' "$osd" \ || fail 'OSD may steal keyboard focus' rg -Fq 'mask: Region {}' "$osd" || fail 'OSD may intercept pointer input' rg -Fq 'PrismEdge {' "$osd" || fail 'OSD is missing the Prism signature edge' rg -Fq 'font.features: Theme.tabularFigures' "$osd" \ || fail 'changing percentages do not use tabular figures' rg -Fq '$HOME/.config/quickshell/scripts/panama-osd' "$keybinds" \ || fail 'keybinds do not use the deployed Panama OSD helper' for action in \ 'volume up 6' \ 'volume down 6' \ 'volume toggle' \ 'microphone toggle' \ 'volume up 1' \ 'volume down 1' \ 'media play-pause' \ 'media next' \ 'media previous' \ 'media stop' \ 'brightness up 5' \ 'brightness down 5'; do rg -Fq "osd(\"$action\")" "$keybinds" \ || fail "keybind is not routed through panama-osd $action" done printf 'osd ui contract: PASS\n'