{ config, pkgs, lib, ... }: let mod = "Mod4"; terminal = "ghostty"; menu = "fuzzel"; pactl = "${pkgs.pulseaudio}/bin/pactl"; light = "${pkgs.brightnessctl}/bin/brightnessctl"; grim = "${pkgs.grim}/bin/grim"; slurp = "${pkgs.slurp}/bin/slurp"; wlcopy = "${pkgs.wl-clipboard}/bin/wl-copy"; colors = { base = "#1e1e2e"; surface0 = "#313244"; surface1 = "#45475a"; text = "#cdd6f4"; subtext = "#bac2de"; blue = "#89b4fa"; yellow = "#f9e2af"; peach = "#fab387"; red = "#f38ba8"; }; in { wayland.windowManager.sway = { enable = true; config = { modifier = mod; terminal = terminal; menu = menu; bars = [ ]; fonts = { names = [ "sans-serif" ]; size = 10.0; }; window = { border = 3; titlebar = false; }; gaps = { inner = 0; outer = 0; smartGaps = false; smartBorders = "on"; }; colors = { focused = { border = colors.yellow; background = colors.yellow; text = colors.base; indicator = colors.yellow; childBorder = colors.yellow; }; focusedInactive = { border = colors.surface1; background = colors.surface1; text = colors.text; indicator = colors.surface1; childBorder = colors.surface1; }; unfocused = { border = colors.surface1; background = colors.surface1; text = colors.text; indicator = colors.surface1; childBorder = colors.surface1; }; urgent = { border = colors.red; background = colors.red; text = colors.base; indicator = colors.red; childBorder = colors.red; }; }; keybindings = lib.mkOptionDefault { # launcher "${mod}+Return" = "exec ${terminal}"; "${mod}+d" = "exec ${menu}"; # basic "${mod}+Shift+q" = "kill"; "${mod}+Shift+r" = "reload"; "${mod}+Shift+e" = "exec swaynag -t warning -m 'Exit sway?' -b 'Yes, exit' 'swaymsg exit'"; # focus movement "${mod}+h" = "focus left"; "${mod}+j" = "focus down"; "${mod}+k" = "focus up"; "${mod}+l" = "focus right"; # move windows "${mod}+Shift+h" = "move left"; "${mod}+Shift+j" = "move down"; "${mod}+Shift+k" = "move up"; "${mod}+Shift+l" = "move right"; # split/layout "${mod}+b" = "splith"; "${mod}+v" = "splitv"; "${mod}+e" = "layout toggle split"; "${mod}+s" = "layout stacking"; "${mod}+w" = "layout tabbed"; "${mod}+f" = "fullscreen toggle"; "${mod}+space" = "floating toggle"; "${mod}+a" = "focus parent"; # workspaces 1..10 "${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"; "${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"; # screenshots "Print" = "exec ${grim} - | ${wlcopy}"; "Shift+Print" = "exec ${grim} -g \"$(${slurp})\" - | ${wlcopy}"; # audio keys "XF86AudioRaiseVolume" = "exec ${pactl} set-sink-volume @DEFAULT_SINK@ +5%"; "XF86AudioLowerVolume" = "exec ${pactl} set-sink-volume @DEFAULT_SINK@ -5%"; "XF86AudioMute" = "exec ${pactl} set-sink-mute @DEFAULT_SINK@ toggle"; "XF86AudioMicMute" = "exec ${pactl} set-source-mute @DEFAULT_SOURCE@ toggle"; # brightness keys "XF86MonBrightnessUp" = "exec ${light} set +5%"; "XF86MonBrightnessDown" = "exec ${light} set 5%-"; }; startup = [ { command = "mako"; always = true; } { command = "fcitx5"; always = true; } #{ command = "waybar"; always = true; } ]; }; #extraConfig = ''''; }; }