#!/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. "$@"