aboutsummaryrefslogtreecommitdiffstats
path: root/config/hypr/UserScripts/RainbowBorders.bak.sh
diff options
context:
space:
mode:
authorDon Williams <don.e.williams@gmail.com>2026-08-06 11:40:04 -0400
committerPinapelz <yukais@pinapelz.com>2026-08-29 21:41:34 -0700
commit133e6a581ec7af8e355de90d4f9a508306c2a587 (patch)
tree8ceb7dfcf3f3e37d7639743a1de3a5a33eaf27a2 /config/hypr/UserScripts/RainbowBorders.bak.sh
parent0911f2c77d6b2d42203f47da072437f32f1029f3 (diff)
Fixed RainbowBorders in LUA mode
Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: config/hypr/UserScripts/RainbowBorders-low-cpu.sh modified: config/hypr/UserScripts/RainbowBorders.bak.sh
Diffstat (limited to 'config/hypr/UserScripts/RainbowBorders.bak.sh')
-rwxr-xr-xconfig/hypr/UserScripts/RainbowBorders.bak.sh136
1 files changed, 102 insertions, 34 deletions
diff --git a/config/hypr/UserScripts/RainbowBorders.bak.sh b/config/hypr/UserScripts/RainbowBorders.bak.sh
index 7a9c7171..ac7c177c 100755
--- a/config/hypr/UserScripts/RainbowBorders.bak.sh
+++ b/config/hypr/UserScripts/RainbowBorders.bak.sh
@@ -6,6 +6,14 @@
# SPDX-License-Identifier: GPL-3.0-or-later
# ==================================================
# Smooth border cycling effect using Wallust palette or full rainbow
+#
+# Disabled by default as RainbowBorders.bak.sh.
+# Enable / choose mode via Quick Settings (SUPER SHIFT + E → Rainbow Borders Mode).
+# That renames this file to RainbowBorders.sh.
+#
+# Under Hyprland Lua config mode, hyprctl keyword is rejected
+# ("keyword can't work with non-legacy parsers"). This script falls back to:
+# hyprctl eval 'hl.config({ general = { col = { active_border = { colors = {...}, angle = N } } } })'
# Possible values: "wallust_random", "rainbow", "gradient_flow"
EFFECT_TYPE="gradient_flow"
@@ -16,9 +24,9 @@ WALLUST_COLORS=()
# ---------- LOAD WALLUST COLORS ----------
if [[ "$EFFECT_TYPE" == "wallust_random" || "$EFFECT_TYPE" == "gradient_flow" ]]; then
- # Accept either hex (0xffRRGGBB) or rgb(r,g,b) and normalize to 0xffRRGGBB
- mapfile -t WALLUST_COLORS < <(
- grep -E '^\$color[0-9]+' "$WALLUST_COLORS_SOURCE" | awk '
+ # Accept either hex (0xffRRGGBB) or rgb(r,g,b) and normalize to 0xffRRGGBB
+ mapfile -t WALLUST_COLORS < <(
+ grep -E '^\$color[0-9]+' "$WALLUST_COLORS_SOURCE" | awk '
function hex2(s){ return (length(s)==6 ? "0xff"s : ""); }
function rgb2(r,g,b){ return sprintf("0xff%02x%02x%02x", r, g, b); }
{
@@ -28,22 +36,22 @@ if [[ "$EFFECT_TYPE" == "wallust_random" || "$EFFECT_TYPE" == "gradient_flow" ]]
print rgb2(m[1], m[2], m[3]); next
}
}'
- )
+ )
- if (( ${#WALLUST_COLORS[@]} == 0 )); then
- # If wallust colors can't be loaded, fall back to random_hex
- EFFECT_TYPE="rainbow"
- fi
+ if ((${#WALLUST_COLORS[@]} == 0)); then
+ # If wallust colors can't be loaded, fall back to random_hex
+ EFFECT_TYPE="rainbow"
+ fi
fi
# ---------- RANDOM WALLUST COLORS ----------
function wallust_random() {
- echo "${WALLUST_COLORS[RANDOM % ${#WALLUST_COLORS[@]}]}"
+ echo "${WALLUST_COLORS[RANDOM % ${#WALLUST_COLORS[@]}]}"
}
# ---------- RAINBOW COLORS ----------
function random_hex() {
- echo "0xff$(openssl rand -hex 3)"
+ echo "0xff$(openssl rand -hex 3)"
}
# ---------- FLOW MODE ----------
@@ -56,39 +64,99 @@ MAX_POS=10
GLOW_POS=0
function gradient_flow_color() {
- local pos=$1
- local d=$(( pos - GLOW_POS ))
+ local pos=$1
+ local d=$((pos - GLOW_POS))
- # wrap distance (-9..9)
- if (( d > MAX_POS/2 )); then d=$((d - MAX_POS)); fi
- if (( d < -MAX_POS/2 )); then d=$((d + MAX_POS)); fi
+ # wrap distance (-9..9)
+ if ((d > MAX_POS / 2)); then d=$((d - MAX_POS)); fi
+ if ((d < -MAX_POS / 2)); then d=$((d + MAX_POS)); fi
- case "${d#-}" in
- 0) echo "$GLOW_COLOR" ;;
- 1) echo "$GRAD1_COLOR" ;;
- 2) echo "$GRAD2_COLOR" ;;
- *) echo "$BASE_COLOR" ;;
- esac
+ case "${d#-}" in
+ 0) echo "$GLOW_COLOR" ;;
+ 1) echo "$GRAD1_COLOR" ;;
+ 2) echo "$GRAD2_COLOR" ;;
+ *) echo "$BASE_COLOR" ;;
+ esac
- if (( pos == MAX_POS - 1 )); then
- GLOW_POS=$(( (GLOW_POS + 1) % MAX_POS ))
- fi
+ if ((pos == MAX_POS - 1)); then
+ GLOW_POS=$(((GLOW_POS + 1) % MAX_POS))
+ fi
}
-# ---------- Main function ----------
-
+# ---------- Main function ----------
function get_color() {
- if [[ "$EFFECT_TYPE" == "wallust_random" && ${#WALLUST_COLORS[@]} -gt 0 ]]; then
- wallust_random
- elif [[ "$EFFECT_TYPE" == "gradient_flow" && ${#WALLUST_COLORS[@]} -ge 16 ]]; then
- gradient_flow_color "$1"
+ if [[ "$EFFECT_TYPE" == "wallust_random" && ${#WALLUST_COLORS[@]} -gt 0 ]]; then
+ wallust_random
+ elif [[ "$EFFECT_TYPE" == "gradient_flow" && ${#WALLUST_COLORS[@]} -ge 16 ]]; then
+ gradient_flow_color "$1"
+ else
+ random_hex
+ fi
+}
+
+# Set a gradient border option for both legacy hyprlang and Lua config modes.
+# Usage: set_gradient_border general:col.active_border color0 color1 ... [angledeg]
+set_gradient_border() {
+ local option="$1"
+ shift
+ local angle="270"
+ local -a colors=()
+ local arg c lua_colors expr out
+
+ for arg in "$@"; do
+ if [[ "$arg" =~ ^([0-9]+)deg$ ]]; then
+ angle="${BASH_REMATCH[1]}"
else
- random_hex
+ colors+=("$arg")
fi
+ done
+
+ ((${#colors[@]} > 0)) || return 1
+
+ # Legacy conf mode
+ if out="$(hyprctl keyword "$option" "${colors[@]}" "${angle}deg" 2>&1)"; then
+ return 0
+ fi
+
+ # Lua config mode rejects keyword; use hl.config via eval.
+ lua_colors=""
+ for c in "${colors[@]}"; do
+ [[ -n "$lua_colors" ]] && lua_colors+=", "
+ lua_colors+="\"${c}\""
+ done
+
+ case "$option" in
+ general:col.active_border)
+ expr="hl.config({ general = { col = { active_border = { colors = { ${lua_colors} }, angle = ${angle} } } } })"
+ ;;
+ general:col.inactive_border)
+ expr="hl.config({ general = { col = { inactive_border = { colors = { ${lua_colors} }, angle = ${angle} } } } })"
+ ;;
+ *)
+ printf '[RainbowBorders] unsupported option for Lua fallback: %s\n' "$option" >&2
+ printf '[RainbowBorders] keyword error: %s\n' "$out" >&2
+ return 1
+ ;;
+ esac
+
+ if out="$(hyprctl eval "$expr" 2>&1)"; then
+ return 0
+ fi
+
+ printf '[RainbowBorders] failed to set %s\n' "$option" >&2
+ printf '[RainbowBorders] keyword error: %s\n' "$out" >&2
+ printf '[RainbowBorders] eval error: %s\n' "$out" >&2
+ return 1
}
# border effect for ACTIVE window
-hyprctl keyword general:col.active_border $(get_color 0) $(get_color 1) $(get_color 2) $(get_color 3) $(get_color 4) $(get_color 5) $(get_color 6) $(get_color 7) $(get_color 8) $(get_color 9) 270deg
+set_gradient_border general:col.active_border \
+ "$(get_color 0)" "$(get_color 1)" "$(get_color 2)" "$(get_color 3)" "$(get_color 4)" \
+ "$(get_color 5)" "$(get_color 6)" "$(get_color 7)" "$(get_color 8)" "$(get_color 9)" \
+ 270deg
-# border effect for INACTIVE windows
-#hyprctl keyword general:col.inactive_border $(get_color 0) $(get_color 1) $(get_color 2) $(get_color 3) $(get_color 4) $(get_color 5) $(get_color 6) $(get_color 7) $(get_color 8) $(get_color 9) 270deg \ No newline at end of file
+# border effect for INACTIVE windows (optional)
+# set_gradient_border general:col.inactive_border \
+# "$(get_color 0)" "$(get_color 1)" "$(get_color 2)" "$(get_color 3)" "$(get_color 4)" \
+# "$(get_color 5)" "$(get_color 6)" "$(get_color 7)" "$(get_color 8)" "$(get_color 9)" \
+# 270deg
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage