Navigate to a target directory then use <kbd>V</kbd> (move) or <kbd>P</kbd> (copy) to have the selected files moved or copied.
-Absolute paths of the selected files are copied to the temporary file `~/.config/nnn/.selection`. The path is shown in the help and configuration screen. If `$NNN_COPIER` is set the file paths are also copied to the system clipboard.
+Absolute paths of the selected files are copied to the temporary file `.selection` in the config directory. The path is shown in the help and configuration screen. If `$NNN_COPIER` is set the file paths are also copied to the system clipboard.
#### Filters
#### Configuration
-`nnn` supports the following environment variables for configuration. All of them are optional (set if you need).
+`nnn` supports the following environment variables for configuration. All of them are optional (set if you need). Any associated files are stored under `${XDG_CONFIG_HOME:-$HOME/.config}/nnn/`.
| Example `export` | Description |
| --- | --- |
Port 8022
```
-The above host `phone` will be mounted at `~/.config/nnn/phone`. `nnn` creates the directory `phone` if it doesn't exist.
+The above host `phone` will be mounted at `${XDG_CONFIG_HOME:-$HOME/.config}/nnn/phone`. `nnn` creates the directory `phone` if it doesn't exist.
Notes:
# Shell: POSIX compliant
# Author: Arun Prakash Jana
-SELECTION=~/.config/nnn/.selection
+SELECTION=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection
# Linux
cat "$SELECTION" | xargs -0 | xsel -bi
.Nm
uses \fIxdg-open\fR (on Linux) and \fIopen(1)\fR (on macOS) as the desktop opener.
.Pp
-There is no configuration file. Settings work on environment variables. See ENVIRONMENT section below.
+There is no configuration file. Associated files are stored in \fB${XDG_CONFIG_HOME:-$HOME/.config}/nnn/\fR. Settings work on environment variables. See ENVIRONMENT section below.
.Pp
Configuring
.Nm
.br
The files in the list can now be listed, copied, moved, removed, archived or linked.
.br
-Absolute paths of the selected files are copied to the temporary file \fB~/.config/nnn/.selection\fR. The path is shown in the help and configuration screen. If \fB$NNN_COPIER\fR is set (see ENVIRONMENT section below) the file paths are also copied to the system clipboard.
+Absolute paths of the selected files are copied to the temporary file \fB.selection\fR in config directory. The path is shown in the help and configuration screen. If \fB$NNN_COPIER\fR is set (see ENVIRONMENT section below) the file paths are also copied to the system clipboard.
.Sh ENVIRONMENT
The SHELL, EDITOR (VISUAL, if defined) and PAGER environment variables take precedence
when dealing with the !, e and p commands respectively. A single combination to arguments is supported for SHELL and PAGER.
.Pp
\fBNNN_IDLE_TIMEOUT:\fR set idle timeout (in seconds) to invoke terminal locker (default: disabled).
.Pp
-\fBNNN_COPIER:\fR system clipboard copier script.
-.Bd -literal
- NOTE: File paths are copied to the tmp file \fB~/.config/nnn/.selection\fR.
- The path is shown in the help and configuration screen.
-.Ed
+\fBNNN_COPIER:\fR system clipboard copier script. The project page has some sample copier scripts.
.Pp
\fBNNN_NOTE:\fR \fIabsolute\fR path to a note file.
.Bd -literal
#### Installing plugins
-Download the `getplugs` plugin and execute it anywhere to get all the plugins installed to `~/.config/nnn/plugins`. You can run it again later to update the plugins. It backs up earlier plugins.
+Download the `getplugs` plugin and execute it anywhere to get all the plugins installed to `${XDG_CONFIG_HOME:-$HOME/.config}/nnn/plugins`. You can run it again later to update the plugins. It backs up earlier plugins.
**NOTE:** `getplugs` also downloads the launcher `nlaunch` and tries to place it at `/usr/local/bin/` using `sudo`. If it fails you have to place `nlauch` manually somewhere in your `$PATH`.
Plugins can access:
- all files in the directory (`nnn` switches to the dir where the plugin is to be run so the dir is `$PWD` for the plugin)
- the current file under the cursor (the file name is passed as the argument to a plugin)
-- the current selection (by reading the file `~/.config/nnn/.selection`, see the plugin `ndiff`)
+- the current selection (by reading the file `.selection` in config dir, see the plugin `ndiff`)
Each script has a _Description_ section which provides more details on what the script does, if applicable.
# Shell: POSIX compliant
# Author: ath3
-selection=~/.config/nnn/.selection
+selection=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection
resp=f
chsum=md5
ischksum=0
# Shell: POSIX compliant
# Author: Arun Prakash Jana
+CONFIG_DIR=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/
+PLUGIN_DIR=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/plugins
+
# backup any earlier plugins
-if [ -d ~/.config/nnn/plugins ]; then
- tar -C ~/.config/nnn/ -cf ~/.config/nnn/"plugins-$(date '+%Y%m%d%H%M').tar.bz2" plugins/
+if [ -d $PLUGIN_DIR ]; then
+ tar -C $CONFIG_DIR -cf $CONFIG_DIR"plugins-$(date '+%Y%m%d%H%M').tar.bz2" plugins/
fi
-mkdir -p ~/.config/nnn/plugins
-cd ~/.config/nnn/plugins
+mkdir -p $PLUGIN_DIR
+cd $PLUGIN_DIR
wget -nv --show-progress https://github.com/jarun/nnn/archive/master.tar.gz
tar -xf master.tar.gz
cp -vf nnn-master/plugins/* .
# Shell: POSIX compliant
# Author: juacq97
-SELECTION=~/.config/nnn/.selection
+SELECTION=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection
id=$(kdeconnect-cli -a --id-only | awk '{print $1}')
if [ "$(find "$SELECTION")" ]; then
# Shell: POSIX compliant
# Author: Arun Prakash Jana
-selection=~/.config/nnn/.selection
+selection=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection
cmd=$(pgrep -x mocp 2>/dev/null)
ret=$cmd
# Shell: POSIX compliant
# Author: Arun Prakash Jana
-selection=~/.config/nnn/.selection
+selection=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection
if [ -s $selection ]; then
arr=$(tr '\0' '\n' < "$selection")
# Shell: POSIX compliant
# Author: Arun Prakash Jana
-selection=~/.config/nnn/.selection
+selection=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection
resp=s
if [ -s "$selection" ]; then