1
0
Fork 0
mirror of https://github.com/nix-community/home-manager synced 2024-11-20 10:09:45 +01:00

hyprland: add option for per-input device configs

This commit is contained in:
Mathis H 2024-03-12 22:16:18 +00:00 committed by GitHub
parent a500de54b2
commit 49a266d2ca
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 30 additions and 3 deletions

View file

@ -207,23 +207,41 @@ in {
let
indent = concatStrings (replicate indentLevel " ");
sections = filterAttrs (n: v: isAttrs v && n != "device") attrs;
mkSection = n: attrs: ''
${indent}${n} {
${toHyprconf attrs (indentLevel + 1)}${indent}}
'';
sections = filterAttrs (n: v: isAttrs v) attrs;
mkDeviceCategory = device: ''
${indent}device {
name=${device.name}
${
toHyprconf (filterAttrs (n: _: "name" != n) device)
(indentLevel + 1)
}${indent}}
'';
deviceCategory = lib.optionalString (hasAttr "device" attrs)
(if isList attrs.device then
(concatMapStringsSep "\n" (d: mkDeviceCategory d) attrs.device)
else
mkDeviceCategory attrs.device);
mkFields = generators.toKeyValue {
listsAsDuplicateKeys = true;
inherit indent;
};
allFields = filterAttrs (n: v: !(isAttrs v)) attrs;
allFields = filterAttrs (n: v: !(isAttrs v) && n != "device") attrs;
importantFields = filterAttrs (n: _:
(hasPrefix "$" n) || (hasPrefix "bezier" n)
|| (cfg.sourceFirst && (hasPrefix "source" n))) allFields;
fields = builtins.removeAttrs allFields
(mapAttrsToList (n: _: n) importantFields);
in mkFields importantFields
in mkFields importantFields + deviceCategory
+ concatStringsSep "\n" (mapAttrsToList mkSection sections)
+ mkFields fields;

View file

@ -6,6 +6,10 @@ bezier=smoothOut, 0.36, 0, 0.66, -0.56
bezier=smoothIn, 0.25, 1, 0.5, 1
bezier=overshot, 0.4,0.8,0.2,1.2
source=sourced.conf
device {
name=some:device
enable=true
}
animations {
animation=border, 1, 2, smoothIn
animation=fade, 1, 4, smoothOut

View file

@ -46,6 +46,11 @@
"$mod ALT, mouse:272, resizewindow"
];
device = {
name = "some:device";
enable = true;
};
plugin = {
plugin1 = {
dummy = "plugin setting";