Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorJack Thomasson <thomasso@adobe.com>2016-10-25 03:17:48 +0300
committerJack Thomasson <thomasso@adobe.com>2016-10-25 03:20:17 +0300
commit01382090046f8560c96d20e84b872dba940a0981 (patch)
tree62363e1767ca9eecb262026b544a02b07b34d086 /utils
parentf7fd78d71507ab4fc49b2e3a912bd5cf48d648f8 (diff)
utility to launch keepassx with database passwords fetched from kdewallet
Diffstat (limited to 'utils')
-rwxr-xr-xutils/keepassx-kwallet35
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