diff options
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | nnn.1 | 2 | ||||
-rwxr-xr-x | plugins/.cbcp | 16 | ||||
-rwxr-xr-x | plugins/.nmv | 2 | ||||
-rw-r--r-- | plugins/.nnn-plugin-helper | 2 | ||||
-rwxr-xr-x | plugins/chksum | 2 | ||||
-rwxr-xr-x | plugins/diffs | 2 | ||||
-rwxr-xr-x | plugins/dragdrop | 2 | ||||
-rwxr-xr-x | plugins/kdeconnect | 8 | ||||
-rwxr-xr-x | plugins/mocplay | 2 | ||||
-rwxr-xr-x | plugins/renamer | 2 | ||||
-rwxr-xr-x | plugins/splitjoin | 2 | ||||
-rwxr-xr-x | plugins/x2sel | 4 | ||||
-rw-r--r-- | src/nnn.c | 23 |
14 files changed, 41 insertions, 30 deletions
@@ -7,7 +7,7 @@ <a href="https://circleci.com/gh/jarun/workflows/nnn"><img src="https://img.shields.io/circleci/project/github/jarun/nnn.svg?label=circleci" alt="CircleCI Status" /></a> <a href="https://en.wikipedia.org/wiki/Privacy-invasive_software"><img src="https://img.shields.io/badge/privacy-✓-crimson?maxAge=2592000" alt="Privacy Awareness" /></a> <a href="https://github.com/jarun/nnn/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-BSD%202--Clause-yellow.svg?maxAge=2592000" alt="License" /></a> -<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=RMLTQ76JSXJ4Q"><img src="https://img.shields.io/badge/PayPal-donate-1eb0fc.svg" alt="Donate via PayPal!" /></a> +<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=RMLTQ76JSXJ4Q"><img src="https://img.shields.io/badge/donate-PayPal-1eb0fc.svg" alt="Donate via PayPal!" /></a> </p> <p align="center"><a href="https://www.youtube.com/watch?v=U2n5aGqou9E"><img src="https://i.imgur.com/MPWpmos.png" /></a></p> @@ -421,6 +421,8 @@ separated by \fI;\fR: NOTE: Only the first character is considered if not a \fICtrl+key\fR combo. .Ed .Pp +\fBNNN_SEL:\fR absolute path to custom selection file. +.Pp \fBnnn:\fR this is a special variable set to the hovered entry before executing a command from the command prompt or spawning a shell. .Pp diff --git a/plugins/.cbcp b/plugins/.cbcp index 022e88a..8830e90 100755 --- a/plugins/.cbcp +++ b/plugins/.cbcp @@ -19,27 +19,27 @@ IFS="$(printf '%b_' '\n')"; IFS="${IFS%_}" # protect trailing \n -SELECTION=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection +selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} if which xsel >/dev/null 2>&1; then # Linux - tr '\0' '\n' < "$SELECTION" | xsel -bi + tr '\0' '\n' < "$selection" | xsel -bi elif which xclip >/dev/null 2>&1; then # Linux - tr '\0' '\n' < "$SELECTION" | xclip -sel clip + tr '\0' '\n' < "$selection" | xclip -sel clip elif which pbcopy >/dev/null 2>&1; then # macOS - tr '\0' '\n' < "$SELECTION" | pbcopy + tr '\0' '\n' < "$selection" | pbcopy elif which termux-clipboard-set >/dev/null 2>&1; then # Termux - tr '\0' '\n' < "$SELECTION" | termux-clipboard-set + tr '\0' '\n' < "$selection" | termux-clipboard-set elif which clip.exe >/dev/null 2>&1; then # WSL - tr '\0' '\n' < "$SELECTION" | clip.exe + tr '\0' '\n' < "$selection" | clip.exe elif which clip >/dev/null 2>&1; then # Cygwin - tr '\0' '\n' < "$SELECTION" | clip + tr '\0' '\n' < "$selection" | clip elif which wl-copy >/dev/null 2>&1; then # Wayland - tr '\0' '\n' < "$SELECTION" | wl-copy + tr '\0' '\n' < "$selection" | wl-copy fi diff --git a/plugins/.nmv b/plugins/.nmv index 023328d..7762546 100755 --- a/plugins/.nmv +++ b/plugins/.nmv @@ -21,7 +21,7 @@ TMPDIR="${TMPDIR:-/tmp}" INCLUDE_HIDDEN="${INCLUDE_HIDDEN:-0}" VERBOSE="${VERBOSE:-0}" -selection=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection +selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} exit_status=0 dst_file=$(mktemp "$TMPDIR/.nnnXXXXXX") diff --git a/plugins/.nnn-plugin-helper b/plugins/.nnn-plugin-helper index a42ee69..06b3bcb 100644 --- a/plugins/.nnn-plugin-helper +++ b/plugins/.nnn-plugin-helper @@ -5,7 +5,7 @@ # Shell: POSIX compliant # Author: Anna Arad -selection=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection +selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} export selection ## Set CUR_CTX to 1 to open directory in current context diff --git a/plugins/chksum b/plugins/chksum index 0c13da2..1514de7 100755 --- a/plugins/chksum +++ b/plugins/chksum @@ -14,7 +14,7 @@ # Shell: POSIX compliant # Author: ath3, Arun Prakash Jana -selection=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection +selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} resp=f chsum=md5 diff --git a/plugins/diffs b/plugins/diffs index ff85aa8..294c5e7 100755 --- a/plugins/diffs +++ b/plugins/diffs @@ -10,7 +10,7 @@ # Shell: POSIX compliant # Authors: Arun Prakash Jana, ath3 -selection=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection +selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} if which nvim >/dev/null 2>&1; then diffcmd="nvim -d" diff --git a/plugins/dragdrop b/plugins/dragdrop index bbbd19e..bc01d87 100755 --- a/plugins/dragdrop +++ b/plugins/dragdrop @@ -13,7 +13,7 @@ # Shell: POSIX compliant # Author: 0xACE -selection=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection +selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} resp=f all= if which dragon-drag-and-drop >/dev/null 2>&1; then diff --git a/plugins/kdeconnect b/plugins/kdeconnect index 9ee2e60..f1cfd95 100755 --- a/plugins/kdeconnect +++ b/plugins/kdeconnect @@ -5,13 +5,13 @@ # Shell: POSIX compliant # Author: juacq97 -SELECTION=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection +selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} id=$(kdeconnect-cli -a --id-only | awk '{print $1}') -if [ "$(find "$SELECTION")" ]; then - kdeconnect-cli -d "$id" --share "$(cat "$SELECTION")" +if [ "$(find "$selection")" ]; then + kdeconnect-cli -d "$id" --share "$(cat "$selection")" # If you want a system notification, uncomment the next 3 lines. -# notify-send -a "Kdeconnect" "Sending $(cat "$SELECTION")" +# notify-send -a "Kdeconnect" "Sending $(cat "$selection")" #else # notify-send -a "Kdeconnect" "No file selected" fi diff --git a/plugins/mocplay b/plugins/mocplay index 6f5a2a0..5db44b9 100755 --- a/plugins/mocplay +++ b/plugins/mocplay @@ -12,7 +12,7 @@ # Author: Arun Prakash Jana, ath3 IFS="$(printf '\n\r')" -selection=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection +selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} cmd=$(pgrep -x mocp 2>/dev/null) ret=$cmd diff --git a/plugins/renamer b/plugins/renamer index 8ea2d92..4c15764 100755 --- a/plugins/renamer +++ b/plugins/renamer @@ -12,7 +12,7 @@ # Shell: POSIX compliant # Author: José Neder -selection=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection +selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} if command -v qmv >/dev/null 2>&1; then batchrenamesel="qmv -fdo -da" diff --git a/plugins/splitjoin b/plugins/splitjoin index fcd49de..545eadb 100755 --- a/plugins/splitjoin +++ b/plugins/splitjoin @@ -8,7 +8,7 @@ # Shell: POSIX compliant # Authors: Arun Prakash Jana, ath3 -selection=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection +selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} resp=s if [ -s "$selection" ]; then diff --git a/plugins/x2sel b/plugins/x2sel index 3113773..79856eb 100755 --- a/plugins/x2sel +++ b/plugins/x2sel @@ -16,7 +16,7 @@ IFS="$(printf '%b_' '\n')"; IFS="${IFS%_}" # protect trailing \n -SELECTION=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection +selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection} getclip () { @@ -54,4 +54,4 @@ for file in $CLIPBOARD ; do fi done -printf "%s" "$CLIPBOARD" | tr '\n' '\0' > "$SELECTION" +printf "%s" "$CLIPBOARD" | tr '\n' '\0' > "$selection" @@ -579,8 +579,9 @@ static const char * const messages[] = { #define NNNLVL 5 #define NNN_PIPE 6 #define NNN_MCLICK 7 -#define NNN_ARCHIVE 8 /* strings end here */ -#define NNN_TRASH 9 /* flags begin here */ +#define NNN_SEL 8 +#define NNN_ARCHIVE 9 /* strings end here */ +#define NNN_TRASH 10 /* flags begin here */ static const char * const env_cfg[] = { "NNN_OPTS", @@ -591,6 +592,7 @@ static const char * const env_cfg[] = { "NNNLVL", "NNN_PIPE", "NNN_MCLICK", + "NNN_SEL", "NNN_ARCHIVE", "NNN_TRASH", }; @@ -6612,16 +6614,23 @@ static bool setup_config(void) /* Set selection file path */ if (!cfg.picker) { - /* Length of "/.config/nnn/.selection" */ - selpath = (char *)malloc(len + 3); + char *env_sel = xgetenv(env_cfg[NNN_SEL], NULL); + if (env_sel) + selpath = xstrdup(env_sel); + else + /* Length of "/.config/nnn/.selection" */ + selpath = (char *)malloc(len + 3); + if (!selpath) { xerror(); return FALSE; } - r = xstrsncpy(selpath, cfgdir, len + 3); - xstrsncpy(selpath + r - 1, "/.selection", 12); - DPRINTF_S(selpath); + if (!env_sel) { + r = xstrsncpy(selpath, cfgdir, len + 3); + xstrsncpy(selpath + r - 1, "/.selection", 12); + DPRINTF_S(selpath); + } } return TRUE; |