diff --git a/user/sway/sway-binds.nix b/user/sway/sway-binds.nix index 58e840e..12a69cc 100644 --- a/user/sway/sway-binds.nix +++ b/user/sway/sway-binds.nix @@ -9,6 +9,7 @@ let terminal = "alacritty"; _lock = pkgs.writeShellScriptBin "_lock" '' + ${pkgs.sway}/bin/swaymsg mode default ${pkgs.swaylock}/bin/swaylock -f systemctl --user start swayidle.service ''; diff --git a/user/sway/sway-modes.nix b/user/sway/sway-modes.nix index b8c29e5..7cb82bd 100644 --- a/user/sway/sway-modes.nix +++ b/user/sway/sway-modes.nix @@ -8,59 +8,68 @@ let menu = "wlauncher"; terminal = "alacritty"; - locked_binds = + locked = lib.mapAttrs' (k: v: lib.nameValuePair "--locked ${k}" v); - code_binds = + to-code = lib.mapAttrs' (k: v: lib.nameValuePair "--to-code ${k}" v); - return_mode = lib.mapAttrs (k: v: "${v}; mode default"); + 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 = code_binds - (locked_binds { + 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"; - }) // return_mode { - "space" = "exec mpc toggle"; - "escape" = ""; - "q" = ""; - "m" = "exec volumesh -t"; - "s" = "exec ${pkgs.pulse_sink}/bin/pulse_sink"; + }) // + (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"; + "d" = "exec ${pkgs.musmenu}/bin/musmenu delete"; + "f" = "exec ${pkgs.musmenu}/bin/musmenu search"; - "a" = "exec ${pkgs.dzadd}/bin/dzadd"; + "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 = code_binds - ((locked_binds - { - ${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-"; - }) // - (return_mode { + "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'"; };