Browse Source

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
master
Paul Arun Prakash Jana 7 years ago
parent
commit
df4b557ca1
3 changed files with 17 additions and 1 deletions
  1. +6
    -0
      README.md
  2. +6
    -0
      nnn.1
  3. +5
    -1
      nnn.c

+ 6
- 0
README.md View File

@@ -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:


+ 6
- 0
nnn.1 View File

@@ -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


+ 5
- 1
nnn.c View File

@@ -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 */


Loading…
Cancel
Save