diff options
author | Jack Thomasson <thomasso@adobe.com> | 2016-10-25 03:17:48 +0300 |
---|---|---|
committer | Jack Thomasson <thomasso@adobe.com> | 2016-10-25 03:20:17 +0300 |
commit | 01382090046f8560c96d20e84b872dba940a0981 (patch) | |
tree | 62363e1767ca9eecb262026b544a02b07b34d086 /utils | |
parent | f7fd78d71507ab4fc49b2e3a912bd5cf48d648f8 (diff) |
utility to launch keepassx with database passwords fetched from kdewallet
Diffstat (limited to 'utils')
-rwxr-xr-x | utils/keepassx-kwallet | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/utils/keepassx-kwallet b/utils/keepassx-kwallet new file mode 100755 index 000000000..7fcb0af69 --- /dev/null +++ b/utils/keepassx-kwallet @@ -0,0 +1,35 @@ +#!/bin/bash + +PROG="$(basename $0)" + +function daemon_main { + # open kdewallet + handle=$(qdbus org.kde.kwalletd5 /modules/kwalletd5 org.kde.KWallet.open kdewallet 0 "$PROG") + while [[ true != $(qdbus org.kde.kwalletd5 /modules/kwalletd5 org.kde.KWallet.isOpen kdewallet) ]]; do + sleep 1 + done + + # fetch KeePass database passwords from kdewallet + declare -A DBs + ### change the path to suit your installation ### + for DBPATH in ~/.keepassx/*.kdbx; do + DBs[$DBPATH]=$(qdbus org.kde.kwalletd5 /modules/kwalletd5 org.kde.KWallet.readPassword "$handle" "Passwords" "$DBPATH" "$PROG") + done + + # launch keepassx + IFS=$'\n\n\n' + keepassx --pw-stdin "${!DBs[@]}" <<<"${DBs[*]}" & + + # done with kdewallet + qdbus org.kde.kwalletd5 /modules/kwalletd5 org.kde.KWallet.close "$handle" "false" "$PROG" +} + +if [[ '-d' = "$1" ]]; then + exec >&~/tmp/$PROG.log + set -vx + daemon_main +else + cd / + daemon_main </dev/null >&/dev/null & + disown +fi |