{ 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, config, ... }: { wayland.windowManager.sway = { enable = true; systemd.enable = true; package = pkgs.sway; config = { modifier = "Mod4"; fonts = lib.mkDefault { names = ["pango"]; style = "monospace"; size = 8.0; }; terminal = "terminator"; keybindings = let mod = config.wayland.windowManager.sway.config.modifier; term = config.wayland.windowManager.sway.config.terminal; rofi = "rofi"; in { "${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 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+d" = "reload"; ### 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"; }; ### 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$";}]; }; /* colors = { # should probably use a let ... in ... here background = "#212121"; focused = { # border = "#2b83a6"; # test to see if stylix does magic 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 = "ro,us(colemak_dh)"; xkb_options = "grp:rctrl_toggle"; }; }; gaps = { smartGaps = true; inner = 8; outer = 2; }; workspaceAutoBackAndForth = true; workspaceLayout = "tabbed"; }; }; } ) ]; }