diff --git a/home/modules/i3+sway/default.nix b/home/modules/i3+sway/default.nix index 11826f9..f0ba99a 100644 --- a/home/modules/i3+sway/default.nix +++ b/home/modules/i3+sway/default.nix @@ -87,8 +87,8 @@ let "${shared_config.modifier}+r" = "mode resize"; - "XF86MonBrightnessUp" = "exec brightnessctl s +5%"; - "XF86MonBrightnessDown" = "exec brightnessctl s 5%-"; + "XF86MonBrightnessUp" = "exec ddcutil setvcp 10 + 5"; + "XF86MonBrightnessDown" = "exec ddcutil setvcp 10 - 5"; }; } cfg.extraSharedConfig; in { @@ -149,11 +149,21 @@ in { [backlight] command=${pkgs.writeShellScript "i3blocks-backlight" '' - if command -v brightnessctl &>/dev/null; then - brightnessctl g | awk -v max=$(brightnessctl m) '{printf "☀️ %.0f%%\n", ($1/max)*100}' + if command -v ddcutil &>/dev/null; then + # Handle mouse scroll events + case $BLOCK_BUTTON in + 4) ddcutil setvcp 10 + 5 ;; # Scroll up - increase brightness + 5) ddcutil setvcp 10 - 5 ;; # Scroll down - decrease brightness + esac + + # Display current brightness + brightness=$(ddcutil getvcp 10 2>/dev/null | grep -oP 'current value =\s*\K\d+') + if [ -n "$brightness" ]; then + echo "☀️ $brightness%" + fi fi ''} - interval=1 + interval=5 separator=true [network] diff --git a/roles/desktop/x11.nix b/roles/desktop/x11.nix index be88919..b6b5a5d 100644 --- a/roles/desktop/x11.nix +++ b/roles/desktop/x11.nix @@ -19,8 +19,20 @@ in polkit_gnome # GNOME polkit authentication agent (more stable with i3) picom # Compositor for smooth rendering (important for Nvidia) networkmanagerapplet # NetworkManager system tray applet + ddcutil # DDC/CI monitor control for brightness ]; }; }; + + # Enable DDC/CI support for monitor brightness control + boot.kernelModules = [ "i2c-dev" ]; + + # Add ddcutil udev rules and user permissions + hardware.i2c.enable = true; + + # Install ddcutil system-wide + environment.systemPackages = with pkgs; [ + ddcutil + ]; }; }