{ config, pkgs, ... }:
let
  inherit (pkgs.uservars) key accent font theme;
  inherit (theme) color;
  inherit (pkgs) lib;

  mod = "Mod4";
  menu = "wlauncher";
  terminal = "alacritty";

  locked =
    lib.mapAttrs' (k: v: lib.nameValuePair "--locked ${k}" v);
  to-code =
    lib.mapAttrs' (k: v: lib.nameValuePair "--to-code ${k}" v);
  quit-mode = lib.mapAttrs (k: v: "${v}; mode default");
  playerctl = "exec ${pkgs.playerctl}/bin/playerctl";

  bind_group = opts: binds: lib.pipe binds opts;
in
{
  wayland.windowManager.sway.config.modes = {
    audio =
      (bind_group [ to-code locked ] {
        ${key.tabR} = "exec volumesh -i 10";
        ${key.tabL} = "exec volumesh -d 10";
        ${key.right} = "exec mpc next";
        ${key.left} = "exec mpc prev";
        ${key.up} = "exec volumesh --mpd -i 10";
        ${key.down} = "exec volumesh --mpd -d 10";
      }) //
      (bind_group [ locked quit-mode ] {
        "space" = "exec mpc toggle";
        "escape" = "";
        "q" = "";
      }) //
      (bind_group [ quit-mode ] {
        "m" = "exec volumesh -t";
        "s" = "exec ${pkgs.pulse_sink}/bin/pulse_sink";

        "d" = "exec ${pkgs.musmenu}/bin/musmenu delete";
        "f" = "exec ${pkgs.musmenu}/bin/musmenu search";

        "a" = "exec ${pkgs.dzadd}/bin/dzadd";

        "Shift+y" = "exec ${pkgs.musmenu}/bin/musmenu yank";
        "Ctrl+a" = "exec ${pkgs.musmenu}/bin/musmenu padd";
        "Ctrl+s" = "exec ${pkgs.musmenu}/bin/musmenu psave";
        "Ctrl+o" = "exec ${pkgs.musmenu}/bin/musmenu pload";
        "Ctrl+d" = "exec ${pkgs.musmenu}/bin/musmenu pdelete";
      }) //
      {
        "p" = "mode playerctl";
        "Ctrl+c" = "exec musmenu pclear";
      }
    ;

    playerctl =
      (bind_group [ to-code locked ] {
        ${key.left} = "${playerctl} previous";
        ${key.right} = "${playerctl} next";
        ${key.up} = "${playerctl} volume 10+";
        ${key.down} = "${playerctl} volume 10-";
        ${key.tabR} = "${playerctl} volume 10+";
        ${key.tabL} = "${playerctl} volume 10-";
      }) //
      (bind_group [ to-code quit-mode ] {
        "space" = "${playerctl} play-pause";
        "escape" = "";
        "q" = "";
      })
    ;

    passthrough = {
      "${mod}+escape" = "mode default;exec notify-send 'Passthrough off'";
    };
  };
}