From e226e8c889e1a218f7ad2ecd669bc6ad00ccca22 Mon Sep 17 00:00:00 2001 From: Arun Prakash Jana Date: Thu, 3 Oct 2019 02:38:06 +0530 Subject: [PATCH] Fix #334: Detect session type --- README.md | 1 - nnn.1 | 3 --- src/nnn.c | 21 +++++++++------------ 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index ae6dfbc0..f5e5d3db 100644 --- a/README.md +++ b/README.md @@ -168,7 +168,6 @@ positional args: optional args: -a use access time -b key open bookmark key - -c cli-only opener -d detail mode -f run filter as cmd on prompt key -H show hidden files diff --git a/nnn.1 b/nnn.1 index 577243ff..3ff17955 100644 --- a/nnn.1 +++ b/nnn.1 @@ -44,9 +44,6 @@ supports the following options: .Fl "b key" specify bookmark key to open .Pp -.Fl c - opener opens files in cli utilities only -.Pp .Fl d detail mode .Pp diff --git a/src/nnn.c b/src/nnn.c index 85004e12..ab536bd0 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -212,7 +212,7 @@ typedef struct { uint selmode : 1; /* Set when selecting files */ uint showdetail : 1; /* Clear to show fewer file info */ uint ctxactive : 1; /* Context active or not */ - uint reserved : 5; + uint reserved : 6; /* The following settings are global */ uint curctx : 2; /* Current context number */ uint dircolor : 1; /* Current status of dir color */ @@ -228,7 +228,6 @@ typedef struct { uint filtercmd : 1; /* Run filter as command on no match */ uint trash : 1; /* Move removed files to trash */ uint mtime : 1; /* Use modification time (else access time) */ - uint cliopener : 1; /* All-CLI app opener */ } settings; /* Contexts or workspaces */ @@ -270,7 +269,6 @@ static settings cfg = { 0, /* filtercmd */ 0, /* trash */ 1, /* mtime */ - 0, /* cliopener */ }; static context g_ctx[CTX_MAX] __attribute__ ((aligned)); @@ -3358,17 +3356,20 @@ static void browse(char *ipath) char mark[PATH_MAX] __attribute__ ((aligned)); char rundir[PATH_MAX] __attribute__ ((aligned)); char runfile[NAME_MAX + 1] __attribute__ ((aligned)); - uchar opener_flags = (cfg.cliopener ? F_CLI : (F_NOTRACE | F_NOWAIT)); + uchar opener_flags = F_NOTRACE | F_NOWAIT; int r = -1, fd, presel, selstartid = 0, selendid = 0, onscreen; ino_t inode = 0; enum action sel; bool dir_changed = FALSE, rangesel = FALSE; struct stat sb; - char *path, *lastdir, *lastname, *dir, *tmp; + char *path, *lastdir, *lastname, *dir, *tmp = getenv("XDG_SESSION_TYPE"); MEVENT event; atexit(dentfree); + if (tmp && !xstrcmp(tmp, "tty")) + opener_flags = F_CLI; + /* setup first context */ xstrlcpy(g_ctx[0].c_path, ipath, PATH_MAX); /* current directory */ path = g_ctx[0].c_path; @@ -4566,7 +4567,6 @@ static void usage(void) "optional args:\n" " -a use access time\n" " -b key open bookmark key\n" - " -c cli-only opener\n" " -d detail mode\n" " -f run filter as cmd on prompt key\n" " -H show hidden files\n" @@ -4713,7 +4713,7 @@ int main(int argc, char *argv[]) bool progress = FALSE; #endif - while ((opt = getopt(argc, argv, "HSiab:cdfnop:rstvh")) != -1) { + while ((opt = getopt(argc, argv, "HSiab:dfnop:rstvh")) != -1) { switch (opt) { case 'S': cfg.blkorder = 1; @@ -4732,9 +4732,6 @@ int main(int argc, char *argv[]) case 'b': arg = optarg; break; - case 'c': - cfg.cliopener = 1; - break; case 'f': cfg.filtercmd = 1; break; @@ -4882,8 +4879,8 @@ int main(int argc, char *argv[]) } } - /* Edit text in EDITOR if opted (and opener is not all-CLI) */ - if (!cfg.cliopener && xgetenv_set(env_cfg[NNN_USE_EDITOR])) + /* Edit text in EDITOR if opted */ + if (xgetenv_set(env_cfg[NNN_USE_EDITOR])) cfg.useeditor = 1; /* Get VISUAL/EDITOR */