{ inputs, system, pkgs, config, lib, ... }: let cfg = config.grimmShared; swaymux_pkg = inputs.swaymux.packages."${system}".default; in { config = with cfg; lib.mkIf (enable && sway.enable && sway.populateDefaultConfig ) { environment.systemPackages = (with pkgs; [ alacritty wmenu grim slurp wl-clipboard ]) ++ [ swaymux_pkg ]; grimmShared.sway = { definitions = { mod = "Mod4"; left = "h"; down = "j"; up = "k"; right = "l"; term = "alacritty"; menu = "dmenu_path | wmenu | xargs swaymsg exec --"; primecol = "#8800FF"; accentcol = "#5700a0"; splitcol = "#69507f"; actsplitcol = "#cd97fc"; darkcol = "#202020"; urgentcol = "#9e3c3c"; realwhite = "#C7D3E3"; }; keybinds = { "$mod+d" = "exec $menu"; "$mod+Shift+s" = ''exec grim -g "$(slurp -d)" - | wl-copy''; "$mod+Return" = "exec $term"; "$mod+Shift+q" = "kill"; "$mod+Shift+c" = "reload"; "$mod+Shift+e" = "exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'"; # Move your focus around "$mod+$left" = "focus left"; "$mod+$down" = "focus down"; "$mod+$up" = "focus up"; "$mod+$right" = "focus right"; # Or use $mod+[up|down|left|right] "$mod+Left" = "focus left"; "$mod+Down" = "focus down"; "$mod+Up" = "focus up"; "$mod+Right" = "focus right"; # Move the focused window with the same, but add Shift "$mod+Shift+$left" = "move left"; "$mod+Shift+$down" = "move down"; "$mod+Shift+$up" = "move up"; "$mod+Shift+$right" = "move right"; # Ditto, with arrow keys "$mod+Shift+Left" = "move left"; "$mod+Shift+Down" = "move down"; "$mod+Shift+Up" = "move up"; "$mod+Shift+Right" = "move right"; # # Workspaces: # # Switch to workspace "$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"; # Move focused container to workspace "$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"; # Note: workspaces can have any name you want, not just numbers. # We just use 1-10 as the default. # # Layout stuff: # # You can "split" the current object of your focus with # $mod+b or $mod+v, for horizontal and vertical splits # respectively. "$mod+b" = "splith"; "$mod+v" = "splitv"; # Switch the current container between different layout styles "$mod+s" = "layout stacking"; "$mod+w" = "layout tabbed"; "$mod+e" = "layout toggle split"; # Make the current focus fullscreen "$mod+f" = "fullscreen"; # Toggle the current focus between tiling and floating mode "$mod+Shift+space" = "floating toggle"; # Swap focus between the tiling area and the floating area "$mod+space" = "focus mode_toggle"; # Move focus to the parent container "$mod+a" = "focus parent"; "$mod+Shift+minus" = "move scratchpad"; "$mod+minus" = "scratchpad show"; "$mod+r" = ''mode "resize"''; "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"; "XF86AudioPlay" = "exec playerctl play-pause"; "XF86AudioNext" = "exec playerctl next"; "XF86AudioPrev" = "exec playerctl previous"; "$mod+c" = "exec swaymux"; }; autolaunch = [ # fixme: absolute paths "blueman-applet" "lxqt-policykit-agent" "otd-daemon" "dunst" "systemctl --user import-environment XDG_SESSION_TYPE XDG_CURRENT_DESKTOP" ]; extraConfig = '' # fixme: wallpaper output * bg ${./wallpapers/spain.jpg} fill output HDMI-A-1 mode 1920x1080@60Hz position 0,0 for_window [app_id="lxqt-policykit-agent"] floating enable; floating_modifier $mod normal bar { swaybar_command waybar } input type:keyboard xkb_numlock enabled include /etc/sway/config.d/* # Borders, gaps, titlebars, behavior default_border pixel 3 default_floating_border pixel 3 gaps inner 5 titlebar_padding 5 5 #5Smart things smart_gaps on hide_edge_borders --i3 smart input * { xkb_layout "de" } for_window [app_id="swaymux"] floating enable mode "resize" { # left will shrink the containers width # right will grow the containers width # up will shrink the containers height # down will grow the containers height bindsym $left resize shrrnk width 10px bindsym $down resize grow height 10px bindsym $up resize shrink height 10px bindsym $right resize grow width 10px # Ditto, with arrow keys bindsym Left resize shrink width 10px bindsym Down resize grow height 10px bindsym Up resize shrink height 10px bindsym Right resize grow width 10px # Return to default mode bindsym Return mode "default" bindsym Escape mode "default" } # test ''; }; }; }