diff --git a/.gitignore b/.gitignore index 9f87fd4..3fcd8e9 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ config/hypr/colors.conf config/waybar/style.css config/wofi/style.css config/hypr/hyprpaper.conf +config/hypr/shaders/.active diff --git a/config/hypr/scripts/shader-cycle.sh b/config/hypr/scripts/shader-cycle.sh index cf6a69c..f1edef2 100755 --- a/config/hypr/scripts/shader-cycle.sh +++ b/config/hypr/scripts/shader-cycle.sh @@ -1,5 +1,6 @@ #!/bin/bash SHADER_DIR="$HOME/.config/hypr/shaders" +ACTIVE_FILE="$SHADER_DIR/.active" mapfile -t SHADERS < <(find "$SHADER_DIR" -name "*.glsl" | sort) @@ -7,15 +8,9 @@ if [[ ${#SHADERS[@]} -eq 0 ]]; then exit 0 fi -CURRENT=$(hyprctl getoption decoration:screen_shader | grep "str:" | awk '{print $2}' | tr -d '"') - -INDEX=-1 -for i in "${!SHADERS[@]}"; do - if [[ "${SHADERS[$i]}" == "$CURRENT" ]]; then - INDEX=$i - break - fi -done +INDEX=$(cat "$ACTIVE_FILE" 2>/dev/null) +[[ "$INDEX" =~ ^[0-9]+$ ]] || INDEX=-1 NEXT=$(( (INDEX + 1) % ${#SHADERS[@]} )) +echo "$NEXT" > "$ACTIVE_FILE" hyprshade on "${SHADERS[$NEXT]}"