#!/bin/bash # Get all theme names (user themes override default by name) declare -A seen THEMES=() for dir in ~/.config/omarchy/themes "$OMARCHY_PATH/themes"; do for path in "$dir"/*/; do [[ -d "$path" ]] || continue name=$(basename "$path") if [[ -z "${seen[$name]}" ]]; then seen[$name]=1 THEMES+=("$name") fi done done IFS=$'\n' THEMES=($(printf '%s\n' "${THEMES[@]}" | sort)) # Get current theme name if [[ -f "$HOME/.config/omarchy/current/theme.name" ]]; then CURRENT=$(cat "$HOME/.config/omarchy/current/theme.name") else CURRENT="" fi # Find next theme TOTAL=${#THEMES[@]} for i in "${!THEMES[@]}"; do if [[ "${THEMES[$i]}" == "$CURRENT" ]]; then NEXT_INDEX=$(((i + 1) % TOTAL)) break fi done NEXT_INDEX=${NEXT_INDEX:-0} omarchy-theme-set "${THEMES[$NEXT_INDEX]}" notify-send "Theme changed to ${THEMES[$NEXT_INDEX]}" -t 2000