{ personal.modules = [ ( { pkgs, ... }: { programs.sway = { enable = true; package = pkgs.swayfx; }; environment.systemPackages = with pkgs; [ swayrbar slurp grim rofi-wayland swaybg wl-clipboard ]; } ) ]; personal.home_modules = [ ( { lib, pkgs, ... }: wayland.windowManager.sway.config { modifier = "Mod4"; fonts = { names = [ "pango" ]; style = "monospace"; size = 8.0; }; terminal = "$\{pkgs.terminator}/bin/terminator"; 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 "${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. ### 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"; }; 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$"; } ]; }; 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"; }; }; 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"; }; }; input = { "10429:2335:UGTABLET_11.6_inch_PenDisplay" = { map_to_output = "UGD Artist 12 pro 0x19201012"; }; "type:keyboard" = { xkb_layout = [ "us(colemak_dh)" "us" # "rulemak" ]; xkb_options = "grp:rctrl_toggle"; }; }; gaps = { smartGaps = true; inner = 8.0; outer = 2.0; }; workspaceAutoBackAndForth = true; workspaceLayout = "tabbed"; } ) ]; }