Switch dev-link mechanism from shadow-dir to /etc/omarchy.conf

omarchy-dev-link (lands in a follow-up) writes OMARCHY_PATH=<checkout>
to /etc/omarchy.conf. Three boot/session entry points now source it
before falling back to /usr/share/omarchy:

- /etc/profile.d/omarchy.sh   (login shells, SSH)
- config/uwsm/env             (Hyprland session via UWSM)
- default/bash/envs           (non-login interactive bash; duplicated for
                              SSH and similar)

All three use 'export OMARCHY_PATH="${OMARCHY_PATH:-/usr/share/omarchy}"'
so /etc/omarchy.conf wins over the default, and install.sh's script-mode
export wins over /etc/omarchy.conf (because both use the :- guard).

Hyprland updates session env on the fly via hyprctl setenv +
systemctl --user import-environment, so omarchy-dev-link can re-trigger
those to make live sessions pick up the new path without restart.
This commit is contained in:
Ryan Hughes
2026-06-04 18:34:35 -04:00
parent 0777b20967
commit 7e7a665663
3 changed files with 18 additions and 24 deletions
+8 -18
View File
@@ -1,24 +1,14 @@
# Default OMARCHY_PATH for non-install shells.
#
# - install.sh sets OMARCHY_PATH to $HOME/.local/share/omarchy during the
# script-install (boot.sh) flow; that wins because of the :- guards.
# - omarchy-dev-link manages /usr/share/omarchy-dev as a symlink to a local
# checkout. When present, it shadows the package install for everything
# that resolves via $OMARCHY_PATH (bin/, default/, shell/, themes/).
# - Otherwise: the package install at /usr/share/omarchy.
if [ -z "${OMARCHY_PATH:-}" ]; then
if [ -d /usr/share/omarchy-dev ]; then
export OMARCHY_PATH=/usr/share/omarchy-dev
else
export OMARCHY_PATH=/usr/share/omarchy
fi
fi
# Source /etc/omarchy.conf first so dev-link or other system overrides can
# pre-set OMARCHY_PATH (and anything else) before the defaults run.
# install.sh's script-mode export still wins because /etc/omarchy.conf uses
# the same :- guard.
[ -f /etc/omarchy.conf ] && . /etc/omarchy.conf
export OMARCHY_PATH="${OMARCHY_PATH:-/usr/share/omarchy}"
# Prepend $OMARCHY_PATH/bin if it exists. In normal package mode this is a
# no-op: bins ship to /usr/bin (already on PATH), and /usr/share/omarchy/bin
# doesn't exist. The case that matters is omarchy-dev-link, which exposes the
# checkout's bin/ at /usr/share/omarchy-dev/bin so it can override the
# /usr/bin copies the package installed.
# doesn't exist. When omarchy-dev-link is active OMARCHY_PATH points at a
# local checkout, whose bin/ then overrides the /usr/bin copies.
case ":$PATH:" in
*":$OMARCHY_PATH/bin:"*) ;;
*) [ -d "$OMARCHY_PATH/bin" ] && export PATH="$OMARCHY_PATH/bin:$PATH" ;;