diff --git a/nnn.1 b/nnn.1
index e16d1521..e4f815d2 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 316b3add..d1674555 100644
--- a/plugins/README.md
+++ b/plugins/README.md
@@ -101,6 +101,12 @@ Now ;x can be used to make a file executable, ;g can be us
Now there will be no prompt after ;s and ;n.
+#### 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 407616c2..53fad5c9 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;
}