From b6d78df62c540245f67ffc900d0b1a17a6dfb77e Mon Sep 17 00:00:00 2001
From: Andrew Janke <andrew@apjanke.net>
Date: Sun, 4 Oct 2015 03:42:24 -0400
Subject: clip*: add xsel support

---
 lib/clipboard.zsh | 45 ++++++++++++++++++++++++++++++++-------------
 1 file changed, 32 insertions(+), 13 deletions(-)

(limited to 'lib')

diff --git a/lib/clipboard.zsh b/lib/clipboard.zsh
index 24b7380f7..b663800a4 100644
--- a/lib/clipboard.zsh
+++ b/lib/clipboard.zsh
@@ -31,15 +31,21 @@ function clipcopy() {
       cat $file > /dev/clipboard
     fi
   else
-    which xclip &>/dev/null
-    if [[ $? != 0 ]]; then
-      print "clipcopy: Platform $OSTYPE not supported or xclip not installed" >&2
-      return 1
-    fi
-    if [[ -z $file ]]; then
-      xclip -in -selection clipboard
+    if which xclip &>/dev/null; then
+      if [[ -z $file ]]; then
+        xclip -in -selection clipboard
+      else
+        xclip -in -selection clipboard $file
+      fi
+    elif which xsel &>/dev/null; then
+      if [[ -z $file ]]; then
+        xsel --clipboard --input 
+      else
+        cat "$file" | xsel --clipboard --input
+      fi
     else
-      xclip -in -selection clipboard $file
+      print "clipcopy: Platform $OSTYPE not supported or xclip/xsel not installed" >&2
+      return 1
     fi
   fi
 }
@@ -50,6 +56,17 @@ function clipcopy() {
 #
 #   clippaste   - writes clipboard's contents to stdout
 #
+#   clippaste | <command>    - pastes contents and pipes it to another process
+#
+#   clippaste > <file>      - paste contents to a file
+#
+# Examples:
+#
+#   # Pipe to another process
+#   clippaste | grep foo
+#
+#   # Paste to a file
+#   clippaste > file.txt
 function clippaste() {
   emulate -L zsh
   if [[ $OSTYPE == darwin* ]]; then
@@ -57,11 +74,13 @@ function clippaste() {
   elif [[ $OSTYPE == cygwin* ]]; then
     cat /dev/clipboard
   else
-    which xclip &>/dev/null 
-    if [[ $? != 0 ]]; then
-      print "clipcopy: Platform $OSTYPE not supported or xclip not installed" >&2
+    if which xclip &>/dev/null; then
+      xclip -out -selection clipboard
+    elif which xsel &>/dev/null; then
+      xsel --clipboard --output
+    else
+      print "clipcopy: Platform $OSTYPE not supported or xclip/xsel not installed" >&2
       return 1
     fi
-    xclip -out -selection clipboard
   fi
-}
\ No newline at end of file
+}
-- 
cgit v1.2.3-70-g09d2