blob: 0a0fcd4ecf6debba64c5ea3dbde883e455a553ea (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
#!/usr/bin/env sh
# Description: Copy system clipboard newline-separated file list to selection
# Dependencies:
# - tr
# - xclip/xsel (Linux)
# - pbpaste (macOS)
# - termux-clipboard-get (Termux)
# - powershell (WSL)
# - cygwim's /dev/clipboard (Cygwin)
# - wl-paste (Wayland)
# - clipboard (Haiku)
#
# Limitation: breaks if a filename has newline in it
#
# Shell: POSIX compliant
# Author: Léo Villeveygoux, after Arun Prakash Jana's .cbcp
IFS="$(printf '%b_' '\n')"; IFS="${IFS%_}" # protect trailing \n
selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection}
getclip () {
if which xsel >/dev/null 2>&1; then
# Linux
xsel -bo
elif which xclip >/dev/null 2>&1; then
# Linux
xclip -sel clip -o
elif which pbpaste >/dev/null 2>&1; then
# macOS
pbpaste
elif which termux-clipboard-get >/dev/null 2>&1; then
# Termux
termux-clipboard-get
elif which powershell.exe >/dev/null 2>&1; then
# WSL
powershell.exe Get-Clipboard
elif [ -r /dev/clipboard ] ; then
# Cygwin
cat /dev/clipboard
elif which wl-paste >/dev/null 2>&1; then
# Wayland
wl-paste
elif which clipboard >/dev/null 2>&1; then
# Haiku
clipboard --print
fi
}
CLIPBOARD=$(getclip)
# Check if clipboard actually contains a file list
for file in $CLIPBOARD ; do
if [ ! -e "$file" ] ; then
exit 1;
fi
done
printf "%s" "$CLIPBOARD" | tr '\n' '\0' > "$selection"
|