diff options
Diffstat (limited to '')
-rwxr-xr-x | example-scripts/clipboard.sh | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/example-scripts/clipboard.sh b/example-scripts/clipboard.sh new file mode 100755 index 0000000..2cdd016 --- /dev/null +++ b/example-scripts/clipboard.sh @@ -0,0 +1,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 |