aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Arun Prakash Jana <engineerarun@gmail.com>2019-01-16 20:11:33 +0530
committerGravatar Arun Prakash Jana <engineerarun@gmail.com>2019-01-16 20:11:33 +0530
commit5f519841e7b4fa1a752e444a19722f0fe516b026 (patch)
treee6ea870a4ca754441395bcf4b980ec3b2ceabc8b
parente7e09483b61537278da08103cbb72f496f79badb (diff)
downloadnnn-5f519841e7b4fa1a752e444a19722f0fe516b026.tar.gz
Resurrect NNN_OPENER
-rw-r--r--README.md4
-rw-r--r--nnn.15
-rw-r--r--src/nnn.c10
3 files changed, 18 insertions, 1 deletions
diff --git a/README.md b/README.md
index 6717989..738b875 100644
--- a/README.md
+++ b/README.md
@@ -372,6 +372,10 @@ The following indicators are used in the detail view:
| $PAGER | page through files (fallback less) |
| $SHELL | spawn a shell, run script (fallback sh) |
+To specify a custom file opener:
+
+ export NNN_OPENER=mimeopen
+
To edit all text files in EDITOR (preferably CLI, fallback vi):
export NNN_USE_EDITOR=1
diff --git a/nnn.1 b/nnn.1
index d30e6f7..41127ad 100644
--- a/nnn.1
+++ b/nnn.1
@@ -260,6 +260,11 @@ To list the file paths copied to memory press \fIy\fR.
The SHELL, EDITOR (VISUAL, if defined) and PAGER environment variables take precedence
when dealing with the !, e and p commands respectively. A single combination to arguments is supported for SHELL and PAGER.
.Pp
+\fBNNN_OPENER:\fR specify a custom file opener.
+.Bd -literal
+ export NNN_OPENER=mimeopen
+.Ed
+.Pp
\fBNNN_BMS:\fR bookmark string as \fIkey_char:location\fR pairs (max 10) separated by
\fI;\fR:
.Bd -literal
diff --git a/src/nnn.c b/src/nnn.c
index d3d0947..aaa4775 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -297,6 +297,7 @@ static char *pnamebuf, *pcopybuf;
static int ndents, cur, total_dents = ENTRY_INCR;
static uint idle;
static uint idletimeout, copybufpos, copybuflen;
+static char *opener;
static char *copier;
static char *editor;
static char *pager, *pager_arg;
@@ -2157,6 +2158,8 @@ static bool show_help(char *path)
dprintf(fd, "\n");
}
+ if (getenv("NNN_OPENER"))
+ dprintf(fd, "NNN_OPENER: %s\n", opener);
if (cfg.useeditor)
dprintf(fd, "NNN_USE_EDITOR: 1\n");
if (getenv("NNN_CONTEXT_COLORS"))
@@ -2793,7 +2796,7 @@ nochange:
}
/* Invoke desktop opener as last resort */
- spawn(utils[OPENER], newpath, NULL, NULL, F_NOWAIT | F_NOTRACE);
+ spawn(opener, newpath, NULL, NULL, F_NOWAIT | F_NOTRACE);
continue;
}
default:
@@ -3767,6 +3770,11 @@ int main(int argc, char *argv[])
}
#endif
+ /* Get custom opener, if set */
+ opener = getenv("NNN_OPENER");
+ if (!opener)
+ opener = utils[OPENER];
+
/* Get locker wait time, if set; copier used as tmp var */
copier = getenv("NNN_IDLE_TIMEOUT");
if (copier) {