about summary refs log tree commit diff stats
path: root/pkgs/by-name/ri/river-mk-keymap/src/key_map/commands.rs
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/ri/river-mk-keymap/src/key_map/commands.rs')
-rw-r--r--pkgs/by-name/ri/river-mk-keymap/src/key_map/commands.rs16
1 files changed, 15 insertions, 1 deletions
diff --git a/pkgs/by-name/ri/river-mk-keymap/src/key_map/commands.rs b/pkgs/by-name/ri/river-mk-keymap/src/key_map/commands.rs
index 058606c9..52a6ba8a 100644
--- a/pkgs/by-name/ri/river-mk-keymap/src/key_map/commands.rs
+++ b/pkgs/by-name/ri/river-mk-keymap/src/key_map/commands.rs
@@ -145,9 +145,23 @@ impl KeyMap {
                             (Some(mode_name), acc_vec)
                         });
 
+                let command = if value.once {
+                    vec![
+                        "spawn".to_owned(),
+                        format!(
+                            "riverctl {} && {}",
+                            shlex::try_join(value.command.iter().map(String::as_str))
+                                .expect("Should work"),
+                            shlex::try_join(["riverctl", "enter-mode", "normal"])
+                                .expect("Should work"),
+                        ),
+                    ]
+                } else {
+                    value.command
+                };
                 base.extend(key_to_command(
                     mapping[0],
-                    &value.command,
+                    &command,
                     final_mode.as_ref().map_or("normal", |v| v.as_str()),
                     value.allow_locked,
                 ));