diff options
author | Silvio Rhatto <rhatto@riseup.net> | 2014-02-19 23:38:36 -0300 |
---|---|---|
committer | Silvio Rhatto <rhatto@riseup.net> | 2014-02-19 23:38:36 -0300 |
commit | 9b26f57a726ccb582f41c19c7c3bbcef3225c12d (patch) | |
tree | ac6b95cc5d6c563014b514516e43577e0f6f63ea /lib | |
parent | 2842331046ee4b31d13a210a6d69a87363fa20e1 (diff) | |
download | keyringer-9b26f57a726ccb582f41c19c7c3bbcef3225c12d.tar.gz keyringer-9b26f57a726ccb582f41c19c7c3bbcef3225c12d.tar.bz2 |
Adding xclip action thanks to password-store
Diffstat (limited to 'lib')
l--------- | lib/keyringer/actions/clip | 1 | ||||
-rwxr-xr-x | lib/keyringer/actions/xclip | 53 |
2 files changed, 54 insertions, 0 deletions
diff --git a/lib/keyringer/actions/clip b/lib/keyringer/actions/clip new file mode 120000 index 0000000..8b8c16c --- /dev/null +++ b/lib/keyringer/actions/clip @@ -0,0 +1 @@ +xclip
\ No newline at end of file diff --git a/lib/keyringer/actions/xclip b/lib/keyringer/actions/xclip new file mode 100755 index 0000000..414013b --- /dev/null +++ b/lib/keyringer/actions/xclip @@ -0,0 +1,53 @@ +#!/bin/bash +# +# Decrypt secret header to clipboard. +# + +# Copy contents to clipboard. +# 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." +} + +# Load functions +LIB="`dirname $0`/../functions" +source "$LIB" || exit 1 + +# Get file +keyringer_get_file "$2" + +# Decrypt +pass="$($GPG --use-agent -d "$KEYDIR/$FILE" | head -n 1)" + +# Copy to clipboard +if [ ! -z "$pass" ]; then + clip "$pass" "$2" +fi + +# Exit +exit "$?" |