From 5f519841e7b4fa1a752e444a19722f0fe516b026 Mon Sep 17 00:00:00 2001 From: Arun Prakash Jana Date: Wed, 16 Jan 2019 20:11:33 +0530 Subject: [PATCH] Resurrect NNN_OPENER --- README.md | 4 ++++ nnn.1 | 5 +++++ src/nnn.c | 10 +++++++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 67179895..738b8758 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 d30e6f73..41127ad9 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 d3d09478..aaa4775c 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) {