aboutsummaryrefslogtreecommitdiffstats
path: root/config/hypr/scripts/ToggleOpacity.sh
blob: 7aa58bfb9adf6e5f7e13b8f1a4398d6d2b106155 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/usr/bin/env bash
# ==================================================
#  KoolDots (2026)
#  Project URL: https://github.com/LinuxBeginnings
#  License: GNU GPLv3
#  SPDX-License-Identifier: GPL-3.0-or-later
# ==================================================
# Toggle active_opacity using Lua hl.config (or legacy keyword in conf mode).
# Uses flock to prevent double-execution from dual-config (.conf + .lua) loading.

TRANSPARENCY=0.85
NORMAL=1.0
LOCK="/tmp/.hypr_toggle_opacity_${HYPRLAND_INSTANCE_SIGNATURE:-default}.lock"

config_home="${XDG_CONFIG_HOME:-$HOME/.config}"
hypr_dir="$config_home/hypr"
lua_entry="$hypr_dir/hyprland.lua"
legacy_lua_entry="$config_home/hyprland.lua"

if [[ -f "$lua_entry" || -f "$legacy_lua_entry" ]]; then
    hypr_config_mode="lua"
else
    hypr_config_mode="conf"
fi

(
  flock -n 200 || exit 0

  CURRENT=$(hyprctl -j getoption decoration:active_opacity 2>/dev/null | jq -r '.float // empty')
  if [[ -z "$CURRENT" || "$CURRENT" == "null" ]]; then
    CURRENT=$(hyprctl getoption decoration:active_opacity 2>/dev/null | awk 'NR==1{print $2}')
  fi

  IS_FULL=$(awk -v c="${CURRENT:-1.0}" 'BEGIN {print (c >= 0.999) ? "1" : "0"}')

  if [ "$IS_FULL" = "1" ]; then
    TARGET="$TRANSPARENCY"
  else
    TARGET="$NORMAL"
  fi

  if [[ "$hypr_config_mode" == "lua" ]]; then
    hyprctl eval "hl.config({ decoration = { active_opacity = ${TARGET} } })"
  else
    hyprctl keyword decoration:active_opacity "$TARGET"
  fi
) 200>"$LOCK"
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage