* Prevent nnn from waiting on open file process * Add env var flag to not wait for child process when opening file * Set nowait flag once to skip bit-or every time we open a file * Add documentation for NNN_NOWAITmaster
@@ -353,6 +353,12 @@ Any other value disables colored directories. | |||||
The terminal screensaver is disabled by default. To set the wait time in seconds, use environment variable `NNN_IDLE_TIMEOUT`. | The terminal screensaver is disabled by default. To set the wait time in seconds, use environment variable `NNN_IDLE_TIMEOUT`. | ||||
#### open file in new process and make the nnn not block | |||||
The desktop file opener should take care of opening files in new processes without causing `nnn` to block. | |||||
If `nnn` does block/freeze when a file is open, then set the environment variable `NNN_NOWAIT` to any | |||||
non-zero value. | |||||
### Why fork? | ### Why fork? | ||||
I chose to fork because: | I chose to fork because: | ||||
@@ -207,6 +207,12 @@ screensaver. | |||||
echo -n $1 | xsel --clipboard --input | echo -n $1 | xsel --clipboard --input | ||||
------------------------------------- | ------------------------------------- | ||||
.Ed | .Ed | ||||
.Pp | |||||
\fBNNN_NOWAIT:\fR make nnn not block while a file is open. Only necessary if | |||||
nnn is blocking while a file is open. | |||||
.Bd -literal | |||||
export NNN_NOWAIT=1 | |||||
.Ed | |||||
.Sh KNOWN ISSUES | .Sh KNOWN ISSUES | ||||
If you are using urxvt you might have to set backspacekey to DEC. | If you are using urxvt you might have to set backspacekey to DEC. | ||||
.Sh AUTHORS | .Sh AUTHORS | ||||
@@ -222,6 +222,7 @@ static char *player; | |||||
static char *copier; | static char *copier; | ||||
static char *editor; | static char *editor; | ||||
static char *desktop_manager; | static char *desktop_manager; | ||||
static char nowait; | |||||
static blkcnt_t ent_blocks; | static blkcnt_t ent_blocks; | ||||
static blkcnt_t dir_blocks; | static blkcnt_t dir_blocks; | ||||
static ulong num_files; | static ulong num_files; | ||||
@@ -2211,7 +2212,7 @@ nochange: | |||||
} | } | ||||
/* Invoke desktop opener as last resort */ | /* Invoke desktop opener as last resort */ | ||||
spawn(utils[2], newpath, NULL, NULL, F_NOTRACE); | |||||
spawn(utils[2], newpath, NULL, NULL, nowait); | |||||
continue; | continue; | ||||
} | } | ||||
default: | default: | ||||
@@ -2863,6 +2864,9 @@ main(int argc, char *argv[]) | |||||
/* Get the default copier, if set */ | /* Get the default copier, if set */ | ||||
copier = getenv("NNN_COPIER"); | copier = getenv("NNN_COPIER"); | ||||
/* Get nowait flag */ | |||||
nowait = F_NOTRACE | (getenv("NNN_NOWAIT") ? F_NOWAIT : 0); | |||||
signal(SIGINT, SIG_IGN); | signal(SIGINT, SIG_IGN); | ||||
/* Test initial path */ | /* Test initial path */ | ||||