#!/bin/bash

# Walker (with runAsService = true) and elephant are Home Manager user
# services. Restart via systemd so the new process inherits the full graphical
# session environment — the pkill/uwsm-app dance left a window where the
# launcher would come back up with stale theming.

restart_services() {
  if systemctl --user list-unit-files elephant.service >/dev/null 2>&1; then
    systemctl --user restart elephant.service
  fi

  if systemctl --user list-unit-files walker.service >/dev/null 2>&1; then
    systemctl --user restart walker.service
  elif systemctl --user is-enabled app-walker@autostart.service &>/dev/null; then
    systemctl --user restart app-walker@autostart.service
  else
    echo -e "\e[31mUnable to restart Walker -- RESTART MANUALLY\e[0m"
  fi
}

if (( EUID == 0 )); then
  SCRIPT_OWNER=$(stat -c '%U' "$0")
  USER_UID=$(id -u "$SCRIPT_OWNER")
  systemd-run --uid="$SCRIPT_OWNER" --setenv=XDG_RUNTIME_DIR="/run/user/$USER_UID" \
    bash -c "$(declare -f restart_services); restart_services"
else
  restart_services
fi
