diff options
Diffstat (limited to 'home/desktops/sway/config.nix')
-rw-r--r-- | home/desktops/sway/config.nix | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/home/desktops/sway/config.nix b/home/desktops/sway/config.nix new file mode 100644 index 0000000..b3d07d4 --- /dev/null +++ b/home/desktops/sway/config.nix @@ -0,0 +1,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 + ''; + }; +} |