Files
arthur-os/bin/omarchy-shell-ipc
T
Ryan Hughes c7da0f74aa Replace bar-settings with unified settings plugin
Consolidates bar-settings into a single 'settings' plugin with sidebar
categories: Defaults, Style, Bar, System, Plugins. Updates supporting
commands (omarchy-launch-settings, omarchy-style-corners-quickshell,
omarchy-theme-list-with-previews, omarchy-hyprland-monitor-scaling-set)
and refreshes sidebar glyphs to Nerd Font icons.
2026-05-14 02:25:05 -04:00

46 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
# omarchy:summary=Send an IPC call to omarchy-shell, starting it if not running
# omarchy:hidden=true
if [[ $# -eq 0 || $1 == "-h" || $1 == "--help" ]]; then
cat <<USAGE
Usage: omarchy-shell-ipc <target> <method> [args...]
Starts omarchy-shell if not running, then forwards a quickshell ipc call.
Examples:
omarchy-shell-ipc shell ping
omarchy-shell-ipc shell summon omarchy.settings "{}"
omarchy-shell-ipc shell hide omarchy.image-picker
omarchy-shell-ipc shell listPlugins
omarchy-shell-ipc shell listShellConfig
omarchy-shell-ipc shell rescanPlugins
omarchy-shell-ipc image-selector ping
omarchy-shell-ipc image-selector cancel ""
USAGE
exit 0
fi
OMARCHY_PATH="${OMARCHY_PATH:-$HOME/.local/share/omarchy}"
SHELL_DIR="$OMARCHY_PATH/default/quickshell/omarchy-shell"
# Serialize concurrent invocations so two CLI callers don't both spawn the shell
# when no instance is running yet.
lockfile="${XDG_RUNTIME_DIR:-/tmp}/omarchy-shell-ipc.lock"
{
flock 9
if ! quickshell list -p "$SHELL_DIR" 2>/dev/null | grep -q '^Instance '; then
# 9<&- so the spawned shell does not inherit (and keep) the lock fd; the
# spawned process is long-lived and would otherwise hold the lock for the
# remainder of the session, deadlocking every subsequent helper invocation.
setsid uwsm-app -- env OMARCHY_PATH="$OMARCHY_PATH" quickshell -p "$SHELL_DIR" >/dev/null 2>&1 9<&- &
for _ in 1 2 3 4 5 6 7 8 9 10; do
sleep 0.2
quickshell list -p "$SHELL_DIR" 2>/dev/null | grep -q '^Instance ' && break
done
fi
} 9>"$lockfile"
exec quickshell ipc -p "$SHELL_DIR" call "$@"