98 lines
3.1 KiB
Bash
Executable File
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
|
|
|