arch-scripts/pywal/wallpapermenu.sh
2025-11-28 15:34:23 -07:00

98 lines
3.1 KiB
Bash
Executable File

#!/usr/bin/env bash
FOLDER=~/Pictures/Wallpapers
SCRIPT=~/scripts/pywal/pywal16.sh
export NSXIV_THUMBSIZE=1024
menu() {
# Use wofi to select wallpaper (text-based, no image preview)
# Since wofi doesn't support images, filenames are shown in a grid layout
CHOICE=$(ls "$FOLDER" | wofi --dmenu \
--prompt "Select Wallpaper" \
--width 1200 \
--height 800 \
--columns 3 \
--insensitive)
# Exit if no selection made
[ -z "$CHOICE" ] && exit 0
# Construct full path
CHOICE="$FOLDER/$CHOICE"
case $CHOICE in
*.*) wal -i "$CHOICE" -o "$SCRIPT"
killall swaybg 2>/dev/null
swaybg -m fill -i "$CHOICE" &;;
*) exit 0 ;;
esac
}
# Alternative: Use nsxiv (best for image previews)
menu_nsxiv() {
CHOICE=$(nsxiv -otbg 1800x1200 "$FOLDER"/*) # nsxiv shows actual thumbnail previews
[ -z "$CHOICE" ] && exit 0
case $CHOICE in
*.*) wal -i "$CHOICE" -o "$SCRIPT"
killall swaybg 2>/dev/null
swaybg -m fill -i "$CHOICE" &;;
*) exit 0 ;;
esac
}
menu_rofi() {
# Use rofi with custom styling
CHOICE=$(find "$FOLDER" -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" \) -printf "%f\n" | \
sort | \
rofi -dmenu -i \
-p "Select Wallpaper" \
-theme-str 'window {width: 60%; height: 50%;}' \
-theme-str 'listview {columns: 2; lines: 12;}' \
-show-icons)
[ -z "$CHOICE" ] && exit 0
# Construct full path
CHOICE="$FOLDER/$CHOICE"
case $CHOICE in
*.*) wal -i "$CHOICE" -o "$SCRIPT"
killall swaybg 2>/dev/null
swaybg -m fill -i "$CHOICE" &;;
*) exit 0 ;;
esac
}
menu_rofi_with_preview() {
# Rofi with image preview using external previewer
# This requires installing rofi-img-previewer or similar
CHOICE=$(find "$FOLDER" -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" \) -printf "%f\n" | \
sort | \
rofi -dmenu -i \
-p "Select Wallpaper" \
-theme-str 'window {width: 80%; height: 70%;}' \
-theme-str 'listview {columns: 3; lines: 8;}')
[ -z "$CHOICE" ] && exit 0
# Construct full path
CHOICE="$FOLDER/$CHOICE"
case $CHOICE in
*.*) wal -i "$CHOICE" -o "$SCRIPT"
killall swaybg 2>/dev/null
swaybg -m fill -i "$CHOICE" &;;
*) exit 0 ;;
esac
}
case "$#" in
0) menu_nsxiv;; # Options: menu (wofi), menu_rofi (rofi), menu_nsxiv (nsxiv with thumbnails)
1) wal -i "$1" -o "$SCRIPT";;
2) wal -i "$1" --theme "$2" -o "$SCRIPT" ;;
*) exit 0 ;;
esac