Skip to content

Commit

Permalink
Add a function to aid usage of xclip
Browse files Browse the repository at this point in the history
  • Loading branch information
Harry Garrood committed May 26, 2012
1 parent bd99811 commit bc20e0d
Showing 1 changed file with 32 additions and 0 deletions.
32 changes: 32 additions & 0 deletions oh-my-zsh/lib/functions.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,35 @@ function extract () {
echo "\`$1' is not a valid file"
fi
}

# a shortcut function to simplify usage of xclip
clip() {
local _scs_col="\e[0;32m"; local _wrn_col='\e[1;31m'; local _trn_col='\e[0;33m'
# Check that xclip is installed.
if ! type xclip > /dev/null 2>&1; then
echo -e "$_wrn_col""You must have the 'xclip' program installed.\e[0m"
# Check user is not root (root doesn't have access to user xorg server)
elif [[ "$USER" == "root" ]]; then
echo -e "$_wrn_col""Must be regular user (not root) to copy a file to the clipboard.\e[0m"
else
# If no tty, data should be available on stdin
if ! [[ "$( tty )" == /dev/* ]]; then
input="$(< /dev/stdin)"
# Else, fetch input from params
else
input="$*"
fi
if [ -z "$input" ]; then # If no input, print usage message.
echo "Copies params or stdin to the clipboard."
echo "Usage: clip STRING"
echo " clip < FILE"
else
# Copy input to clipboard
echo -n "$input" | xclip -selection c
# Truncate text for status
if [ ${#input} -gt 80 ]; then input="$(echo $input | cut -c1-80)$_trn_col...\e[0m"; fi
# Print status.
echo -e "$_scs_col""Copied to clipboard:\e[0m $input"
fi
fi
}

0 comments on commit bc20e0d

Please sign in to comment.