diff options
author | Jaakko Luttinen <jaakko.luttinen@iki.fi> | 2019-05-02 23:42:53 +0300 |
---|---|---|
committer | Jaakko Luttinen <jaakko.luttinen@iki.fi> | 2023-12-09 14:36:07 +0200 |
commit | 5e329241e8b5c25e17e3a852323890d25cd271d9 (patch) | |
tree | 96dfa86f56f9aa96e26c910b5fdeb19036c89f2e /nixos | |
parent | 2c7f3c0fb7c08a0814627611d9d7d45ab6d75335 (diff) | |
download | nixlib-5e329241e8b5c25e17e3a852323890d25cd271d9.tar nixlib-5e329241e8b5c25e17e3a852323890d25cd271d9.tar.gz nixlib-5e329241e8b5c25e17e3a852323890d25cd271d9.tar.bz2 nixlib-5e329241e8b5c25e17e3a852323890d25cd271d9.tar.lz nixlib-5e329241e8b5c25e17e3a852323890d25cd271d9.tar.xz nixlib-5e329241e8b5c25e17e3a852323890d25cd271d9.tar.zst nixlib-5e329241e8b5c25e17e3a852323890d25cd271d9.zip |
light: support brightness control keys
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/modules/programs/light.nix | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/nixos/modules/programs/light.nix b/nixos/modules/programs/light.nix index 57cc925be465..1cdf22a7699d 100644 --- a/nixos/modules/programs/light.nix +++ b/nixos/modules/programs/light.nix @@ -9,6 +9,7 @@ in { options = { programs.light = { + enable = mkOption { default = false; type = types.bool; @@ -17,11 +18,60 @@ in and udev rules granting access to members of the "video" group. ''; }; + + brightnessKeys = { + enable = mkOption { + type = types.bool; + default = false; + description = '' + Whether to enable brightness control with keyboard keys. + + This is mainly useful for minimalistic (desktop) environments. You + may want to leave this disabled if you run a feature-rich desktop + environment such as KDE, GNOME or Xfce as those handle the + brightness keys themselves. However, enabling brightness control + with this setting makes the control independent of X, so the keys + work in non-graphical ttys, so you might want to consider using this + instead of the default offered by the desktop environment. + + Enabling this will turn on {option}`services.actkbd`. + ''; + }; + + step = mkOption { + type = types.int; + default = 10; + description = '' + The percentage value by which to increase/decrease brightness. + ''; + }; + + }; + }; }; config = mkIf cfg.enable { environment.systemPackages = [ pkgs.light ]; services.udev.packages = [ pkgs.light ]; + services.actkbd = mkIf cfg.brightnessKeys.enable { + enable = true; + bindings = let + light = "${pkgs.light}/bin/light"; + step = toString cfg.brightnessKeys.step; + in [ + { + keys = [ 224 ]; + events = [ "key" ]; + # Use minimum brightness 0.1 so the display won't go totally black. + command = "${light} -N 0.1 && ${light} -U ${step}"; + } + { + keys = [ 225 ]; + events = [ "key" ]; + command = "${light} -A ${step}"; + } + ]; + }; }; } |