From cd5b2326691b7c5fa2193f77455742e81bc8765c Mon Sep 17 00:00:00 2001 From: goodhumored Date: Wed, 26 Feb 2025 11:53:15 +0300 Subject: [PATCH] feat: new monitor; wallpapers configured --- .config/hypr/.gitignore | 1 + .config/hypr/conf/keybindings.conf | 3 +++ .config/hypr/hyprpaper.conf | 13 +++++++++-- .config/hypr/monitors.conf | 16 +++++++++---- .config/hypr/scripts/cycle-wp.sh | 36 ++++++++++++++++++++++++++++++ .config/hypr/scripts/update-wps.sh | 15 +++++++++++++ 6 files changed, 78 insertions(+), 6 deletions(-) create mode 100644 .config/hypr/.gitignore create mode 100755 .config/hypr/scripts/cycle-wp.sh create mode 100755 .config/hypr/scripts/update-wps.sh diff --git a/.config/hypr/.gitignore b/.config/hypr/.gitignore new file mode 100644 index 0000000..72d5c6e --- /dev/null +++ b/.config/hypr/.gitignore @@ -0,0 +1 @@ +wallpaper_index diff --git a/.config/hypr/conf/keybindings.conf b/.config/hypr/conf/keybindings.conf index 5cb3b2c..0482b23 100644 --- a/.config/hypr/conf/keybindings.conf +++ b/.config/hypr/conf/keybindings.conf @@ -17,6 +17,9 @@ bind = $mainMod, E, exec, $fileManager # file manager bind = $mainMod, A, exec, $toggle_menu_cmd # wofi bind = $mainMod CTRL ALT, V, exec, ~/.config/hypr/scripts/dnd-clipboard.sh +# ─────────────────────────── switch wallpaper ─────────────────────────── +bind = $mainMod SHIFT CTRL ALT, R, exec, ~/.config/hypr/scripts/cycle-wp.sh + # ──────────────────────────────── copyq ────────────────────────────── bind = CTRL_ALT, V, exec, copyq toggle diff --git a/.config/hypr/hyprpaper.conf b/.config/hypr/hyprpaper.conf index f5e4f0e..35fe86b 100644 --- a/.config/hypr/hyprpaper.conf +++ b/.config/hypr/hyprpaper.conf @@ -1,2 +1,11 @@ -preload = ~/wallpapers/isaac_cathedral.jpg -wallpaper = ,~/wallpapers/isaac_cathedral.jpg +# Generated by update_hyprpaper_config.sh +preload = /home/goodhumored/wallpapers/1.png +preload = /home/goodhumored/wallpapers/2.png +preload = /home/goodhumored/wallpapers/3.png +preload = /home/goodhumored/wallpapers/4.png +preload = /home/goodhumored/wallpapers/5.png +preload = /home/goodhumored/wallpapers/6.png +preload = /home/goodhumored/wallpapers/7.png +preload = /home/goodhumored/wallpapers/8.png +preload = /home/goodhumored/wallpapers/9.png +preload = /home/goodhumored/wallpapers/10.jpg diff --git a/.config/hypr/monitors.conf b/.config/hypr/monitors.conf index f3cc749..2e5d9bc 100644 --- a/.config/hypr/monitors.conf +++ b/.config/hypr/monitors.conf @@ -2,15 +2,23 @@ monitor=eDP-1,1920x1080@60.01,0x0,1.0 -# new config -monitor=DP-2,1920x1080@60.0,0x-1080,1.0 -monitor=desc:Iiyama North America PL3270Q 1155103721286,2560x1440@59.95,-2560x-1080,1.0 +# ╭──────────────────────────────────────────────────────────╮ +# │ Офис │ +# ╰──────────────────────────────────────────────────────────╯ +# маленький сверху горизонтально, большой слева +# monitor=DP-2,1920x1080@60.0,0x-1080,1.0 +# monitor=desc:Iiyama North America PL3270Q 1155103721286,2560x1440@59.95,-2560x-1080,1.0 -# old configuration: +# маленький справа вертикально, большой сверху # monitor=DP-2,1920x1080@60.0,1920x-1440,1.0 # monitor=DP-2,transform,3 # monitor=desc:Iiyama North America PL3270Q 1155103721286,2560x1440@59.95,-640x-1440,1.0 +# маленький справа горизонтально большой сверху +monitor=DP-2,1920x1080@60.0,1920x-820,1.0 +monitor=desc:Iiyama North America PL3270Q 1155103721286,2560x1440@59.95,-640x-1440,1.0 + # Домашний монитор monitor=desc:BNQ BenQ G925HDA 29A01966019,prefered,auto,1.0 monitor=desc:HJW MACROSILICON 0x0002E842,prefered,320x-720,1.0 +monitor=desc:Huawei Technologies Co. Inc. ZQE-CBA 0xC080F622,3440x1440@99.98Hz,-760x-1440,1,bitdepth diff --git a/.config/hypr/scripts/cycle-wp.sh b/.config/hypr/scripts/cycle-wp.sh new file mode 100755 index 0000000..1b68fb6 --- /dev/null +++ b/.config/hypr/scripts/cycle-wp.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +# Set environment for Hyprland +export XDG_RUNTIME_DIR="/run/user/$(id -u)" +export WAYLAND_DISPLAY=$(ls "$XDG_RUNTIME_DIR"/wayland-* | head -1 | xargs basename) + +CONFIG_FILE="$HOME/.config/hypr/hyprpaper.conf" +INDEX_FILE="$HOME/.config/hypr/wallpaper_index" + +# Read wallpaper list from config +wallpapers=() +while IFS= read -r line; do + if [[ "$line" =~ ^preload\ =\ (.*) ]]; then + wallpapers+=("${BASH_REMATCH[1]}") + fi +done < "$CONFIG_FILE" + +# Check for wallpapers +if [ ${#wallpapers[@]} -eq 0 ]; then + echo "No wallpapers found!" >&2 + exit 1 +fi + +# Read current index +current_index=0 +if [ -f "$INDEX_FILE" ]; then + current_index=$(<"$INDEX_FILE") +fi + +# Set current wallpaper +current_index=$((current_index % ${#wallpapers[@]})) +hyprctl hyprpaper wallpaper ",${wallpapers[current_index]}" + +# Update index for next run +next_index=$(( (current_index + 1) % ${#wallpapers[@]} )) +echo "$next_index" > "$INDEX_FILE" diff --git a/.config/hypr/scripts/update-wps.sh b/.config/hypr/scripts/update-wps.sh new file mode 100755 index 0000000..032ed98 --- /dev/null +++ b/.config/hypr/scripts/update-wps.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +WALLPAPER_DIR="$HOME/wallpapers" +CONFIG_FILE="$HOME/.config/hypr/hyprpaper.conf" + +# Find and sort image files naturally (handles numbers in filenames) +mapfile -t wallpapers < <(find "$WALLPAPER_DIR" -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" \) -print0 | sort -zV | xargs -0n1) + +# Write to config +echo "# Generated by update_hyprpaper_config.sh" > "$CONFIG_FILE" +for wp in "${wallpapers[@]}"; do + echo "preload = $wp" >> "$CONFIG_FILE" +done + +echo "Updated hyprpaper.conf with ${#wallpapers[@]} wallpapers."