summaryrefslogtreecommitdiff
path: root/home/desktops/sway/config.nix
diff options
context:
space:
mode:
Diffstat (limited to 'home/desktops/sway/config.nix')
-rw-r--r--home/desktops/sway/config.nix122
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
+ '';
+ };
+}