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

keepassx-kwallet « utils - github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: e0cdcda5e56b386643b22d787630af3f34002b8c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/bin/bash

### change the path to suit your installation or set KDBX_SEARCH before calling ###
: ${KDBX_SEARCH:=~/.KeePass/*.kdbx}

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
  for DBPATH in $KDBX_SEARCH; do
    [[ -L "$DBPATH" ]] && DBPATH=$(readlink --canonicalize "$DBPATH")
    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