Refresh gum theming when launching presentation terminals

gum_env.lua is fed into the compositor environment via hl.env at login,
but that environment is captured once and is not refreshed on a theme
switch. Terminals launched through uwsm-app inherit the caller's
environment (scopes don't read systemctl --user set-environment), so a
floating terminal would show the login-time theme's gum colors.

Extract the export logic into a sourced omarchy-restart-gum helper and
source it from the presentation terminal launcher so gum widgets match
the active theme.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
David Heinemeier Hansson
2026-07-20 09:44:48 -07:00
co-authored by Claude Opus 4.8
parent e85cde2c9c
commit 86fd228cda
2 changed files with 22 additions and 0 deletions
@@ -3,6 +3,10 @@
# omarchy:summary=Launch a floating terminal with the Omarchy presentation wrapper
# omarchy:args=<command>
# Export the current theme's gum styling so gum widgets match the active theme
# even after a theme switch (the inherited environment is captured at login).
source omarchy-restart-gum
cmd="$*"
presentation_script="omarchy-show-logo; $cmd; if (( \$? != 130 )); then omarchy-show-done; fi"
+18
View File
@@ -0,0 +1,18 @@
#!/bin/bash
# omarchy:summary=Export the current theme's gum styling into the environment
# omarchy:hidden=true
# Meant to be sourced. gum_env.lua is fed into the compositor environment via
# hl.env at login, but that environment is captured once and is not refreshed on
# a theme switch, so anything launched from the session would otherwise inherit
# the login-time theme's gum colors. Export the current values instead.
_omarchy_gum_env="$HOME/.local/state/omarchy/current/theme/gum_env.lua"
if [[ -f $_omarchy_gum_env ]]; then
while IFS=$'\t' read -r _omarchy_gum_key _omarchy_gum_value; do
[[ -n $_omarchy_gum_key && -n $_omarchy_gum_value ]] && export "$_omarchy_gum_key=$_omarchy_gum_value"
done < <(awk -F'"' '/hl\.env\("[A-Z0-9_]+", "[^"]+"\)/ { print $2 "\t" $4 }' "$_omarchy_gum_env")
fi
unset _omarchy_gum_env _omarchy_gum_key _omarchy_gum_value