Build the Panama Hyprland desktop
This commit is contained in:
Executable
+59
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
fail() {
|
||||
printf 'settings window contract: %s\n' "$1" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
cleanup() {
|
||||
qs ipc call settings close >/dev/null 2>&1 || true
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
qs ipc show | rg -q '^target settings$' || fail 'settings IPC target is missing'
|
||||
qs ipc call settings open >/dev/null
|
||||
|
||||
for _ in $(seq 1 40); do
|
||||
if hyprctl -j clients | jq -e '[.[] | select(.title == "Panama Settings")] | length == 1' >/dev/null; then
|
||||
break
|
||||
fi
|
||||
sleep 0.1
|
||||
done
|
||||
hyprctl -j clients | jq -e '[.[] | select(.title == "Panama Settings")] | length == 1' >/dev/null \
|
||||
|| fail 'exactly one Settings window did not map'
|
||||
hyprctl -j clients | jq -e '.[] | select(.title == "Panama Settings" and .floating == false)' >/dev/null \
|
||||
|| fail 'Settings window is not tiled'
|
||||
|
||||
qs ipc call settings page displays >/dev/null
|
||||
[[ "$(qs ipc call settings status | jq -r .page)" == "displays" ]] || fail 'Displays page did not route'
|
||||
|
||||
qs ipc call settings page desktop >/dev/null
|
||||
[[ "$(qs ipc call settings status | jq -r .page)" == "desktop" ]] || fail 'Desktop page did not route'
|
||||
|
||||
address="$(hyprctl -j clients | jq -r '.[] | select(.title == "Panama Settings") | .address')"
|
||||
hyprctl dispatch "hl.dsp.window.close({ window = \"address:$address\" })" >/dev/null
|
||||
for _ in $(seq 1 40); do
|
||||
[[ "$(qs ipc call settings status | jq -r .open)" == "false" ]] && break
|
||||
sleep 0.1
|
||||
done
|
||||
[[ "$(qs ipc call settings status | jq -r .open)" == "false" ]] || fail 'compositor close did not synchronize shell state'
|
||||
|
||||
qs ipc call settings open >/dev/null
|
||||
for _ in $(seq 1 40); do
|
||||
hyprctl -j clients | jq -e '.[] | select(.title == "Panama Settings")' >/dev/null && break
|
||||
sleep 0.1
|
||||
done
|
||||
|
||||
qs ipc call settings close >/dev/null
|
||||
for _ in $(seq 1 40); do
|
||||
if ! hyprctl -j clients | jq -e '.[] | select(.title == "Panama Settings")' >/dev/null; then
|
||||
trap - EXIT
|
||||
printf 'settings window contract: PASS\n'
|
||||
exit 0
|
||||
fi
|
||||
sleep 0.1
|
||||
done
|
||||
|
||||
fail 'Settings window did not close'
|
||||
Reference in New Issue
Block a user