Five scripts each hand-rolled colors.toml parsing plus their own alias/fallback cascade, and the tables had drifted: theme-osc grew a divergent color8/color9 chain, tmux and gnome carried private mode detection, and the preview tool duplicated the lot. The differences never mattered for shipped themes but were a standing bug factory for sparse user themes. omarchy-theme-color is now the single resolver. Its cascade is a verbatim port of the canonical theme-set-templates logic (semantic keys, legacy colorN aliases, derived shades, selection/cursor derivation, mode precedence), exposed as --all, --raw, or single-key lookup with fallback. Generated output is byte-identical across all 21 shipped themes on every surface: 17 template files, OSC byte stream, tmux and gsettings command logs, and previews. Sparse legacy themes now resolve the same palette everywhere instead of five slightly different ones. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
35 lines
1.3 KiB
Bash
Executable File
35 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# omarchy:summary=Apply the current theme to GNOME color mode and icon settings
|
|
# omarchy:hidden=true
|
|
|
|
# gsettings needs a user DBus session. During ISO installs this command can be
|
|
# reached from arch-chroot while applying the initial Omarchy theme; defer until
|
|
# the user has a real session instead of emitting dconf warnings.
|
|
if [[ -z ${DBUS_SESSION_BUS_ADDRESS:-} ]]; then
|
|
exit 0
|
|
fi
|
|
|
|
THEME_DIR=$HOME/.local/state/omarchy/current/theme
|
|
COLORS_FILE="$THEME_DIR/colors.toml"
|
|
|
|
# omarchy-theme-color resolves mode from colors.toml (`mode = "light"`), a
|
|
# legacy light.mode marker beside it, or background luminance for user themes.
|
|
mode=$(omarchy-theme-color --file "$COLORS_FILE" mode)
|
|
|
|
if [[ $mode == "light" ]]; then
|
|
gsettings set org.gnome.desktop.interface color-scheme "prefer-light"
|
|
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita"
|
|
else
|
|
gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
|
|
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
|
|
fi
|
|
|
|
# Change gnome icon theme color
|
|
GNOME_ICONS_THEME=$HOME/.local/state/omarchy/current/theme/icons.theme
|
|
if [[ -f $GNOME_ICONS_THEME ]]; then
|
|
gsettings set org.gnome.desktop.interface icon-theme "$(<$GNOME_ICONS_THEME)"
|
|
else
|
|
gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue"
|
|
fi
|