mirror of
https://github.com/arthur-pbty/arthur-os.git
synced 2026-08-01 20:28:16 +02:00
49 lines
1.5 KiB
Bash
Executable File
49 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# omarchy:summary=Cycle to the next background for the current theme
|
|
# omarchy:examples=omarchy theme bg next
|
|
|
|
THEME_NAME=$(cat "$HOME/.config/omarchy/current/theme.name" 2>/dev/null)
|
|
THEME_BACKGROUNDS_PATH="$HOME/.config/omarchy/current/theme/backgrounds/"
|
|
USER_BACKGROUNDS_PATH="$HOME/.config/omarchy/backgrounds/$THEME_NAME/"
|
|
CURRENT_BACKGROUND_LINK="$HOME/.config/omarchy/current/background"
|
|
|
|
mapfile -d '' -t BACKGROUNDS < <(
|
|
find -L "$USER_BACKGROUNDS_PATH" "$THEME_BACKGROUNDS_PATH" -maxdepth 1 -type f \
|
|
\( -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' -o -iname '*.gif' -o -iname '*.bmp' -o -iname '*.webp' \) \
|
|
-print0 2>/dev/null | sort -z
|
|
)
|
|
TOTAL=${#BACKGROUNDS[@]}
|
|
|
|
if (( TOTAL == 0 )); then
|
|
omarchy-notification-send "No background was found for theme" -t 2000
|
|
else
|
|
# Get current background from symlink
|
|
if [[ -L $CURRENT_BACKGROUND_LINK ]]; then
|
|
CURRENT_BACKGROUND=$(readlink "$CURRENT_BACKGROUND_LINK")
|
|
else
|
|
# Default to first background if no symlink exists
|
|
CURRENT_BACKGROUND=""
|
|
fi
|
|
|
|
# Find current background index
|
|
INDEX=-1
|
|
for i in "${!BACKGROUNDS[@]}"; do
|
|
if [[ ${BACKGROUNDS[$i]} == $CURRENT_BACKGROUND ]]; then
|
|
INDEX=$i
|
|
break
|
|
fi
|
|
done
|
|
|
|
# Get next background (wrap around)
|
|
if (( INDEX == -1 )); then
|
|
# Use the first background when no match was found
|
|
NEW_BACKGROUND="${BACKGROUNDS[0]}"
|
|
else
|
|
NEXT_INDEX=$(((INDEX + 1) % TOTAL))
|
|
NEW_BACKGROUND="${BACKGROUNDS[$NEXT_INDEX]}"
|
|
fi
|
|
|
|
omarchy-theme-bg-set "$NEW_BACKGROUND"
|
|
fi
|