summaryrefslogtreecommitdiff
path: root/home/desktops/sway/config.nix
blob: b3d07d4ca179b59b13035ea8d2434675d851ec77 (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
{config, ...}: {
  wayland.windowManager.sway = {
    config = {
      # monitors
      output =
        (builtins.listToAttrs (map (mon: {
            name = mon.name;
            value = {
              dpms = "on";
              scale = toString mon.scale;
              render_bit_depth = toString mon.bitdepth;
            };
          })
          config.monitors))
        // {
          # wallpaper
          "*" = {
            bg = "${config.theme.wallpaper} fill";
          };
        };

      # inputs
      input = {
        "*" = {
          xkb_layout = "us";
          xkb_options = "compose:ralt";
          xkb_numlock = "enable";
        };

        "type:touchpad" = {
          tap = "enabled";
          natural_scroll = "enabled";
          middle_emulation = "enabled";
        };
      };

      startup =
        # autostart apps
        builtins.map (command: {
          inherit command;
          always = false;
        })
        config.autoRun;

      # colors
      colors = let
        base = "#${config.theme.colors.base}";
        surface = "#${config.theme.colors.surface}";
        primary = "#${config.theme.colors.primary}";
        text = "#${config.theme.colors.text}";
        white = "#${config.theme.colors.bright.white}";
        error = "#${config.theme.colors.error}";
      in rec {
        background = base;

        focused = {
          border = primary;
          background = base;
          text = text;
          indicator = white;
          childBorder = primary;
        };

        focusedInactive = {
          border = surface;
          background = base;
          text = text;
          indicator = surface;
          childBorder = surface;
        };

        unfocused = focusedInactive;

        urgent = {
          border = error;
          background = error;
          text = text;
          indicator = error;
          childBorder = error;
        };

        placeholder = unfocused;
      };

      window = {
        titlebar = false;
        border = config.theme.borderWidth;
      };

      floating = {
        titlebar = false;
        border = config.theme.borderWidth;
        modifier = "Mod4 normal";
      };

      gaps = {
        inner = config.theme.innerGap;
        outer = config.theme.outerGap;
      };

      modes = {};
      bars = [];
    };

    extraConfig = ''
      # gestures
      bindgesture swipe:right workspace prev
      bindgesture swipe:left workspace next

      # swayfx
      corner_radius ${toString config.theme.outerRadius}
      smart_corner_radius ${toString config.theme.outerRadius}
      blur ${
        if config.theme.blur
        then "enabled"
        else "disabled"
      }
      blur_radius 10
      blur_passes 3
    '';
  };
}