aboutsummaryrefslogtreecommitdiffhomepage
path: root/gtk-broadway-run.sh
diff options
context:
space:
mode:
Diffstat (limited to 'gtk-broadway-run.sh')
-rwxr-xr-xgtk-broadway-run.sh28
1 files changed, 28 insertions, 0 deletions
diff --git a/gtk-broadway-run.sh b/gtk-broadway-run.sh
new file mode 100755
index 0000000..9b20f7b
--- /dev/null
+++ b/gtk-broadway-run.sh
@@ -0,0 +1,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.
+"$@"