#!/bin/bash # archypr:summary=Apply an Omarchy theme # archypr:args= # archypr:examples=omarchy theme list | omarchy theme set "Tokyo Night" if [[ -z $1 ]]; then echo "Usage: archypr-theme-set " exit 1 fi CURRENT_THEME_PATH="$HOME/.config/omarchy/current/theme" NEXT_THEME_PATH="$HOME/.config/omarchy/current/next-theme" USER_THEMES_PATH="$HOME/.config/omarchy/themes" ARCHYPR_THEMES_PATH="$ARCHYPR_PATH/themes" THEME_NAME=$(echo "$1" | sed -E 's/<[^>]+>//g' | tr '[:upper:]' '[:lower:]' | tr ' ' '-') if [[ ! -d $ARCHYPR_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 "$ARCHYPR_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 archypr-theme-colors-from-alacritty "$NEXT_THEME_PATH" fi # Generate dynamic configs archypr-heme-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/.config/omarchy/current/theme.name" # Change background with theme if [[ $ARCHYPR_THEME_SKIP_BACKGROUND != "1" ]]; then archypr-theme-bg-next fi # Restart components to apply new theme if pgrep -x waybar >/dev/null; then archypr-restart-waybar fi archypr-estart-swayosd archypr-estart-terminal archypr-estart-hyprctl archypr-estart-btop archypr-estart-opencode archypr-estart-mako archypr-estart-helix # Change app-specific themes archypr-heme-set-foot archypr-heme-set-gnome archypr-heme-set-browser archypr-heme-set-vscode archypr-heme-set-obsidian archypr-heme-set-keyboard # Call hook on theme set archypr-ook theme-set "$THEME_NAME" >/dev/null