aboutsummaryrefslogtreecommitdiffhomepage
path: root/gtk-broadway-run.sh
blob: 9b20f7b6e709b412157f28c919631b596d2ca2e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/sh
# ./gtk-broadway-run.sh PROGRAM ARGS...
# Starts PROGRAM under Gtk with the Broadway backend.
#
# This is meant as a more reliable replacement to xvfb-run
# when building SciTECO on headless systems.
# WARNING: This will block indefinitely when letting
# SciTECO (or any Gtk app) start up to its UI.
set -e

export GDK_BACKEND=broadway

# mktemp would create the file already
BROADWAY_SOCKET=/tmp/gtk-broadway.sock.$$

broadwayd --unixsocket $BROADWAY_SOCKET >/dev/null &
BROADWAY_PID=$!
trap "kill $BROADWAY_PID; rm -f $BROADWAY_SOCKET" EXIT

# Wait for broadway to start up.
# broadwayd might also die in the meantime.
while kill -0 $BROADWAY_PID >/dev/null && [ ! -S $BROADWAY_SOCKET ]; do
	# `sleep 0.1` might be unportable.
	sleep 0.1 || sleep 1
done

# We don't exec, so we can still clean up with the trap afterwards.
"$@"