{
  config,
  pkgs,
  inputs,
  system,
  ...
}: let
  cliphist_sway = pkgs.writeShellScriptBin "cliphist_sway" ''
    ${pkgs.cliphist}/bin/cliphist list | \
    ${pkgs.wofi}/bin/wofi --dmenu --insensitive | \
    ${pkgs.cliphist}/bin/cliphist decode | \
    ${pkgs.wl-clipboard}/bin/wl-copy
  '';
  screenshot_clip = pkgs.writeShellScriptBin "screenshot_clip" ''
    GEOM="$(${pkgs.slurp}/bin/slurp -d)"
    ${pkgs.grim}/bin/grim -g "$GEOM" - | ${pkgs.wl-clipboard}/bin/wl-copy
  '';
  swaysw = inputs.swaysw.packages.${system}.swaysw;
  viber = pkgs.callPackage ../packages/viber/default.nix {};
  term = "${pkgs.foot}/bin/footclient";
in {
  wayland.windowManager.sway = {
    enable = true;
    extraSessionCommands = "";

    config = {
      fonts = {
        names = ["JetBrainsMono"];
        style = "Bold Semi-Condensed";
        size = 11.0;
      };

      window.commands = [
        {
          command = "move scratchpad, resize set 1152 648";
          criteria = {app_id = "pulsemixer|python3|com.rtosta.zapzap|whatsapp-for-linux|com.viber";};
        }
        {
          command = "move scratchpad, resize set 1502 845";
          criteria = {app_id = "com.viber";};
        }
        {
          command = "floating enable";
          criteria = {app_id = "sws_cli";};
        }
      ];

      modifier = "Mod4";
      output = {
        eDP-1 = {
          /*
          bg = "~/pic/wallpaper stretch";
          scale = "1.4";
          */
        };

        HDMI-A-4 = {
          res = "1920x1080";
        };
      };

      input = {
        "type:keyboard" = {repeat_delay = "150";};
        "type:keyboard" = {repeat_rate = "70";};
        "type:touchpad" = {tap = "enabled";};
      };

      bars = [
        {
          position = "top";
          fonts = {
            names = ["Iosevka" "FontAwesome"];
            style = "Bold Semi-Condensed";
            size = 12.0;
          };
          statusCommand = "${pkgs.i3status-rust}/bin/i3status-rs ~/.config/i3status-rust/config-top.toml";
        }
      ];

      keybindings = {
        "Alt+Shift+q" = "kill";
        "Alt+Shift+Return" = "exec ${term}";
        "Alt+p" = "exec ${pkgs.bemenu}/bin/bemenu-run";
        "Alt+c" = "exec ${pkgs.moreutils}/bin/lckdo cliphist_sway ${cliphist_sway}/bin/cliphist_sway";
        "Print" = "exec ${pkgs.moreutils}/bin/lckdo screenshot_clip ${screenshot_clip}/bin/screenshot_clip";

        "Alt+Shift+space" = "floating toggle";
        "Alt+space" = "focus mode_toggle";

        "Alt+m" = "layout toggle splith tabbed";
        "Alt+t" = "split toggle";
        "Alt+s" = "layout toggle split";

        "Alt+1" = "workspace 1";
        "Alt+2" = "workspace 2";
        "Alt+3" = "workspace 3";
        "Alt+4" = "workspace 4";
        "Alt+5" = "workspace 5";
        "Alt+6" = "workspace 6";
        "Alt+7" = "workspace 7";
        "Alt+8" = "workspace 8";
        "Alt+9" = "workspace 9";
        "Alt+0" = "workspace 10";

        "Alt+Shift+1" = "move container to workspace 1";
        "Alt+Shift+2" = "move container to workspace 2";
        "Alt+Shift+3" = "move container to workspace 3";
        "Alt+Shift+4" = "move container to workspace 4";
        "Alt+Shift+5" = "move container to workspace 5";
        "Alt+Shift+6" = "move container to workspace 6";
        "Alt+Shift+7" = "move container to workspace 7";
        "Alt+Shift+8" = "move container to workspace 8";
        "Alt+Shift+9" = "move container to workspace 9";
        "Alt+Shift+0" = "move container to workspace 10";

        "Alt+h" = "focus left";
        "Alt+j" = "focus down";
        "Alt+k" = "focus up";
        "Alt+l" = "focus right";
        "Alt+slash" = "exec ${pkgs.moreutils}/bin/lckdo swaysw ${swaysw}/bin/swaysw";
        "Alt+Escape" = "workspace back_and_forth";
        "Alt+f" = "fullscreen enable";
	"Alt+bracketright" = "focus output right";
	"Alt+bracketleft" = "focus output left";

        "Mod4+l" = ''
          exec ${pkgs.sway}/bin/swaymsg [app_id="python3"] scratchpad show || exec ${term} -a python3 ${pkgs.python3}/bin/python3'';
        "Mod4+h" = "exec ${pkgs.sway}/bin/swaymsg [app_id=com.rtosta.zapzap] scratchpad show || exec ${pkgs.zapzap}/bin/zapzap";
        "Mod4+j" = "exec ${pkgs.sway}/bin/swaymsg [app_id=com.viber] scratchpad show || exec ${viber}/bin/viber";
        "Mod4+y" = ''
          exec ${pkgs.sway}/bin/swaymsg [app_id="pulsemixer"] scratchpad show || exec ${term} -a pulsemixer ${pkgs.pulsemixer}/bin/pulsemixer'';
      };
    };
  };
}