kpasswdserver cleanup

Kai Uwe Broulik <[email protected]> Thu, 16 Jul 2026 12:40:47 +0200
Newsgroups gmane.comp.kde.devel.core
Message-ID <[email protected]>
Hi everyone,

while working on encryption support for KArchive and the archive KIO 
worker (what lets you browse “archives as folders”) I had to dive deep 
into kpasswdserver.

It is completely designed around window IDs which obviously doesn’t work 
on Wayland. Trying to fix it using XDG Foreign and XDG Activation is 
hindered by the fact that there’s a tonne of “TODO KF6 remove” and 
“deprecated, don’t use” APIs here. It also still talks to KWallet 
directly instead of Qt Keychain.

Furthermore, there’s an entire infrastructure in KDEDModule for 
“register window” and “unregister window” which as far as I can tell 
seems completely unused outside of KIO (job tracker and that then tells 
kpasswdserver). kpasswdserer uses it to expire cached credentials when 
the relevant window closes.

Is that still something that’s worthwhile or should we simplify this and 
track the app closing (unregister on the bus)? However, that probably 
won’t work with out of process workers and is likely the reason this was 
done on a per-window basis in the first place.

Do we consider kpasswdserver’s DBus API public and who is consuming it?
There’s a KPasswdServerClient class that’s used by a few (Konqueror, SMB 
KDED, print-manager) but it seems nobody (of us, anyway) is talking to 
kpasswdserver directly?

Can we nuke the old DBus API and make a new one that takes a _string_ 
window ID like the portal APIs do (and takes an options dict for future 
extensions). If KPasswdServerClient were adjusted to use it, there would 
be no release timing issues, would there?

Or just leave the old one untouched and make a kpasswdserverv2?

Or is this entire thing something we want to get rid of in favor of 
[insert portal API/qtkeychain/whatever]?

Cheers
Kai Uwe