diff options
| author | krolxon <krolyxon@tutanota.com> | 2025-08-16 20:49:05 +0530 |
|---|---|---|
| committer | krolxon <krolyxon@tutanota.com> | 2025-08-16 20:49:05 +0530 |
| commit | f3bdd21020b8e618433a06c1efc1cc665cb6839d (patch) | |
| tree | 32427d47c079637b670a20b62e0339df0e248641 /.local/bin/setwall | |
first commit using stow
Diffstat (limited to '.local/bin/setwall')
| -rwxr-xr-x | .local/bin/setwall | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/.local/bin/setwall b/.local/bin/setwall new file mode 100755 index 0000000..36c46db --- /dev/null +++ b/.local/bin/setwall @@ -0,0 +1,52 @@ +#!/bin/bash +WALL_DIR="$HOME/pix/wallpapers/onedarkwallpapers/" +MODE="random" +CUSTOM_PATH="" + +# Parse options +while getopts ":mp:" opt; do + case $opt in + m) MODE="menu" ;; + p) MODE="path"; CUSTOM_PATH="$OPTARG" ;; + \?) echo "Usage: $0 [-m] [-p /path/to/image]" >&2; exit 1 ;; + :) echo "Option -$OPTARG requires an argument." >&2; exit 1 ;; + esac +done + +# Choose wallpaper +case $MODE in + random) + NEW_WALL=$(find "$WALL_DIR" -type f | shuf -n 1) + ;; + path) + if [[ -f "$CUSTOM_PATH" ]]; then + NEW_WALL="$CUSTOM_PATH" + else + echo "Error: File not found -> $CUSTOM_PATH" >&2 + exit 1 + fi + ;; + menu) + WALLPAPER_LIST=$(find "$WALL_DIR" -type f | sort | sed "s|$WALL_DIR||") + CHOSEN=$(echo "$WALLPAPER_LIST" | rofi -dmenu -i -p "Choose wallpaper:") + if [[ -z "$CHOSEN" ]]; then + NEW_WALL=$(find "$WALL_DIR" -type f | shuf -n 1) + else + NEW_WALL="$WALL_DIR$CHOSEN" + fi + ;; +esac + +# Apply wallpaper +if ! pgrep -x hyprpaper >/dev/null; then + # Hyprpaper not running → start with chosen wallpaper + cat > ~/.config/hypr/hyprpaper.conf <<EOF +preload = $NEW_WALL +wallpaper = ,$NEW_WALL +EOF + hyprpaper & +else + # Hyprpaper is running → change it live + hyprctl hyprpaper preload "$NEW_WALL" + hyprctl hyprpaper wallpaper ",$NEW_WALL" +fi |
