From e93dec56bbe5c1b94cd5b35ee07e3807c5ba0433 Mon Sep 17 00:00:00 2001 From: Ahmed Abdelhalim Date: Mon, 9 Feb 2026 23:35:27 +0100 Subject: Fix notification showing empty due to race condition Co-Authored-By: Claude.ai --- roles/hyprland/files/scripts/brightness.sh | 36 ++++++++++++++++-------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/roles/hyprland/files/scripts/brightness.sh b/roles/hyprland/files/scripts/brightness.sh index f25495f6..1d935f28 100755 --- a/roles/hyprland/files/scripts/brightness.sh +++ b/roles/hyprland/files/scripts/brightness.sh @@ -17,13 +17,12 @@ set_brightness_ddcutil() { local display_serial="$1" local step="$2" local direction="$3" - flock -n /tmp/ddcutil-brightness.lock \ - ddcutil \ - --noconfig \ - --skip-ddc-checks \ - --sleep-multiplier=0.1 \ - --sn="$display_serial" \ - setvcp 10 $direction "$step" + ddcutil \ + --noconfig \ + --skip-ddc-checks \ + --sleep-multiplier=0.1 \ + --sn="$display_serial" \ + setvcp 10 $direction "$step" } set_brightness_brightnessctl() { @@ -34,14 +33,13 @@ set_brightness_brightnessctl() { get_brightness_ddcutil() { local display_serial="$1" - flock -n /tmp/ddcutil-brightness.lock \ - ddcutil \ - --noconfig \ - --skip-ddc-checks \ - --sleep-multiplier=0.1 \ - --sn="$display_serial" \ - --terse getvcp 10 \ - | awk '{print $4}' + ddcutil \ + --noconfig \ + --skip-ddc-checks \ + --sleep-multiplier=0.1 \ + --sn="$display_serial" \ + --terse getvcp 10 \ + | awk '{print $4}' } get_brightness_brightnessctl() { @@ -69,13 +67,17 @@ set_brightness() { if [ "$display_name" = "eDP-1" ]; then set_brightness_brightnessctl "$step" "$direction" + local value=$(get_brightness_brightnessctl) elif [ -n "$display_serial" ]; then + # Hold a single lock across both set and get to prevent races + exec 9>/tmp/ddcutil-brightness.lock + flock -n 9 || return set_brightness_ddcutil "$display_serial" "$step" "$direction" + local value=$(get_brightness_ddcutil "$display_serial") + exec 9>&- else return fi - - local value=$(get_current_brightness "$display_name" "$display_serial") notify "$display_serial" "$display_name" "$value" } -- cgit v1.2.3