nnn

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit df4b557ca15cacc190f1265efe0db7d1cffae085
parent 968beb434af29417a8490ce66435d157cf869495
Author: Paul <paul.elder@amanokami.net>
Date:   Tue, 19 Sep 2017 02:30:54 -0400

Prevent nnn from waiting on open file process (#40)

* 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_NOWAIT

Diffstat:
MREADME.md | 6++++++
Mnnn.1 | 6++++++
Mnnn.c | 6+++++-
3 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md @@ -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`. +#### 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? I chose to fork because: diff --git a/nnn.1 b/nnn.1 @@ -207,6 +207,12 @@ screensaver. echo -n $1 | xsel --clipboard --input ------------------------------------- .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 If you are using urxvt you might have to set backspacekey to DEC. .Sh AUTHORS diff --git a/nnn.c b/nnn.c @@ -222,6 +222,7 @@ static char *player; static char *copier; static char *editor; static char *desktop_manager; +static char nowait; static blkcnt_t ent_blocks; static blkcnt_t dir_blocks; static ulong num_files; @@ -2211,7 +2212,7 @@ nochange: } /* Invoke desktop opener as last resort */ - spawn(utils[2], newpath, NULL, NULL, F_NOTRACE); + spawn(utils[2], newpath, NULL, NULL, nowait); continue; } default: @@ -2863,6 +2864,9 @@ main(int argc, char *argv[]) /* Get the default copier, if set */ copier = getenv("NNN_COPIER"); + /* Get nowait flag */ + nowait = F_NOTRACE | (getenv("NNN_NOWAIT") ? F_NOWAIT : 0); + signal(SIGINT, SIG_IGN); /* Test initial path */