File: clipboard.sh

package info (click to toggle)
lnav 0.11.1-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 26,632 kB
  • sloc: cpp: 145,182; ansic: 29,675; sh: 4,007; makefile: 1,642; python: 860; sql: 258; xml: 120
file content (69 lines) | stat: -rwxr-xr-x 1,777 bytes parent folder | download | duplicates (4)
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
63
64
65
66
67
68
69
#!/bin/sh
# Wrapper for various clipboard I/O on Linux desktop environments and Windows emulations thereof

if [ -z "$STDIN_COPY_COMMAND" ] || [ -z "$STDOUT_PASTE_COMMAND" ]
then
	if [ -n "$WAYLAND_DISPLAY" ]
	then
		STDIN_COPY_COMMAND="wl-copy --foreground --type text/plain"
		STDOUT_PASTE_COMMAND="wl-paste --no-newline"
	elif [ -n "$DISPLAY" ]
	then
		if command -v xclip
		then
			STDIN_COPY_COMMAND="xclip -quiet -i -selection clipboard"
			STDOUT_PASTE_COMMAND="xclip -o -selection clipboard"
		elif command -v xsel
		then
			STDIN_COPY_COMMAND="xsel --nodetach -i --clipboard"
			STDOUT_PASTE_COMMAND="xsel -o --clipboard"
		fi
	elif command -v lemonade
	then
		STDIN_COPY_COMMAND="lemonade copy"
		STDOUT_PASTE_COMMAND="lemonade paste"
	elif command -v doitclient
	then
		STDIN_COPY_COMMAND="doitclient wclip"
		STDOUT_PASTE_COMMAND="doitclient wclip -r"
	elif command -v win32yank.exe
	then
		STDIN_COPY_COMMAND="win32yank.exe -i --crlf"
		STDOUT_PASTE_COMMAND="win32yank.exe -o --lf"
	elif command -v clip.exe
	then
		STDIN_COPY_COMMAND="clip.exe"
		STDOUT_PASTE_COMMAND=":"
	elif [ -n "$TMUX" ]
	then
		STDIN_COPY_COMMAND="tmux load-buffer -"
		STDOUT_PASTE_COMMAND="tmux save-buffer -"
	else
		echo 'No clipboard command' >&2
		exit 10
	fi > /dev/null
fi

case $1 in
	copy) exec $STDIN_COPY_COMMAND > /dev/null 2>/dev/null ;;
	paste) exec $STDOUT_PASTE_COMMAND < /dev/null 2>/dev/null ;;
	"") # Try to guess intention
		if ! [ -t 0 ] # stdin is piped
		then
			exec $STDIN_COPY_COMMAND > /dev/null 2>/dev/null
		elif ! [ -t 1 ] # stdout is piped
		then
			exec $STDOUT_PASTE_COMMAND < /dev/null 2>/dev/null
		else
			export STDIN_COPY_COMMAND STDOUT_PASTE_COMMAND
		fi
		;;
	*) cat << EOF
Usage:
	clipboard copy
	clipboard paste
	. clipboard
EOF
	exit 10
	;;
esac