aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Arun Prakash Jana <engineerarun@gmail.com>2020-01-30 23:38:36 +0530
committerGravatar Arun Prakash Jana <engineerarun@gmail.com>2020-01-30 23:41:19 +0530
commit6aed714347a34fa29d300b0cfa22adfa5f541ba0 (patch)
treeb8bac0db9e4d171d888ae67a469323ee84f4d4f8
parent46fc9c983c3c62e8c552e70ab9613380b868ae8f (diff)
downloadnnn-6aed714347a34fa29d300b0cfa22adfa5f541ba0.tar.gz
Run GUI app as plugin
-rw-r--r--nnn.18
-rw-r--r--plugins/README.md8
-rw-r--r--src/nnn.c13
3 files changed, 24 insertions, 5 deletions
diff --git a/nnn.1 b/nnn.1
index e16d152..e4f815d 100644
--- a/nnn.1
+++ b/nnn.1
@@ -262,7 +262,7 @@ used. A single combination of arguments is supported for SHELL and PAGER.
NOTES:
1. To run a plugin directly, press \fI;\fR followed by the plugin key
- 2. To skip directory refresh after running a plugin,prefix with \fB-\fR
+ 2. To skip directory refresh after running a plugin, prefix with \fB-\fR
export NNN_PLUG='m:-mediainfo'
.Ed
@@ -283,6 +283,10 @@ used. A single combination of arguments is supported for SHELL and PAGER.
export NNN_PLUG='y:-_sync*'
+ 6. To run a \fIGUI app as plugin\fR, add a \fB|\fR after \fB_\fR
+
+ export NNN_PLUG='m:-_|mousepad $nnn'
+
EXAMPLES:
----------------------------------- + -------------------------------------------------
Key:Command | Description
@@ -292,7 +296,7 @@ used. A single combination of arguments is supported for SHELL and PAGER.
l:_git log | Show git log
n:-_vi /home/user/Dropbox/dir/note* | Take quick notes in a synced file/dir of notes
p:-_less -iR $nnn* | Page through hovered file in less
- s:_smplayer -minigui $nnn* | Play hovered media file, even unfinished download
+ s:-_|smplayer -minigui $nnn | Play hovered media file, even unfinished download
x:_chmod +x $nnn | Make the hovered file executable
y:-_sync* | Flush cached writes
----------------------------------- + -------------------------------------------------
diff --git a/plugins/README.md b/plugins/README.md
index 316b3ad..d167455 100644
--- a/plugins/README.md
+++ b/plugins/README.md
@@ -101,6 +101,12 @@ Now <kbd>;x</kbd> can be used to make a file executable, <kbd>;g</kbd> can be us
Now there will be no prompt after <kbd>;s</kbd> and <kbd>;n</kbd>.
+#### Run GUI app as plugin
+
+To run a GUI app as plugin, add a `|` after `_`. For example:
+
+ export NNN_PLUG='m:-_|mousepad $nnn'
+
Notes:
1. Use single quotes for `$NNN_PLUG` so `$nnn` is not interpreted
@@ -117,7 +123,7 @@ Notes:
| `l:_git log` | Show git log |
| `n:-_vi /home/user/Dropbox/dir/note*` | Take quick notes in a synced file/dir of notes |
| `p:-_less -iR $nnn*` | Page through hovered file in less |
-| `s:_smplayer -minigui $nnn*` | Play hovered media file, even unfinished download |
+| `s:-_\|smplayer -minigui $nnn` | Play hovered media file, even unfinished download |
| `x:_chmod +x $nnn` | Make the hovered file executable |
| `y:-_sync*` | Flush cached writes |
diff --git a/src/nnn.c b/src/nnn.c
index 407616c..53fad5c 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -3843,12 +3843,21 @@ static bool run_cmd_as_plugin(const char *path, const char *file, char *newpath,
if (!*file)
return FALSE;
+ /* Check if GUI flags are to be used */
+ if (*file == '|') {
+ flags = F_NOTRACE | F_NOWAIT;
+ ++file;
+
+ if (!*file)
+ return FALSE;
+ }
+
xstrlcpy(newpath, file, PATH_MAX);
len = strlen(newpath);
if (len > 1 && newpath[len - 1] == '*') {
- flags &= ~F_CONFIRM; /* GUI case */
- newpath[len - 1] = '\0'; /* Get rid of trailing nowait symbol */
+ flags &= ~F_CONFIRM; /* Skip user confirmation */
+ newpath[len - 1] = '\0'; /* Get rid of trailing no confirmation symbol */
--len;
}