diff options
Diffstat (limited to 'lib/keyringer/actions/xclip')
-rwxr-xr-x | lib/keyringer/actions/xclip | 54 |
1 files changed, 28 insertions, 26 deletions
diff --git a/lib/keyringer/actions/xclip b/lib/keyringer/actions/xclip index b28984f..7afdf05 100755 --- a/lib/keyringer/actions/xclip +++ b/lib/keyringer/actions/xclip @@ -7,31 +7,33 @@ # Function thanks to Password Store by Jason A. Donenfeld <Jason@zx2c4.com> # distributed under GPLv2+: http://www.zx2c4.com/projects/password-store/ clip() { - # This base64 business is a disgusting hack to deal with newline inconsistancies - # in shell. There must be a better way to deal with this, but because I'm a dolt, - # we're going with this for now. - - before="$(xclip -o -selection clipboard | base64)" - echo -n "$1" | xclip -selection clipboard - ( - sleep 45 - now="$(xclip -o -selection clipboard | base64)" - if [[ $now != $(echo -n "$1" | base64) ]]; then - before="$now" - fi - - # It might be nice to programatically check to see if klipper exists, - # as well as checking for other common clipboard managers. But for now, - # this works fine -- if qdbus isn't there or if klipper isn't running, - # this essentially becomes a no-op. - # - # Clipboard managers frequently write their history out in plaintext, - # so we axe it here: - qdbus org.kde.klipper /klipper org.kde.klipper.klipper.clearClipboardHistory &>/dev/null - - echo "$before" | base64 -d | xclip -selection clipboard - ) & disown - echo "Copied $2 to clipboard. Will clear in 45 seconds." + # This base64 business is a disgusting hack to deal with newline inconsistancies + # in shell. There must be a better way to deal with this, but because I'm a dolt, + # we're going with this for now. + + #local xclip="xclip -selection clipboard" + local xclip="xclip" + before="$($xclip -o | base64)" + echo -n "$1" | $xclip + ( + sleep 45 + now="$($xclip -o | base64)" + if [[ $now != $(echo -n "$1" | base64) ]]; then + before="$now" + fi + + # It might be nice to programatically check to see if klipper exists, + # as well as checking for other common clipboard managers. But for now, + # this works fine -- if qdbus isn't there or if klipper isn't running, + # this essentially becomes a no-op. + # + # Clipboard managers frequently write their history out in plaintext, + # so we axe it here: + qdbus org.kde.klipper /klipper org.kde.klipper.klipper.clearClipboardHistory &>/dev/null + + echo "$before" | base64 -d | $xclip + ) & disown + echo "Copied $2 to clipboard. Will clear in 45 seconds." } # Load functions @@ -39,7 +41,7 @@ LIB="`dirname $0`/../functions" source "$LIB" || exit 1 # Check for xclip -if ! which xclip; then +if ! which xclip &> /dev/null; then echo "fatal: xclip not found" exit 1 fi |