summaryrefslogtreecommitdiff
path: root/home/desktops/hyprland/settings.nix
blob: 5458dc865c32868935fa46d6f882bb8720e9b4b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
{config, ...}: {
  wayland.windowManager.hyprland = {
    importantPrefixes = [
      "bezier"
      "enabled"
      "output"
    ];

    settings = {
      # Monitors
      monitorv2 =
        map (monitor: {
          output =
            if monitor.desc == ""
            then monitor.port
            else "desc:${monitor.desc}";
          mode =
            if monitor.size.enabled
            then "${toString monitor.size.x}x${toString monitor.size.y}"
            else "preferred";
          position =
            if monitor.position.enabled
            then "${toString monitor.position.x}x${toString monitor.position.y}"
            else "auto";
          scale = toString monitor.scale;
          bitdepth = toString monitor.bitdepth;
        })
        config.monitors;

      # Autostart
      exec-once = config.autoRun;

      # General
      general = {
        gaps_in = config.theme.innerGap;
        gaps_out = config.theme.outerGap;
        layout = "hy3";
        resize_on_border = "yes";
        extend_border_grab_area = 20;
        border_size = config.theme.borderWidth;
        "col.active_border" = "rgb(${config.theme.colors.primary})";
        "col.inactive_border" = "rgb(${config.theme.colors.surface})";
      };

      # Gestures
      gesture = [
        "3, horizontal, workspace"
      ];

      # Decoration
      decoration = {
        rounding = config.theme.outerRadius;
        shadow.enabled = false;
        blur = {
          enabled = config.theme.blur;
          size = 4;
          passes = 2;
          noise = 0.008;
          contrast = 0.8916;
          brightness = 0.8;
        };
      };

      animations = {
        enabled = true;

        bezier = [
          "default, 0.12, 0.92, 0.08, 1.0"
          "wind, 0.12, 0.92, 0.08, 1.0"
          "overshot, 0.18, 0.95, 0.22, 1.03"
          "linear, 1, 1, 1, 1"
        ];

        animation = [
          "windows, 1, 5, wind, popin 60%"
          "windowsIn, 1, 6, overshot, popin 60%"
          "windowsOut, 1, 4, overshot, popin 60%"
          "windowsMove, 1, 4, overshot, slide"
          "layers, 1, 4, default, popin"
          "fadeIn, 1, 7, default"
          "fadeOut, 1, 7, default"
          "fadeSwitch, 1, 7, default"
          "fadeShadow, 1, 7, default"
          "fadeDim, 1, 7, default"
          "fadeLayers, 1, 7, default"
          "workspaces, 1, 5, overshot, slide"
          "border, 1, 1, linear"
          "borderangle, 1, 24, linear, loop"
        ];
      };

      # Input
      input = {
        kb_layout = "us";
        kb_variant = "";
        kb_model = "";
        kb_options = "gtp:alt_shift_toggle, compose:ralt";
        kb_rules = "";
        follow_mouse = 1;
        touchpad = {
          natural_scroll = "yes";
        };
        sensitivity = 0;
      };

      # Window rules
      windowrulev2 = [
        "float,workspace 1,forclass wofi"
        "noborder,forclass wofi"
      ];

      # Layer rules
      layerrule = [
        # fix weird borders
        "blur true, match:namespace wofi"
        "ignore_alpha 0, match:namespace wofi"
        "blur true, match:namespace notificaations"
        "ignore_alpha 0, match:namespace notifications"
        "blur true, match:namespace swaync-notificaation-window"
        "ignore_alpha 0, match:namespace swaync-notification-window"
        "blur true, match:namespace swaync-control-center"
        "ignore_alpha 0, match:namespace swaync-control-center"

        # dont animate slurp
        "no_anim true, match:namespace selection"
      ];

      # XWayland
      xwayland = {
        force_zero_scaling = "true";
        use_nearest_neighbor = "false";
      };

      # Misc
      misc = {
        disable_hyprland_logo = true;
        disable_splash_rendering = true;
        key_press_enables_dpms = true;
        mouse_move_enables_dpms = true;
        enable_anr_dialog = false;
        vrr = 1;
      };

      # Ecosystem
      ecosystem = {
        no_update_news = true;
        no_donation_nag = true;
      };
    }; # end settings
  }; # end hyprland
}