diff --git a/home/tiling/niri/scripts/brightness.sh b/home/tiling/niri/scripts/brightness.sh index 73ed4a9..a321d8b 100755 --- a/home/tiling/niri/scripts/brightness.sh +++ b/home/tiling/niri/scripts/brightness.sh @@ -1,5 +1,4 @@ #!/usr/bin/env bash - WAYBAR_SIGNAL=8 # SIGRTMIN+8 if [ "$#" -ne 1 ]; then @@ -15,15 +14,33 @@ if ! [[ "$value" =~ ^-?[0-9]+$ ]] || [ "$value" -lt -100 ] || [ "$value" -gt 100 exit 1 fi -# Apply brightness change with correct syntax -if [ "$value" -gt 0 ]; then - brightnessctl s "+${value}%" >/dev/null -elif [ "$value" -lt 0 ]; then - brightnessctl s "${value#-}%-" >/dev/null +# Determine which brightness control tool to use +if command -v ddcutil >/dev/null 2>&1; then + # Get current brightness + current=$(ddcutil getvcp 10 | grep -oP 'current value =\s+\K\d+') + + if [ -z "$current" ]; then + echo "Error: failed to read current brightness from ddcutil" >&2 + exit 1 + fi + + # Calculate new brightness (ddcutil uses absolute 0-100 scale) + new=$((current + value)) + + # Clamp to valid range + [ "$new" -lt 0 ] && new=0 + [ "$new" -gt 100 ] && new=100 + + # Set new brightness + ddcutil setvcp 10 "$new" >/dev/null 2>&1 else - : # no-op for 0 + # Fallback to brightnessctl + if [ "$value" -gt 0 ]; then + brightnessctl s "+${value}%" >/dev/null + elif [ "$value" -lt 0 ]; then + brightnessctl s "${value#-}%-" >/dev/null + fi fi # Notify Waybar to refresh pkill -RTMIN+"$WAYBAR_SIGNAL" waybar - diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index 7172e5d..9588212 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -10,6 +10,18 @@ { networking.hostName = "alien"; + environment.systemPackages = with pkgs; [ + pkgs.ddcutil + pkgs.mangohud + ]; + + # enable ddcutil + users.users.sckova.extraGroups = [ "i2c" ]; + boot.initrd.kernelModules = [ "i2c-dev" ]; + services.udev.extraRules = '' + KERNEL=="i2c-[0-9]*", GROUP="i2c", MODE="0660" + ''; + boot.binfmt.emulatedSystems = [ "aarch64-linux" "riscv64-linux" @@ -62,7 +74,6 @@ }; environment = { - systemPackages = [ pkgs.mangohud ]; loginShellInit = '' [[ "$(tty)" = "/dev/tty1" ]] && ./gs.sh '';