Krolyxon
Commit 6f44baa

Branches

Refs →

dotfiles-x11.localbinsetwall

52 lines · 1.4 KB · Bourne Again Shell (bash)

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