mirror of
https://github.com/jarun/nnn.git
synced 2024-09-11 04:55:25 +03:00
52 lines
1.4 KiB
Bash
Executable File
52 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
|
|
# Description: Copy selection to system clipboard as newline-separated entries
|
|
# Dependencies:
|
|
# - tr
|
|
# - xclip/xsel (Linux)
|
|
# - pbcopy (macOS)
|
|
# - termux-clipboard-set (Termux)
|
|
# - clip.exe (WSL)
|
|
# - clip (Cygwin)
|
|
# - wl-copy (Wayland)
|
|
# - clipboard (Haiku)
|
|
#
|
|
# Limitation: breaks if a filename has newline in it
|
|
#
|
|
# Note: For a space-separated list:
|
|
# xargs -0 < "$SELECTION"
|
|
#
|
|
# Shell: POSIX compliant
|
|
# Author: Arun Prakash Jana
|
|
|
|
IFS="$(printf '%b_' '\n')"; IFS="${IFS%_}" # protect trailing \n
|
|
|
|
selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection}
|
|
[ -s "$selection" ] || { echo "plugin .cbcp error: empty selection" >&2 ; exit 1; }
|
|
|
|
if [ "$XDG_SESSION_TYPE" = "wayland" ]; then
|
|
# Wayland
|
|
tr '\0' '\n' < "$selection" | wl-copy
|
|
elif type xsel >/dev/null 2>&1; then
|
|
# Linux
|
|
tr '\0' '\n' < "$selection" | xsel -bi
|
|
elif type xclip >/dev/null 2>&1; then
|
|
# Linux
|
|
tr '\0' '\n' < "$selection" | xclip -sel clip
|
|
elif type pbcopy >/dev/null 2>&1; then
|
|
# macOS
|
|
tr '\0' '\n' < "$selection" | pbcopy
|
|
elif type termux-clipboard-set >/dev/null 2>&1; then
|
|
# Termux
|
|
tr '\0' '\n' < "$selection" | termux-clipboard-set
|
|
elif type clip.exe >/dev/null 2>&1; then
|
|
# WSL
|
|
tr '\0' '\n' < "$selection" | clip.exe
|
|
elif type clip >/dev/null 2>&1; then
|
|
# Cygwin
|
|
tr '\0' '\n' < "$selection" | clip
|
|
elif type clipboard >/dev/null 2>&1; then
|
|
# Haiku
|
|
tr '\0' '\n' < "$selection" | clipboard --stdin
|
|
fi
|