This commit is contained in:
Nicholai 2025-11-28 15:34:23 -07:00
parent e4af8e463e
commit 6b4b6af74a
2 changed files with 90 additions and 16 deletions

View File

@ -2,22 +2,96 @@
FOLDER=~/Pictures/Wallpapers
SCRIPT=~/scripts/pywal/pywal16.sh
export NSXIV_THUMBSIZE=1024
menu() {
CHOICE=$(nsxiv -otb $FOLDER/*) # nsxiv -o writes filename to stdout
# 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)
case $CHOICE in
*.*) wal -i "$CHOICE" -o $SCRIPT
killall swaybg
swaybg -m fill -i "$CHOICE";;
# 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
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;;
1) wal -i "$CHOICE" -o "$SCRIPT";;
2) wal -1 "$1" --theme $2 -o $SCRIPT ;;
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

View File

@ -1,11 +1,11 @@
#!/usr/bin/env bash
Repo="~/Pictures/Wallpapers"
Dir_Wallpapers="~/Nextcloud/Mini-Arch/Wallpaper-Repo/"
Script_Resort="~/scripts/sort_images_by_color.py"
Repo="/home/nicholai/Pictures/Wallpapers"
Dir_Wallpapers="/home/nicholai/Nextcloud/Mini-Arch/Wallpaper-Repo/"
Script_Resort="/home/nicholai/scripts/sort_images_by_color.py"
# 1. Resort wallpapers
python "$Script_Resort" "$Dir_Wallpapers"
"$(dirname "$0")/bin/python" "$Script_Resort" "$Dir_Wallpapers"
# 3. sync new wallpapers in
rsync -a --delete "$Dir_Wallpapers"/ "$Repo"/