Move all omarchy runtime state (themes, backgrounds, current theme) from ~/.config/omarchy/current to ~/.local/state/omarchy/current to keep the config dir free of generated files. Add mise task for recreating symlinks and update credential helpers for tea.
75 lines
2.2 KiB
Bash
Executable File
75 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# omarchy:summary=Apply an Omarchy theme
|
|
# omarchy:args=<theme-name>
|
|
# omarchy:examples=omarchy theme list | omarchy theme set "Tokyo Night"
|
|
|
|
if [[ -z $1 ]]; then
|
|
echo "Usage: omarchy-theme-set <theme-name>"
|
|
exit 1
|
|
fi
|
|
|
|
CURRENT_THEME_PATH="$HOME/.local/state/omarchy/current/theme"
|
|
NEXT_THEME_PATH="$HOME/.local/state/omarchy/current/next-theme"
|
|
USER_THEMES_PATH="$HOME/.config/omarchy/themes"
|
|
OMARCHY_THEMES_PATH="${DOTFILES_DIR}/themes"
|
|
|
|
THEME_NAME=$(echo "$1" | sed -E 's/<[^>]+>//g' | tr '[:upper:]' '[:lower:]' | tr ' ' '-')
|
|
|
|
if [[ ! -d $OMARCHY_THEMES_PATH/$THEME_NAME ]] && [[ ! -d $USER_THEMES_PATH/$THEME_NAME ]]; then
|
|
echo "Theme '$THEME_NAME' does not exist"
|
|
exit 1
|
|
fi
|
|
|
|
# Setup clean next theme directory (for atomic theme config swapping)
|
|
rm -rf "$NEXT_THEME_PATH"
|
|
mkdir -p "$NEXT_THEME_PATH"
|
|
|
|
# Copy official theme first, then overlay user customizations on top
|
|
cp -r "$OMARCHY_THEMES_PATH/$THEME_NAME/"* "$NEXT_THEME_PATH/" 2>/dev/null
|
|
cp -r "$USER_THEMES_PATH/$THEME_NAME/"* "$NEXT_THEME_PATH/" 2>/dev/null
|
|
|
|
# Generate colors.toml from alacritty.toml if theme is missing colors.toml
|
|
if [[ ! -f $NEXT_THEME_PATH/colors.toml && -f $NEXT_THEME_PATH/alacritty.toml ]]; then
|
|
omarchy-theme-colors-from-alacritty "$NEXT_THEME_PATH"
|
|
fi
|
|
|
|
# Generate dynamic configs
|
|
omarchy-theme-set-templates
|
|
|
|
# Swap next theme in as current
|
|
rm -rf "$CURRENT_THEME_PATH"
|
|
mv "$NEXT_THEME_PATH" "$CURRENT_THEME_PATH"
|
|
|
|
# Store theme name for reference
|
|
echo "$THEME_NAME" >"$HOME/.local/state/omarchy/current/theme.name"
|
|
|
|
# Change background with theme
|
|
if [[ $OMARCHY_THEME_SKIP_BACKGROUND != "1" ]]; then
|
|
omarchy-theme-bg-next
|
|
fi
|
|
|
|
# # Restart components to apply new theme
|
|
# if pgrep -x waybar >/dev/null; then
|
|
# omarchy-restart-waybar
|
|
# fi
|
|
# omarchy-restart-swayosd
|
|
# omarchy-restart-terminal
|
|
omarchy-restart-hyprctl
|
|
omarchy-restart-btop
|
|
# omarchy-restart-opencode
|
|
omarchy-restart-mako
|
|
omarchy-restart-tmux
|
|
# omarchy-restart-helix
|
|
|
|
# Change app-specific themes
|
|
omarchy-theme-set-foot
|
|
omarchy-theme-set-gnome
|
|
omarchy-theme-set-browser
|
|
#omarchy-theme-set-vscode
|
|
omarchy-theme-set-obsidian
|
|
#omarchy-theme-set-keyboard
|
|
|
|
# Call hook on theme set
|
|
omarchy-hook theme-set "$THEME_NAME" >/dev/null
|