#!/bin/bash # Restart an application by killing it and relaunching via uwsm. # Usage: nomarchy-restart-app [application-args...] # # We wait for the old process to actually exit before launching the # new one. Without the wait, the new instance starts while the old # one's wayland surface is still mapped — visible as ghosting on # layer-shell apps and double-instance briefly for everything else. # Same race that produced the waybar theme-switch artifacts before # 386da51 moved waybar to a SIGUSR2-reload path. app="$1" shift || true if pgrep -x "$app" >/dev/null 2>&1; then pkill -x "$app" 2>/dev/null || true # Poll for graceful exit, up to ~1.5s. for _ in $(seq 1 15); do pgrep -x "$app" >/dev/null 2>&1 || break sleep 0.1 done # Anything still running: SIGKILL it. Without this, a misbehaving # process can hold the surface indefinitely and the new instance # races on top. pkill -KILL -x "$app" 2>/dev/null || true fi setsid uwsm-app -- "$app" "$@" >/dev/null 2>&1 &