diff options
author | Freya Murphy <freya@freyacat.org> | 2025-06-28 16:08:10 -0400 |
---|---|---|
committer | Freya Murphy <freya@freyacat.org> | 2025-06-28 16:08:10 -0400 |
commit | 49aea0dbed7cc4a3f26c7beff624c35aaf48a470 (patch) | |
tree | 255ede903ce278dc56c480de4df66966cdc95dd9 /modules/desktops/sway/config.nix | |
parent | make hyprlock input not change bg color (diff) | |
download | dotfiles-nix-49aea0dbed7cc4a3f26c7beff624c35aaf48a470.tar.gz dotfiles-nix-49aea0dbed7cc4a3f26c7beff624c35aaf48a470.tar.bz2 dotfiles-nix-49aea0dbed7cc4a3f26c7beff624c35aaf48a470.zip |
add swaywm
Diffstat (limited to 'modules/desktops/sway/config.nix')
-rw-r--r-- | modules/desktops/sway/config.nix | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/modules/desktops/sway/config.nix b/modules/desktops/sway/config.nix new file mode 100644 index 0000000..c6c78ca --- /dev/null +++ b/modules/desktops/sway/config.nix @@ -0,0 +1,124 @@ +{config, ...}: { + home-manager.users.${config.user} = { + 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 + ''; + }; + }; +} |