From ebaff5eea6bd1c90c7915950dd0583ae11f36582 Mon Sep 17 00:00:00 2001 From: Ittihadyya Date: Sun, 24 Nov 2024 18:43:24 +0200 Subject: [PATCH] mostly finished porting the config over. that's cool --- sway.mod.nix | 388 ++++++++++++++++++++++++++------------------------- 1 file changed, 198 insertions(+), 190 deletions(-) diff --git a/sway.mod.nix b/sway.mod.nix index 91a9315..24e7b91 100644 --- a/sway.mod.nix +++ b/sway.mod.nix @@ -20,212 +20,220 @@ ]; personal.home_modules = [ ( - { lib, pkgs, ... }: { - wayland.windowManager.sway.config = { - modifier = "Mod4"; - fonts = { - names = [ "pango" ]; - style = "monospace"; - size = 8.0; - }; - terminal = "$\{pkgs.terminator}/bin/terminator"; + lib, + pkgs, + config, + ... + }: + { + wayland.windowManager.sway = { + enable = true; + systemd.enable = true; - keybindings = - let - mod = wayland.windowManager.sway.config.modifier; - term = wayland.windowManager.sway.config.terminal; - rofi = "$\{pkgs.rofi-wayland}/bin/rofi"; - in - lib.mkOptionDefault { - "${mod}+Return" = "exec ${term}"; # opens a terminal window - "${mod}+Shift+q" = "kill"; # kills the active window + package = pkgs.sway; - "${mod}+s" = ''exec --no-startup-id ${rofi} -run-command "/bin/sh -i -c '{cmd}'" -show combi''; # opens rofi - "${mod}+Tab" = "exec --no-startup-id ${rofi} -show window"; - - # "${mod}+p" = ''mode "resize"''; - "${mod}+o" = "exec \${pkgs.swaylock}/bin/swaylock"; # locks the session, requiring password to unlock. - - ### move focus - "${mod}+Left" = "focus left"; - "${mod}+Down" = "focus down"; - "${mod}+Up" = "focus up"; - "${mod}+Right" = "focus right"; - - ### move windows - "${mod}+Shift+Left" = "move left"; - "${mod}+Shift+Down" = "move down"; - "${mod}+Shift+Up" = "move up"; - "${mod}+Shift+Right" = "move right"; - - "${mod}+Shift+m" = "split h"; # Horizontal split - "${mod}+Shift+v" = "split v"; # Vertical Split - - "${mod}+t" = "fullscreen toggle"; # fullscreen - - "${mod}+r" = "layout stacking"; - "${mod}+w" = "layout tabbed"; - "${mod}+e" = "layout toggle split"; - - "${mod}+Shift+Space" = "floating toggle"; - "${mod}+Space" = "focus mode_toggle"; # change focus between tiling and floating - - "${mod}+a" = "focus parent"; - "${mod}+Shift+a" = "focus child"; - - "${mod}+Shift+c" = "reload"; # config hot-reload, probably gonna be useless cause we're on nixOS, though. - - ### moves user around - "${mod}+1" = "workspace number 1"; - "${mod}+2" = "workspace number 2"; - "${mod}+3" = "workspace number 3"; - "${mod}+4" = "workspace number 4"; - "${mod}+5" = "workspace number 5"; - "${mod}+6" = "workspace number 6"; - "${mod}+7" = "workspace number 7"; - "${mod}+8" = "workspace number 8"; - "${mod}+9" = "workspace number 9"; - "${mod}+0" = "workspace number 10"; - - ### moves containers around - "${mod}+Shift+1" = "move container to workspace number 1"; - "${mod}+Shift+2" = "move container to workspace number 2"; - "${mod}+Shift+3" = "move container to workspace number 3"; - "${mod}+Shift+4" = "move container to workspace number 4"; - "${mod}+Shift+5" = "move container to workspace number 5"; - "${mod}+Shift+6" = "move container to workspace number 6"; - "${mod}+Shift+7" = "move container to workspace number 7"; - "${mod}+Shift+8" = "move container to workspace number 8"; - "${mod}+Shift+9" = "move container to workspace number 9"; - "${mod}+Shift+0" = "move container to workspace number 10"; + config = lib.mkForce { + modifier = "Mod4"; + fonts = { + names = [ "pango" ]; + style = "monospace"; + size = 8.0; }; + terminal = "$\{pkgs.terminator}/bin/terminator"; - ### TODO : Resize mode and automatic floating - assigns = { - "1:说" = [ { title = "^Signal$|Discord$"; } ]; - "2:main" = [ { title = "VSCodium$"; } ]; - "3:browsing" = [ { title = "Librewolf$"; } ]; - "4:misc" = [ ]; - "5:5" = [ ]; - "6:6" = [ ]; - "7:7" = [ ]; - "8:8" = [ ]; - "9:9" = [ ]; - "0:audio" = [ { title = "pwvucontrol$|noisetorch$"; } ]; - }; + keybindings = + let + mod = config.wayland.windowManager.sway.config.modifier; + term = config.wayland.windowManager.sway.config.terminal; + rofi = "$\{pkgs.rofi-wayland}/bin/rofi"; + in + { + "${mod}+Return" = "exec ${term}"; # opens a terminal window + "${mod}+Shift+q" = "kill"; # kills the active window - colors = { - # should probably use a let ... in ... here - background = "#212121"; - focused = { - border = "#2b83a6"; - background = "#2b83a6"; - text = "#ffffff"; - indicator = "#dddddd"; - childBorder = "#2b83a6"; - }; - focusedInactive = { - border = "#212121"; - background = "#212121"; - text = "#86888c"; - indicator = "#292d2e"; - childBorder = "#5a5a5a"; - }; - unfocused = { - border = "#212121"; - background = "#212121"; - text = "#86888c"; - indicator = "#292d2e"; - childBorder = "#5a5a5a"; - }; - urgent = { - border = "#d64e4e"; - background = "#d64e4e"; - text = "#ffffff"; - indicator = "#d64e4e"; - childBorder = "#d64e4e"; - }; - placeholder = { - border = "#212121"; - background = "#0c0c0c"; - text = "#ffffff"; - indicator = "#212121"; - childBorder = "#262626"; - }; - }; + "${mod}+s" = ''exec --no-startup-id ${rofi} -run-command "/bin/sh -i -c '{cmd}'" -show combi''; # opens rofi + "${mod}+Tab" = "exec --no-startup-id ${rofi} -show window"; - bars = [ - { - statusCommand = "\${pkgs.swayrbar}/bin/swayrbar"; - position = "bottom"; - trayOutput = "primary"; - separatorSymbol = "·"; - workspaceButtons = true; - workspaceNumbers = false; + # "${mod}+p" = ''mode "resize"''; + "${mod}+o" = "exec \${pkgs.swaylock}/bin/swaylock"; # locks the session, requiring password to unlock. - colors = { - # again, should probably use a let ... in ... statement here. - background = "#212121"; - statusline = "#dddddd"; - separator = "#666666"; - focusedWorkspace = { - border = "#2b83a6"; - background = "#2b83a6"; - text = "#ffffff"; - }; - activeWorkspace = { - border = "#212121"; - background = "#212121"; - text = "#ffffff"; - }; - inactiveWorkspace = { - border = "#212121"; - background = "#212121"; - text = "#86888c"; - }; - urgentWorkspace = { - border = "#d64e4e"; - background = "#d64e4e"; - text = "#ffffff"; - }; - bindingMode = { - border = "#229c56"; - background = "#229c56"; - text = "#ffffff"; - }; + ### move focus + "${mod}+Left" = "focus left"; + "${mod}+Down" = "focus down"; + "${mod}+Up" = "focus up"; + "${mod}+Right" = "focus right"; + + ### move windows + "${mod}+Shift+Left" = "move left"; + "${mod}+Shift+Down" = "move down"; + "${mod}+Shift+Up" = "move up"; + "${mod}+Shift+Right" = "move right"; + + "${mod}+Shift+m" = "split h"; # Horizontal split + "${mod}+Shift+v" = "split v"; # Vertical Split + + "${mod}+t" = "fullscreen toggle"; # fullscreen + + "${mod}+r" = "layout stacking"; + "${mod}+w" = "layout tabbed"; + "${mod}+e" = "layout toggle split"; + + "${mod}+Shift+Space" = "floating toggle"; + "${mod}+Space" = "focus mode_toggle"; # change focus between tiling and floating + + "${mod}+a" = "focus parent"; + "${mod}+Shift+a" = "focus child"; + + "${mod}+Shift+c" = "reload"; # config hot-reload, probably gonna be useless cause we're on nixOS, though. + + ### moves user around + "${mod}+1" = "workspace number 1"; + "${mod}+2" = "workspace number 2"; + "${mod}+3" = "workspace number 3"; + "${mod}+4" = "workspace number 4"; + "${mod}+5" = "workspace number 5"; + "${mod}+6" = "workspace number 6"; + "${mod}+7" = "workspace number 7"; + "${mod}+8" = "workspace number 8"; + "${mod}+9" = "workspace number 9"; + "${mod}+0" = "workspace number 10"; + + ### moves containers around + "${mod}+Shift+1" = "move container to workspace number 1"; + "${mod}+Shift+2" = "move container to workspace number 2"; + "${mod}+Shift+3" = "move container to workspace number 3"; + "${mod}+Shift+4" = "move container to workspace number 4"; + "${mod}+Shift+5" = "move container to workspace number 5"; + "${mod}+Shift+6" = "move container to workspace number 6"; + "${mod}+Shift+7" = "move container to workspace number 7"; + "${mod}+Shift+8" = "move container to workspace number 8"; + "${mod}+Shift+9" = "move container to workspace number 9"; + "${mod}+Shift+0" = "move container to workspace number 10"; }; - } - ]; - output = { - DP-3 = { - mode = "3440x1440@144.000Hz"; + ### TODO : Resize mode and automatic floating + assigns = { + "1:说" = [ { title = "^Signal$|Discord$"; } ]; + "2:main" = [ { title = "VSCodium$"; } ]; + "3:browsing" = [ { title = "Librewolf$"; } ]; + "4:misc" = [ ]; + "5:5" = [ ]; + "6:6" = [ ]; + "7:7" = [ ]; + "8:8" = [ ]; + "9:9" = [ ]; + "0:audio" = [ { title = "pwvucontrol$|noisetorch$"; } ]; }; - }; - input = { - "10429:2335:UGTABLET_11.6_inch_PenDisplay" = { - map_to_output = "UGD Artist 12 pro 0x19201012"; + colors = { + # should probably use a let ... in ... here + background = "#212121"; + focused = { + border = "#2b83a6"; + background = "#2b83a6"; + text = "#ffffff"; + indicator = "#dddddd"; + childBorder = "#2b83a6"; + }; + focusedInactive = { + border = "#212121"; + background = "#212121"; + text = "#86888c"; + indicator = "#292d2e"; + childBorder = "#5a5a5a"; + }; + unfocused = { + border = "#212121"; + background = "#212121"; + text = "#86888c"; + indicator = "#292d2e"; + childBorder = "#5a5a5a"; + }; + urgent = { + border = "#d64e4e"; + background = "#d64e4e"; + text = "#ffffff"; + indicator = "#d64e4e"; + childBorder = "#d64e4e"; + }; + placeholder = { + border = "#212121"; + background = "#0c0c0c"; + text = "#ffffff"; + indicator = "#212121"; + childBorder = "#262626"; + }; }; - "type:keyboard" = { - xkb_layout = [ - "us(colemak_dh)" - "us" - # "rulemak" - ]; - xkb_options = "grp:rctrl_toggle"; + + bars = [ + ({ + statusCommand = "\${pkgs.swayrbar}/bin/swayrbar"; + position = "bottom"; + trayOutput = "primary"; + # separatorSymbol = "·"; + workspaceButtons = true; + workspaceNumbers = false; + + colors = { + # again, should probably use a let ... in ... statement here. + background = "#212121"; + statusline = "#dddddd"; + separator = "#666666"; + focusedWorkspace = { + border = "#2b83a6"; + background = "#2b83a6"; + text = "#ffffff"; + }; + activeWorkspace = { + border = "#212121"; + background = "#212121"; + text = "#ffffff"; + }; + inactiveWorkspace = { + border = "#212121"; + background = "#212121"; + text = "#86888c"; + }; + urgentWorkspace = { + border = "#d64e4e"; + background = "#d64e4e"; + text = "#ffffff"; + }; + bindingMode = { + border = "#229c56"; + background = "#229c56"; + text = "#ffffff"; + }; + }; + + }) + ]; + output = { + DP-3 = { + mode = "3440x1440@144.000Hz"; + }; }; - }; - gaps = { - smartGaps = true; - inner = 8.0; - outer = 2.0; - }; + input = { + "10429:2335:UGTABLET_11.6_inch_PenDisplay" = { + map_to_output = ''"UGD Artist 12 pro 0x19201012"''; + }; + "type:keyboard" = { + xkb_layout = "us(colemak_dh),us"; + xkb_options = "grp:rctrl_toggle"; + }; + }; - workspaceAutoBackAndForth = true; - workspaceLayout = "tabbed"; + gaps = { + smartGaps = true; + inner = 8; + outer = 2; + }; + + workspaceAutoBackAndForth = true; + workspaceLayout = "tabbed"; + }; }; } )