From 95eaa636efbf7a9a63d9489b11163a8cc8c28a97 Mon Sep 17 00:00:00 2001 From: Arun Prakash Jana Date: Wed, 15 May 2019 09:14:28 +0530 Subject: [PATCH] Fix #261 --- src/nnn.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/nnn.c b/src/nnn.c index 51d17940..c94ecbe5 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -4360,6 +4360,10 @@ int main(int argc, char *argv[]) if (!setup_config()) return 1; + /* Get custom opener, if set */ + opener = xgetenv(env_cfg[NNN_OPENER], utils[OPENER]); + DPRINTF_S(opener); + /* Parse bookmarks string */ if (!parsebmstr()) { fprintf(stderr, "%s\n", env_cfg[NNN_BMS]); @@ -4387,6 +4391,23 @@ int main(int argc, char *argv[]) xerror(); return 1; } + + /* + * If nnn is set as the file manager, applications may try to open + * files by invoking nnn. In that case pass the file path to the + * desktop opener and exit. + */ + struct stat sb; + + if (stat(initpath, &sb) == -1) { + xerror(); + return 1; + } + + if (S_ISREG(sb.st_mode)) { + execlp(opener, opener, arg, NULL); + return 0; + } } /* Edit text in EDITOR, if opted */