diff --git a/options/custom/desktops/niri/input.nix b/options/custom/desktops/niri/input.nix index a860689..0f4881c 100644 --- a/options/custom/desktops/niri/input.nix +++ b/options/custom/desktops/niri/input.nix @@ -33,11 +33,11 @@ in { repeat-rate = 40; }; - # BUG: Applies to trackball device, switch to "flat" when per-device configuration is supported + # TODO: Update when per-device configuration is supported # https://github.com/YaLTeR/niri/issues/371 # https://github.com/sodiboo/niri-flake/blob/main/docs.md#programsnirisettingsinputmouseaccel-profile mouse = { - accel-profile = "adaptive"; + accel-profile = "adaptive"; # flat accel-speed = -0.7; scroll-factor = 1.25; }; @@ -55,8 +55,10 @@ in { # https://github.com/sodiboo/niri-flake/blob/main/docs.md#programsnirisettingsinputtrackballaccel-profile trackball = { accel-profile = "adaptive"; - accel-speed = -0.5; + accel-speed = -0.8; + left-handed = true; middle-emulation = true; + natural-scroll = true; }; }; } diff --git a/options/custom/services/udev.nix b/options/custom/services/udev.nix index 47a24f8..c94ba6e 100644 --- a/options/custom/services/udev.nix +++ b/options/custom/services/udev.nix @@ -6,19 +6,46 @@ }: with lib; let cfg = config.custom.services.udev; + + chgrp = getExe' pkgs.coreutils "chgrp"; + chmod = getExe' pkgs.coreutils "chmod"; in { - options.custom.services.udev.enable = mkOption {default = false;}; + options.custom.services.udev = { + enable = mkOption {default = false;}; + backlight = mkOption {default = true;}; + input = mkOption {default = true;}; + }; config = mkIf cfg.enable { # https://wiki.archlinux.org/title/Udev - # Allow video group to change display brightness - # https://raw.githubusercontent.com/ErikReider/SwayOSD/main/data/udev/99-swayosd.rules - services.udev.extraRules = let - chgrp = "${pkgs.coreutils}/bin/chgrp"; - chmod = "${pkgs.coreutils}/bin/chmod"; - in '' - ACTION=="add", SUBSYSTEM=="backlight", RUN+="${chgrp} video /sys/class/backlight/%k/brightness" - ACTION=="add", SUBSYSTEM=="backlight", RUN+="${chmod} g+w /sys/class/backlight/%k/brightness" - ''; + services.udev.extraRules = + optionalString cfg.backlight '' + # Allow video group to change display brightness + # https://raw.githubusercontent.com/ErikReider/SwayOSD/main/data/udev/99-swayosd.rules + ACTION=="add", \ + SUBSYSTEM=="backlight", \ + RUN+="${chgrp} video /sys/class/backlight/%k/brightness" + ACTION=="add", \ + SUBSYSTEM=="backlight", \ + RUN+="${chmod} g+w /sys/class/backlight/%k/brightness" + '' + + optionalString cfg.input '' + # Per-device input configuration + # https://wiki.archlinux.org/title/Libinput#Via_Udev_Rule + # https://wayland.freedesktop.org/libinput/doc/latest/device-configuration-via-udev.html + #?? sudo libinput list-devices + #?? sudo udevadm info /dev/input/event* + #?? sudo udevadm trigger /dev/input/event* + + # Kensington Orbit + ENV{ID_USB_SERIAL}=="Kensington_ORBIT_WIRELESS_TB", \ + ENV{ID_INPUT_MOUSE}="", \ + ENV{ID_INPUT_TRACKBALL}="1" + + # ProtoArc EM04 + ENV{ID_USB_SERIAL}=="Nordic_2.4G_Wireless_Receiver", \ + ENV{ID_INPUT_MOUSE}="", \ + ENV{ID_INPUT_TRACKBALL}="1" + ''; }; }