🇬🇧 en

Nextcloud klient a problémy s KWallet

Z nějakého důvodu se mi stává, že se (někdy !!!) po přihlášení do KDE nedaří Nextcloudu vydolovat z KWallet uložené přístupové údaje k serveru, a tak znovu a znovu žádá o nové přihlášení.

Hodně dlouho jsem hledal na internetech, a zdá se, že to je problém s detekcí některých verzí KWalletu uvnitř knihoven Qt. Klient prostě nepočká na otevření úložiště a nedostane heslo (resp. token). Nastavování různých proměnných prostředí nepomohlo, nakonec jsem skončil s jednoduchým shell skriptem, který spouštím po přihlášení místo přímého volání binárky Nextcloud klienta.

Nejprve je nutno vypnout volbu “spouštět po startu systému” v nastavení Nextcloud klienta. To zamezí spouštění programu “přímo”.

Nastavení Nextcloud klienta

Potom v lze v nastavení KDE přidat do automatického spouštění celý skript.

Skript může vypadat např. takto:

#!/bin/sh

WALLET_NAME=kdewallet

qdbus org.kde.kwalletd5 /modules/kwalletd5 org.kde.KWallet.open "$WALLET_NAME" 0 "Nextcloud shell wrapper" >/dev/null

while [ `qdbus org.kde.kwalletd5 /modules/kwalletd5 org.kde.KWallet.isOpen "$WALLET_NAME"` != "true" ]; do
   sleep 5
done

( cd /home/martin/opt/nextcloud/ && ./Nextcloud.AppImage --background )

Celý trik spočívá v ručním volání DBus metody org.kde.KWallet.open(), které vynutí dialog s odemčením úložiště (a pak ještě čeká chvíli na odemčení). Po timeoutu je pak vhodné kontrolovat v cyklu status otevření úložiště, aby nedošlo k předčasnému spuštění klienta.

Následuje už jen volání samotné binárky Nextcloud klienta (já používám distribuci v AppImage) s parametrem --background. Ten zamezí otevření hlavního okna po spuštění.

Je důležité správně vyplnit název úložiště do proměnné WALLET_NAME (to zjistíte ve správci KWallet). Fungování poznáte tak, že se vám první příkaz nesnaží vnutit vytvoření nové peněženky. Také mohou být rozdíly v adrese DBus volání v závislosti na verzi KWallet. Pro zkontrolování doporučuji program qdbusviewer.

Skript by šel samozřejmě vylepšit. Pokud neodemknete peněženku vůbec, bude čekat až do vypnutí počítače (a navíc testovat otevření každých pár vteřin). Což ale není můj případ.

Snad vám to pomůže!

Komentáře