feat: add wob overlay for volume and brightness keys
Move FIFO setup and percentage emission into helper scripts so the Hyprland config has no raw $VAR references — Hyprland's parser substitutes $varname at parse time, which mangled awk's $2 and $HYPRLAND_INSTANCE_SIGNATURE and left binds broken after reload. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
c351285963
commit
7b99932299
5 changed files with 51 additions and 4 deletions
|
|
@ -1,4 +1,5 @@
|
|||
exec-once = fcitx5
|
||||
exec-once = ~/.config/hypr/scripts/wob-daemon.sh
|
||||
exec-once = [workspace 1 silent] $browser
|
||||
exec-once = [workspace 2 silent] thunderbird
|
||||
exec-once = [workspace 2 silent] element-desktop
|
||||
|
|
|
|||
|
|
@ -282,12 +282,12 @@ bindd = SUPER SHIFT, up, Swap window up, swapwindow, u
|
|||
bindd = SUPER SHIFT, down, Swap window down, swapwindow, d
|
||||
|
||||
# Laptop multimedia keys for volume and LCD brightness
|
||||
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
|
||||
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||
bindel = ,XF86AudioRaiseVolume, exec, ~/.config/hypr/scripts/wob-volume.sh up
|
||||
bindel = ,XF86AudioLowerVolume, exec, ~/.config/hypr/scripts/wob-volume.sh down
|
||||
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
||||
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
|
||||
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
|
||||
bindel = ,XF86MonBrightnessUp, exec, ~/.config/hypr/scripts/wob-brightness.sh up
|
||||
bindel = ,XF86MonBrightnessDown, exec, ~/.config/hypr/scripts/wob-brightness.sh down
|
||||
|
||||
# Requires playerctl
|
||||
bindl = , XF86AudioNext, exec, playerctl next
|
||||
|
|
|
|||
17
hypr/scripts/wob-brightness.sh
Executable file
17
hypr/scripts/wob-brightness.sh
Executable file
|
|
@ -0,0 +1,17 @@
|
|||
#!/usr/bin/env bash
|
||||
# Adjust backlight and emit current percentage to the wob overlay FIFO.
|
||||
# Usage: wob-brightness.sh up|down
|
||||
|
||||
set -u
|
||||
|
||||
case "${1:-}" in
|
||||
up) brightnessctl -e4 -n2 set 5%+ >/dev/null ;;
|
||||
down) brightnessctl -e4 -n2 set 5%- >/dev/null ;;
|
||||
*) echo "usage: $0 up|down" >&2; exit 2 ;;
|
||||
esac
|
||||
|
||||
fifo="${XDG_RUNTIME_DIR:-/tmp}/hypr-wob.${HYPRLAND_INSTANCE_SIGNATURE:-default}"
|
||||
[[ -p "$fifo" ]] || exit 0
|
||||
current=$(brightnessctl get)
|
||||
max=$(brightnessctl max)
|
||||
awk -v c="$current" -v m="$max" 'BEGIN { printf "%d\n", (c/m)*100 }' > "$fifo"
|
||||
14
hypr/scripts/wob-daemon.sh
Executable file
14
hypr/scripts/wob-daemon.sh
Executable file
|
|
@ -0,0 +1,14 @@
|
|||
#!/usr/bin/env bash
|
||||
# Run by Hyprland exec-once. Creates a per-instance FIFO and pipes it to wob
|
||||
# so volume/brightness binds can show an on-screen overlay.
|
||||
|
||||
set -u
|
||||
|
||||
command -v wob >/dev/null 2>&1 || exit 0
|
||||
|
||||
fifo="${XDG_RUNTIME_DIR:-/tmp}/hypr-wob.${HYPRLAND_INSTANCE_SIGNATURE:-default}"
|
||||
rm -f "$fifo"
|
||||
mkfifo "$fifo"
|
||||
trap 'rm -f "$fifo"' EXIT
|
||||
|
||||
tail -f "$fifo" | wob
|
||||
15
hypr/scripts/wob-volume.sh
Executable file
15
hypr/scripts/wob-volume.sh
Executable file
|
|
@ -0,0 +1,15 @@
|
|||
#!/usr/bin/env bash
|
||||
# Adjust volume and emit current percentage to the wob overlay FIFO.
|
||||
# Usage: wob-volume.sh up|down
|
||||
|
||||
set -u
|
||||
|
||||
case "${1:-}" in
|
||||
up) wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ ;;
|
||||
down) wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- ;;
|
||||
*) echo "usage: $0 up|down" >&2; exit 2 ;;
|
||||
esac
|
||||
|
||||
fifo="${XDG_RUNTIME_DIR:-/tmp}/hypr-wob.${HYPRLAND_INSTANCE_SIGNATURE:-default}"
|
||||
[[ -p "$fifo" ]] || exit 0
|
||||
wpctl get-volume @DEFAULT_AUDIO_SINK@ | awk '{printf "%d\n", $2*100}' > "$fifo"
|
||||
Loading…
Add table
Add a link
Reference in a new issue