Page MenuHome GnuPG

Kleopatra can't be started from the gpg shell of the AppImage
Open, NormalPublic

Description

$ gnupg-desktop-2.4.3.0-x86_64.AppImage -c
cat: /tmp/.mount_gnupg-laqw1E/GnuPG-VS-Desktop-VERSION: No such file or directory
Welcome to GnuPG Desktop !
(type "exit" to leave)

gpg> kleopatra 
kf.dbusaddons: Couldn't register name 'org.kde.gnupg-desktop-2.4.3.0-x86_64.AppImage' with DBUS - another process owns it already!

Details

Version
gnupg-desktop-2.4.3.0-x86_64.AppImage

Event Timeline

ebo added a project: Restricted Project.Jul 24 2023, 2:55 PM

follow up of T6517

aheinecke triaged this task as Normal priority.Jul 25 2023, 9:07 AM

I cannot reproduce this. Neither with the official AppImage nor with my self-built AppImage. The error message suggests that some process is still registered with DBUS. Maybe a process left over from a previous run?

Also the AppImage I downloaded from gnupg.org prints "Welcome to GnuPG Foo 2.4.3!" and it doesn't look for a GnuPG-VS-Desktop-VERSION file. You seem to use an older AppImage.

Right, I had briefly uploaded a "GnuPG-Desktop" appimage but then realized that for the gnupg.org download site the "GnuPG-Foo" was actually the correct version. Werner and me discussed the future of that version and there will be some changes for future releases which I won't go in there. But functionally it is the same, only the VERSION file differs.

Strange that you cannot reproduce it. No it is not a leftover. If I close the shell and start the image directly this works. But there is probably something in my and evas shell startup thats already grabbing the dbus. But then at least from your shell you should not be able to start kleopatra and okular at the same time from the same shell, e.g. the same agent which was the original reason for this issue.

I have just started kleopatra in the shell. Moved it to the background (Ctrl+Z bg). Then started okular. Then opened certificate of signed PDF in kleopatra. Everything works. (Except "Show Signatures Panel" doesn't really work if the side panel is not visible, but that's a completely different issue.) I also tried first starting okular and then kleopatra in the same shell. This also worked.

I'm seeing

kf.config.core: Use of KConfigWatcher without DBus support. You will not receive updates

and socket stealing logs by gpg-agent.
And I saw

gpg-agent[20186]: command 'MARKTRUSTED' failed: Not trusted
gpg-agent[20186]: command 'MARKTRUSTED' failed: Not trusted
gpg-agent[20186]: command 'MARKTRUSTED' failed: Not trusted
gpg-agent[20186]: command 'MARKTRUSTED' failed: Not trusted
gpg-agent[20186]: command 'MARKTRUSTED' failed: Not trusted
gpg-agent[20186]: command 'MARKTRUSTED' failed: Not trusted
gpg-agent[20186]: command 'MARKTRUSTED' failed: Not trusted
gpg-agent[20186]: command 'MARKTRUSTED' failed: Not trusted
gpg-agent[20186]: command 'MARKTRUSTED' failed: Not trusted
gpg-agent[20186]: command 'MARKTRUSTED' failed: Not trusted
gpg-agent[20186]: command 'MARKTRUSTED' failed: Not trusted
gpg-agent[20186]: command 'MARKTRUSTED' failed: Not trusted
gpg-agent[20186]: command 'MARKTRUSTED' failed: Not trusted

wherever that comes from.

I used dbus-monitor to monitor the session bus. I'm seeing the following logged by dbus-monitor when starting kleopatra in the AppImage shell.

method call time=1690445994.197305 sender=:1.141 -> destination=org.freedesktop.DBus serial=1 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=Hello
method return time=1690445994.197348 sender=org.freedesktop.DBus -> destination=:1.141 serial=1 reply_serial=1
   string ":1.141"
signal time=1690445994.197368 sender=org.freedesktop.DBus -> destination=(null destination) serial=93 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameOwnerChanged
   string ":1.141"
   string ""
   string ":1.141"
signal time=1690445994.197394 sender=org.freedesktop.DBus -> destination=:1.141 serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
   string ":1.141"
method call time=1690445994.197919 sender=:1.141 -> destination=org.freedesktop.DBus serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal',sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameAcquired'"
method call time=1690445994.198591 sender=:1.141 -> destination=org.freedesktop.DBus serial=3 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=RequestName
   string "org.kde.kleopatra"
   uint32 0
signal time=1690445994.198656 sender=org.freedesktop.DBus -> destination=(null destination) serial=94 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameOwnerChanged
   string "org.kde.kleopatra"
   string ""
   string ":1.141"
signal time=1690445994.198680 sender=org.freedesktop.DBus -> destination=:1.141 serial=3 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
   string "org.kde.kleopatra"
[...]

and when quitting Kleopatra I see

method call time=1690446001.636935 sender=:1.141 -> destination=org.freedesktop.DBus serial=21 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=ReleaseName
   string "org.kde.kleopatra"
signal time=1690446001.636978 sender=org.freedesktop.DBus -> destination=:1.141 serial=10 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameLost
   string "org.kde.kleopatra"
signal time=1690446001.636991 sender=org.freedesktop.DBus -> destination=(null destination) serial=97 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameOwnerChanged
   string "org.kde.kleopatra"
   string ":1.141"
   string ""

As you can see, Kleopatra registers as "org.kde.kleopatra". I have no idea where the name "org.kde.gnupg-desktop-2.4.3.0-x86_64.AppImage" should come from. If on your systems Okular and Kleopatra both try to register the name "org.kde.gnupg-desktop-2.4.3.0-x86_64.AppImage" this would explain the problem.

It's a shell issue. With bash Kleopatra starts from the shell. Andre will debug further.

While the DBus problem is interesting and I want to further investigate this, I think the real question or feature we need to have here is to attach multiple "UI Processes" to an AppImage environment. So that you can have an Okular, KMail and Kleopatra running in your VSD environment without going through the console.