Krolyxon
Commit bf58d52

Branches

Refs →

aurora.localbinsetwall

63 lines · 1.5 KB · Bourne Again Shell (bash)

1#!/bin/bash
2WALL_DIR="$HOME/pix/wallpapers/catppuccin/"
3MODE="random"
4CUSTOM_PATH=""
5
6apply_wallpaper() {
7 # Apply wallpaper
8 if ! pgrep -x hyprpaper >/dev/null; then
9 # Hyprpaper not running → start with chosen wallpaper
10 cat > ~/.config/hypr/hyprpaper.conf <<EOF
11preload = $NEW_WALL
12wallpaper = ,$NEW_WALL
13EOF
14hyprpaper &
15wal -i $NEW_WALL -n
16else
17 # Hyprpaper is running → change it live
18 cat > ~/.config/hypr/hyprpaper.conf <<EOF
19preload = $NEW_WALL
20wallpaper = ,$NEW_WALL
21EOF
22 hyprctl hyprpaper preload "$NEW_WALL"
23 hyprctl hyprpaper wallpaper ",$NEW_WALL"
24 wal -i $NEW_WALL -n
25 fi
26
27}
28
29# Parse options
30while getopts ":mnp:" opt; do
31 case $opt in
32 m) MODE="menu" ;;
33 p) MODE="path"; CUSTOM_PATH="$(realpath $OPTARG)" ;;
34 n) MODE="nc" ;;
35 \?) echo "Usage: $0 [-m] [-p /path/to/image] [-n]" >&2; exit 1 ;;
36 :) echo "Option -$OPTARG requires an argument." >&2; exit 1 ;;
37 esac
38done
39
40# Choose wallpaper
41case $MODE in
42 random)
43 NEW_WALL=$(find "$WALL_DIR" -type f | shuf -n 1)
44 apply_wallpaper
45 ;;
46 path)
47 if [[ -f "$CUSTOM_PATH" ]]; then
48 NEW_WALL="$CUSTOM_PATH"
49 else
50 echo "Error: File not found -> $CUSTOM_PATH" >&2
51 exit 1
52 fi
53 apply_wallpaper
54 ;;
55 menu)
56 NEW_WALL=$(nsxiv -tfpo $WALL_DIR)
57 apply_wallpaper
58 ;;
59 nc)
60 echo "Not changing anything"
61 pgrep 'hyprpaper' || hyprpaper &
62 ;;
63esac