Połączenie KeePassXC <> Firefox (KeePassXC-Browser) na Flatpak

Instalacja programów za pomocą menadżerów pakietów takich jak Snap, czy Flatpak wiąże się czasem z problemem w komunikacji. Programy mogą czasem nie mieć dostępu do zamontowanych woluminów, lub nie mogą komunikować się wzajemnie. Ma to miejsce zarówno w przypadku Snapa, jak i Flatpaka, gdy zainstaluje się wspomniane w tytule programy.

W przypadku tego pierwszego menadżera pakietów, problem został rozwiązany przez samych developerów, którzy zdając sobie sprawę z problemu, udostępnili wykonywalny plik, który naprawia w/w problem.

Zrzut ekranu ze strony pobierania KeePassXC

Wg opisu wystarczy pobrać plik keepassxc-snap-helper.sh, nadać mu uprawnienia (chmod +x) i wykonać go za pomocą terminala. Wszystko zadziała i potwierdzę to, jako użytkownik Snapa.

Obejście problemu Flatpak

Niestety developerzy nie przygotowali stosownego obejścia dla menadżera Flatpak, ale w sieci takowe powstało, a sam problem związany jest tak samo z brakiem komunikacji dwóch programów ze sobą – czyli Flatpak robi to, do czego został stworzony (izoluje).

Nadanie uprawnień KeePassXC do bibliotek KDE i proxy KeePassXC (KeePassXC-Browser)

flatpak override --user \
  --filesystem={/var/lib,xdg-data}/flatpak/{app/org.keepassxc.KeePassXC,runtime/org.kde.Platform}:ro \
  --filesystem=xdg-run/app/org.keepassxc.KeePassXC:create \
  org.mozilla.firefoxCode language: JavaScript (javascript)

Utworzenie skryptu wrappera, który będzie uruchamiał KeePassXC-proxy z KeePassXC Flatpak i uzyskał dostęp do Firefoxa Flatpak

mkdir ~/.var/app/org.mozilla.firefox/data/bin
cd ~/.var/app/org.mozilla.firefox/data/bin
cd bin
nano keepassxc-proxy-wrapper.shCode language: JavaScript (javascript)

W pliku wklejamy zawartość:

#!/bin/bash

APP_REF="org.keepassxc.KeePassXC/x86_64/stable"

for inst in "$HOME/.local/share/flatpak" "/var/lib/flatpak"; do
    if [ -d "$inst/app/$APP_REF" ]; then
        FLATPAK_INST="$inst"
        break
    fi
done
[ -z "$FLATPAK_INST" ] && exit 1

APP_PATH="$FLATPAK_INST/app/$APP_REF/active"

RUNTIME_REF=$(awk -F'=' '$1=="runtime" { print $2 }' < "$APP_PATH/metadata")
RUNTIME_PATH="$FLATPAK_INST/runtime/$RUNTIME_REF/active"

exec flatpak-spawn \
    --env=LD_LIBRARY_PATH=/app/lib \
    --app-path="$APP_PATH/files" \
    --usr-path="$RUNTIME_PATH/files" \
    -- keepassxc-proxy "$@"Code language: JavaScript (javascript)

Ctrl+o, ctrl+x, zapisujemy plik, nadajemy mu uprawnienia do wykonania chmod +x keepassxc-proxy-wrapper.sh.

Utworzenie pliku json, który dokończy „komunikację”

Skrypt ten jest zawarty w skrypcie dla Snapa, na stronie projektu KeePassXC (nawiązywałem do niego na wstępie).

cd ~/.var/app/org.mozilla.firefox/.mozilla/
mkdir native-messaging-hosts
cd native-messaging-hosts
nano org.keepassxc.keepassxc_browser.jsonCode language: JavaScript (javascript)

W pliku wklejamy zawartość:

{
    "allowed_extensions": [
        "keepassxc-browser@keepassxc.org"
    ],
    "description": "KeePassXC integration with native messaging support",
    "name": "org.keepassxc.keepassxc_browser",
    "path": "/home/UŻYTKOWNIK/.var/app/org.mozilla.firefox/data/bin/keepassxc-proxy-wrapper.sh",
    "type": "stdio"
}Code language: JSON / JSON with Comments (json)

Zamieniamy słowo UŻYTKOWNIK na nazwę naszego użytkownika, aka. katalog użytkownika, ctrl+o, ctrl+x, zapisujemy plik.

Po wszystkim należy od nowa uruchomić Firefoxa i KeePassXC.

Opis problemu wraz z dyskusją i oryginalnym rozwiązaniem od gasinvein znajduje się pod linkiem.


Komentarze

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *