#!/usr/bin/env sh # Description: Copy selection to system clipboard as newline-separated entries # Requires: tr and # xclip/xsel (Linux) # pbcopy (macOS) # termux-clipboard-set (Termux) # clip.exe (WSL) # clip (Cygwin) # wl-copy (Wayland) # # 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} if which xsel >/dev/null 2>&1; then # Linux tr '\0' '\n' < "$selection" | xsel -bi elif which xclip >/dev/null 2>&1; then # Linux tr '\0' '\n' < "$selection" | xclip -sel clip elif which pbcopy >/dev/null 2>&1; then # macOS tr '\0' '\n' < "$selection" | pbcopy elif which termux-clipboard-set >/dev/null 2>&1; then # Termux tr '\0' '\n' < "$selection" | termux-clipboard-set elif which clip.exe >/dev/null 2>&1; then # WSL tr '\0' '\n' < "$selection" | clip.exe elif which clip >/dev/null 2>&1; then # Cygwin tr '\0' '\n' < "$selection" | clip elif which wl-copy >/dev/null 2>&1; then # Wayland tr '\0' '\n' < "$selection" | wl-copy fi