aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config.h1
-rw-r--r--noice.c13
2 files changed, 14 insertions, 0 deletions
diff --git a/config.h b/config.h
index ed0b3f9..ad9d068 100644
--- a/config.h
+++ b/config.h
@@ -98,4 +98,5 @@ struct key bindings[] = {
/* Run command with argument */
{ 'e', SEL_RUNARG, "vi", "EDITOR" },
{ 'p', SEL_RUNARG, "less", "PAGER" },
+ { 'o', SEL_RUNWITH },
};
diff --git a/noice.c b/noice.c
index a097a55..4340ab7 100644
--- a/noice.c
+++ b/noice.c
@@ -72,6 +72,7 @@ enum action {
SEL_REDRAW,
SEL_RUN,
SEL_RUNARG,
+ SEL_RUNWITH,
};
struct key {
@@ -865,6 +866,18 @@ nochange:
spawn(run, dents[cur].name, path);
initcurses();
goto begin;
+ case SEL_RUNWITH:
+ /* Save current */
+ if (ndents > 0)
+ mkpath(path, dents[cur].name, oldpath, sizeof(oldpath));
+ printprompt("open with: ");
+ tmp = readln();
+ if (tmp == NULL)
+ goto begin;
+ exitcurses();
+ spawn(tmp, dents[cur].name, path);
+ initcurses();
+ goto begin;
}
/* Screensaver */
if (idletimeout != 0 && idle == idletimeout) {