Files
omarchy/bin/omarchy-theme-next
2026-01-01 16:22:17 -07:00

39 lines
888 B
Bash
Executable File

#!/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