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