41 lines
1.2 KiB
Bash
Executable File
41 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# Папка с обоями
|
||
WALLPAPER_DIR="$HOME/.config/hyprpaper/wallpapers"
|
||
# Файл для хранения текущего индекса
|
||
INDEX_FILE="$HOME/.config/hyprpaper/current_index"
|
||
|
||
# Получить список файлов .png и .jpg
|
||
mapfile -t WALLPAPERS < <(find "$WALLPAPER_DIR" -type f \( -iname "*.png" -o -iname "*.jpg" \) | sort)
|
||
|
||
# Сколько обоев всего
|
||
TOTAL=${#WALLPAPERS[@]}
|
||
|
||
# Если нет обоев
|
||
if [[ $TOTAL -eq 0 ]]; then
|
||
echo "Нет обоев в $WALLPAPER_DIR"
|
||
exit 1
|
||
fi
|
||
|
||
# Получить текущий индекс или 0
|
||
if [[ -f $INDEX_FILE ]]; then
|
||
INDEX=$(<"$INDEX_FILE")
|
||
else
|
||
INDEX=0
|
||
fi
|
||
|
||
# Следующий индекс (по кругу)
|
||
INDEX=$(( (INDEX + 1) % TOTAL ))
|
||
|
||
# Текущий файл
|
||
SELECTED="${WALLPAPERS[$INDEX]}"
|
||
|
||
# Сохраняем индекс
|
||
echo "$INDEX" > "$INDEX_FILE"
|
||
|
||
# Предзагрузка и установка
|
||
hyprctl hyprpaper preload "$SELECTED"
|
||
sleep 0.1 # маленькая задержка для подстраховки
|
||
MONITOR=$(hyprctl monitors | grep "Monitor" | awk '{print $2}')
|
||
hyprctl hyprpaper wallpaper "$MONITOR,$SELECTED"
|