agsdotfilesdotshyprlandhyprland-configricerofirofi-configshell-scriptsswwwwallustwaybarwaybar-modulewaybar-themes
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
2.4 KiB
98 lines
2.4 KiB
#!/bin/bash |
|
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ |
|
# This script for selecting wallpapers (SUPER W) |
|
|
|
# WALLPAPERS PATH |
|
wallDIR="$HOME/Pictures/wallpapers" |
|
|
|
# variables |
|
SCRIPTSDIR="$HOME/.config/hypr/scripts" |
|
focused_monitor=$(hyprctl monitors | awk '/^Monitor/{name=$2} /focused: yes/{print name}') |
|
|
|
# swww transition config |
|
FPS=60 |
|
TYPE="any" |
|
DURATION=2 |
|
BEZIER=".43,1.19,1,.4" |
|
SWWW_PARAMS="--transition-fps $FPS --transition-type $TYPE --transition-duration $DURATION" |
|
|
|
# Check if swaybg is running |
|
if pidof swaybg > /dev/null; then |
|
pkill swaybg |
|
fi |
|
|
|
# Retrieve image files using null delimiter to handle spaces in filenames |
|
mapfile -d '' PICS < <(find "${wallDIR}" -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" -o -iname "*.gif" \) -print0) |
|
|
|
RANDOM_PIC="${PICS[$((RANDOM % ${#PICS[@]}))]}" |
|
RANDOM_PIC_NAME=". random" |
|
|
|
# Rofi command |
|
rofi_command="rofi -i -show -dmenu -config ~/.config/rofi/config-wallpaper.rasi" |
|
|
|
# Sorting Wallpapers |
|
menu() { |
|
# Sort the PICS array |
|
IFS=$'\n' sorted_options=($(sort <<<"${PICS[*]}")) |
|
|
|
# Place ". random" at the beginning with the random picture as an icon |
|
printf "%s\x00icon\x1f%s\n" "$RANDOM_PIC_NAME" "$RANDOM_PIC" |
|
|
|
for pic_path in "${sorted_options[@]}"; do |
|
pic_name=$(basename "$pic_path") |
|
# Displaying .gif to indicate animated images |
|
if [[ -z $(echo "$pic_name" | grep -i "\.gif$") ]]; then |
|
printf "%s\x00icon\x1f%s\n" "$(echo "$pic_name" | cut -d. -f1)" "$pic_path" |
|
else |
|
printf "%s\n" "$pic_name" |
|
fi |
|
done |
|
} |
|
|
|
# initiate swww if not running |
|
swww query || swww-daemon --format xrgb |
|
|
|
# Choice of wallpapers |
|
main() { |
|
choice=$(menu | ${rofi_command}) |
|
# No choice case |
|
if [[ -z $choice ]]; then |
|
exit 0 |
|
fi |
|
|
|
# Random choice case |
|
if [ "$choice" = "$RANDOM_PIC_NAME" ]; then |
|
swww img -o $focused_monitor "${RANDOM_PIC}" $SWWW_PARAMS |
|
exit 0 |
|
fi |
|
|
|
# Find the index of the selected file |
|
pic_index=-1 |
|
for i in "${!PICS[@]}"; do |
|
filename=$(basename "${PICS[$i]}") |
|
if [[ "$filename" == "$choice"* ]]; then |
|
pic_index=$i |
|
break |
|
fi |
|
done |
|
|
|
if [[ $pic_index -ne -1 ]]; then |
|
swww img -o $focused_monitor "${PICS[$pic_index]}" $SWWW_PARAMS |
|
else |
|
echo "Image not found." |
|
exit 1 |
|
fi |
|
} |
|
|
|
# Check if rofi is already running |
|
if pidof rofi > /dev/null; then |
|
pkill rofi |
|
exit 0 |
|
fi |
|
|
|
main |
|
|
|
sleep 0.5 |
|
${SCRIPTSDIR}/WallustSwww.sh |
|
sleep 0.2 |
|
${SCRIPTSDIR}/Refresh.sh
|
|
|