AtlatestRepositorysigil-wm
1
#!/usr/bin/env bash2
set -euo pipefail3
cd "$(dirname "$0")/.."4
make -j2 all build/protocol-client5
out=$PWD/build/receipts/window-hints6
mkdir -p "$out"7
runtime_dir=$(mktemp -d /tmp/sigil-wm-window-hints.XXXXXX)8
export XDG_RUNTIME_DIR=$runtime_dir WLR_BACKENDS=headless WLR_RENDERER=pixman WLR_HEADLESS_OUTPUTS=19
server_pid= client_pid=10
cleanup() {11
for child in "$client_pid" "$server_pid"; do12
[[ -z $child ]] || kill "$child" 2>/dev/null || true13
[[ -z $child ]] || wait "$child" 2>/dev/null || true14
done15
exec 3>&- || true16
rm -rf -- "$runtime_dir"17
}18
trap cleanup EXIT19
timeout 60 bash scripts/run-sigil -L src eval -f test/window-hints.sgl > "$out/server.log" 2>&1 &20
server_pid=$!21
await_line() {22
for ((attempt=0; attempt<800; attempt++)); do23
grep -q "$1" "$out/server.log" && return24
kill -0 "$server_pid"25
sleep 0.0526
done27
cat "$out/server.log"28
return 129
}30
await_line '^WAYLAND_SOCKET='31
export WAYLAND_DISPLAY32
WAYLAND_DISPLAY=$(sed -n 's/^WAYLAND_SOCKET=//p' "$out/server.log")33
mkfifo "$runtime_dir/control"34
exec 3<> "$runtime_dir/control"35
SIGIL_WM_CLIENT_FIXED=1 SIGIL_WM_CLIENT_CONTROL=1 SIGIL_WM_CLIENT_SIZE_CONTROL=1 timeout 50 build/protocol-client green 36000 3>&- < "$runtime_dir/control" > "$out/client.log" 2>&1 &36
client_pid=$!37
await_line '^WINDOW_HINTS_READY$'38
printf b >&339
wait "$server_pid"40
server_pid=41
cat "$out/server.log"42
grep -q '^WINDOW_HINTS=PASS ' "$out/server.log"