mirror of
https://github.com/jarun/nnn.git
synced 2024-11-28 05:41:31 +00:00
Always detach opener
This may affect issue #227 but the defunct processes do not use any memory and exit when nnn exits. I guess that happens because of xdg-open using an intermediate script. However, if we do not detach xdg-open, the child process is killed when the terminal is closed which is a severe problem.
This commit is contained in:
parent
f07c8a9dfd
commit
4f15fb765a
|
@ -335,7 +335,6 @@ The following indicators are used in the detail view:
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| `NNN_BMS='d:~/Documents;D:~/Docs archive/'` | specify bookmarks (max 10) |
|
| `NNN_BMS='d:~/Documents;D:~/Docs archive/'` | specify bookmarks (max 10) |
|
||||||
| `NNN_OPENER=mimeopen` | custom file opener |
|
| `NNN_OPENER=mimeopen` | custom file opener |
|
||||||
| `NNN_OPENER_DETACH=1` | do not block when invoking file opener |
|
|
||||||
| `NNN_CONTEXT_COLORS='1234'` | specify per context color [default: '4444' (all blue)] |
|
| `NNN_CONTEXT_COLORS='1234'` | specify per context color [default: '4444' (all blue)] |
|
||||||
| `NNN_IDLE_TIMEOUT=300` | idle seconds before locking terminal [default: disabled] |
|
| `NNN_IDLE_TIMEOUT=300` | idle seconds before locking terminal [default: disabled] |
|
||||||
| `NNN_COPIER='/absolute/path/to/copier'` | system clipboard copier script [default: none] |
|
| `NNN_COPIER='/absolute/path/to/copier'` | system clipboard copier script [default: none] |
|
||||||
|
|
5
nnn.1
5
nnn.1
|
@ -154,11 +154,6 @@ when dealing with the !, e and p commands respectively. A single combination to
|
||||||
export NNN_OPENER=mimeopen
|
export NNN_OPENER=mimeopen
|
||||||
.Ed
|
.Ed
|
||||||
.Pp
|
.Pp
|
||||||
\fBNNN_OPENER_DETACH:\fR do not block when invoking file opener.
|
|
||||||
.Bd -literal
|
|
||||||
export NNN_OPENER_DETACH=1
|
|
||||||
.Ed
|
|
||||||
.Pp
|
|
||||||
\fBNNN_CONTEXT_COLORS:\fR string of color codes for each context, e.g.:
|
\fBNNN_CONTEXT_COLORS:\fR string of color codes for each context, e.g.:
|
||||||
.Bd -literal
|
.Bd -literal
|
||||||
export NNN_CONTEXT_COLORS='1234'
|
export NNN_CONTEXT_COLORS='1234'
|
||||||
|
|
13
src/nnn.c
13
src/nnn.c
|
@ -291,7 +291,6 @@ static bm bookmark[BM_MAX];
|
||||||
static size_t g_tmpfplen;
|
static size_t g_tmpfplen;
|
||||||
static uchar g_crc;
|
static uchar g_crc;
|
||||||
static uchar BLK_SHIFT = 9;
|
static uchar BLK_SHIFT = 9;
|
||||||
static uchar opener_flag = F_NOTRACE;
|
|
||||||
static bool interrupted = FALSE;
|
static bool interrupted = FALSE;
|
||||||
|
|
||||||
/* Retain old signal handlers */
|
/* Retain old signal handlers */
|
||||||
|
@ -392,10 +391,9 @@ static const char * const messages[] = {
|
||||||
#define NNN_NO_AUTOSELECT 9
|
#define NNN_NO_AUTOSELECT 9
|
||||||
#define NNN_RESTRICT_NAV_OPEN 10
|
#define NNN_RESTRICT_NAV_OPEN 10
|
||||||
#define NNN_RESTRICT_0B 11
|
#define NNN_RESTRICT_0B 11
|
||||||
#define NNN_OPENER_DETACH 12
|
#define NNN_TRASH 12
|
||||||
#define NNN_TRASH 13
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
#define NNN_OPS_PROG 14
|
#define NNN_OPS_PROG 13
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static const char * const env_cfg[] = {
|
static const char * const env_cfg[] = {
|
||||||
|
@ -411,7 +409,6 @@ static const char * const env_cfg[] = {
|
||||||
"NNN_NO_AUTOSELECT",
|
"NNN_NO_AUTOSELECT",
|
||||||
"NNN_RESTRICT_NAV_OPEN",
|
"NNN_RESTRICT_NAV_OPEN",
|
||||||
"NNN_RESTRICT_0B",
|
"NNN_RESTRICT_0B",
|
||||||
"NNN_OPENER_DETACH",
|
|
||||||
"NNN_TRASH",
|
"NNN_TRASH",
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
"NNN_OPS_PROG",
|
"NNN_OPS_PROG",
|
||||||
|
@ -3151,7 +3148,7 @@ nochange:
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Invoke desktop opener as last resort */
|
/* Invoke desktop opener as last resort */
|
||||||
spawn(opener, newpath, NULL, NULL, opener_flag);
|
spawn(opener, newpath, NULL, NULL, F_NOTRACE | F_NOWAIT);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -4276,8 +4273,6 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
/* Get custom opener, if set */
|
/* Get custom opener, if set */
|
||||||
opener = xgetenv(env_cfg[NNN_OPENER], utils[OPENER]);
|
opener = xgetenv(env_cfg[NNN_OPENER], utils[OPENER]);
|
||||||
if (xgetenv_set(env_cfg[NNN_OPENER_DETACH]))
|
|
||||||
opener_flag |= F_NOWAIT;
|
|
||||||
DPRINTF_S(opener);
|
DPRINTF_S(opener);
|
||||||
|
|
||||||
/* Parse bookmarks string */
|
/* Parse bookmarks string */
|
||||||
|
@ -4321,7 +4316,7 @@ int main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
|
|
||||||
if (S_ISREG(sb.st_mode)) {
|
if (S_ISREG(sb.st_mode)) {
|
||||||
spawn(opener, initpath, NULL, NULL, opener_flag);
|
spawn(opener, initpath, NULL, NULL, F_NOTRACE | F_NOWAIT);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue