Spawning quickshell directly from omarchy-restart-shell leaked transient environment variables from the calling terminal, SSH connection, or development tool into the fresh shell. Dispatch the launch through Hyprland instead so it inherits the canonical session environment, same as autostart. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
37 lines
1.6 KiB
Bash
Executable File
37 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# omarchy:summary=Restart the Omarchy shell
|
|
# omarchy:examples=omarchy restart shell
|
|
|
|
CONFIG_DIR="$OMARCHY_PATH/shell"
|
|
[[ -f $CONFIG_DIR/shell.qml ]] || { echo "Omarchy shell config not found: $CONFIG_DIR" >&2; exit 1; }
|
|
|
|
# Allow running from outside the session (e.g. over ssh) by deriving the
|
|
# Hyprland instance signature from the newest instance runtime dir.
|
|
if [[ -z ${HYPRLAND_INSTANCE_SIGNATURE:-} ]]; then
|
|
hypr_dir=$(find "${XDG_RUNTIME_DIR:-/run/user/$UID}/hypr" -mindepth 1 -maxdepth 1 -type d -printf '%T@ %p\n' 2>/dev/null | sort -n | tail -n 1 | cut -d' ' -f2-)
|
|
[[ -n $hypr_dir ]] && export HYPRLAND_INSTANCE_SIGNATURE=${hypr_dir##*/}
|
|
fi
|
|
|
|
if [[ $(hyprctl -j monitors 2>/dev/null) == *'"LOCK"'* ]]; then
|
|
echo "Refusing to restart Omarchy shell while the session is locked." >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Each kill stops the oldest matching instance and only returns once it has
|
|
# fully exited, so the no-duplicate launch below can't race a dying shell.
|
|
# Requires our quickshell-git build; 0.3.0's kill returns immediately.
|
|
while timeout 5 quickshell kill -p "$CONFIG_DIR" --any-display >/dev/null 2>&1; do :; done
|
|
|
|
# Spawn from Hyprland so the shell inherits the canonical session environment,
|
|
# not transient variables from a terminal, SSH connection, or development tool.
|
|
hyprctl dispatch 'hl.dsp.exec_cmd("quickshell -n -p $OMARCHY_PATH/shell")' >/dev/null
|
|
|
|
for (( attempt = 0; attempt < 20; attempt++ )); do
|
|
OMARCHY_SHELL_IPC_TIMEOUT=0.5s omarchy-shell shell ping >/dev/null 2>&1 && exit 0
|
|
sleep 0.1
|
|
done
|
|
|
|
echo "Omarchy shell did not become ready after restart." >&2
|
|
exit 1
|