KDE Plasma users - Request for Info

When using the official Joplin Desktop AppImage for v3.4.12 installed using the official script on Linux Mint 22.2 Cinnamon and Ubuntu 24.04 Gnome I can:

  • Export all
  • Export a note
  • Save an attachment using right-click "Save as..."

When using the official Joplin Desktop AppImage installed using the official script on:

  • Debian 13.1 with KDE Plasma 6.3.6
  • Kubuntu 24.04 with KDE Plasma 5.27.2

I cannot do any of the above. There is zero response from Joplin. The app does not crash. In the case of the export it does not display the exporting message. In the case of "Save as..." the dialog box does appear and closes after pressing "Save" but nothing is ever saved. Nothing obvious appears in the Joplin logs or console.

Before I delve further into this I wondered if anyone else using KDE Plasma experiences this? I want to find out if it is a common issue before considering submitting a support request.

sudo apt install xdg-desktop-portal-kde

Electron made the portals basically mandatory by forgetting to check if they error and use a fallback several releases ago. Ubuntu comes with Snap which has these by default and because they're shared with Flatpak so does Mint. Debian I don't believe does have these by default because it doesn't default with either of those two. Edit: just reread that Kubuntu also doesn't work, I'd expect it has those packages by default but check they haven't been removed anyway.

Similarly you'd potentially find people on Arch not install the portals and get the same.

Ultimately it's a packaging issue mixed with Electron having some really bad error handling, there's no reason it can't fall back to the GTK internal File Open UI if it can't use the portals.

As far as I'm concerned, these packages should be pre installed regardless of opinion on Flatpak or Snap, because they're at the point now of being fairly standard APIs outside sandbox cases.

And where niche DEs don't have them, Electron now simply breaks on file open UIs, I know Hyprland is one.

Thanks for the suggestion.

Unfortunately Debian/KDE and Kubuntu report that, "xdg-desktop-portal-kde is already the newest version..."

Weird, could you try having dbus-monitor open in the background while trying to use the buttons in Joplin, looking for the string org.freedesktop.portal.FileChooser (or lack of) - what should happen is Electron makes a call to that API, and is likely getting an error. Those packages should be responsible for handling it. I’d say reinstall them, but before recommending whack a mole, it helps to understand what might be wrong.

That output can unfortunately get busy very quickly, you’ll likely want to save it to another file and try be as rapid in possible as capturing the DBus calls before killing it for spam.

Edit: FWIW I’ll check on Fedora if KDE works for the AppImage in a mo, I’ve a VM lying around coincidentally

Edit 2: Kinda jelly I didn’t have to do funny business with libfuse2 but relevant to file pickers, it works fine. I’ve grabbed some working DBus calls to use for reference.

This is me trying to import a .jex

method call time=1757962450.652154 sender=:1.147 -> destination=org.freedesktop.portal.Desktop serial=18 path=/org/freedesktop/portal/desktop; interface=org.freedesktop.portal.FileChooser; member=OpenFile
   string "x11:0x1400004"
   string "Open File"
   array [
      dict entry(
         string "filters"
         variant             array [
               struct {
                  string "Joplin Export File"
                  array [
                     struct {
                        uint32 0
                        string "*.[jJ][eE][xX]"
                     }
                  ]
               }
            ]
      )
      dict entry(
         string "handle_token"
         variant             string "ABDB4F5AE5C3ECB9D9074723C17201B7"
      )
      dict entry(
         string "modal"
         variant             boolean true
      )
   ]
method call time=1757962450.652799 sender=:1.27 -> destination=org.freedesktop.DBus serial=576 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal',sender='org.freedesktop.impl.portal.desktop.kde',interface='org.freedesktop.impl.portal.Request',path='/org/freedesktop/portal/desktop/request/1_147/ABDB4F5AE5C3ECB9D9074723C17201B7'"
method return time=1757962450.652842 sender=org.freedesktop.DBus -> destination=:1.27 serial=4294967295 reply_serial=576
method call time=1757962450.652849 sender=:1.27 -> destination=org.freedesktop.DBus serial=577 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=StartServiceByName
   string "org.freedesktop.impl.portal.desktop.kde"
   uint32 0
method return time=1757962450.652865 sender=org.freedesktop.DBus -> destination=:1.27 serial=4294967295 reply_serial=577
   uint32 2
method call time=1757962450.653066 sender=:1.27 -> destination=org.freedesktop.DBus serial=578 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetNameOwner
   string "org.freedesktop.impl.portal.desktop.kde"
method return time=1757962450.653117 sender=org.freedesktop.DBus -> destination=:1.27 serial=4294967295 reply_serial=578
   string ":1.55"
method call time=1757962450.653288 sender=:1.27 -> destination=:1.55 serial=579 path=/org/freedesktop/portal/desktop; interface=org.freedesktop.impl.portal.FileChooser; member=OpenFile
   object path "/org/freedesktop/portal/desktop/request/1_147/ABDB4F5AE5C3ECB9D9074723C17201B7"
   string "/home/jcarroll/Downloads/Joplin-3.4.12.AppImage"
   string "x11:0x1400004"
   string "Open File"
   array [
      dict entry(
         string "modal"
         variant             boolean true
      )
      dict entry(
         string "filters"
         variant             array [
               struct {
                  string "Joplin Export File"
                  array [
                     struct {
                        uint32 0
                        string "*.[jJ][eE][xX]"
                     }
                  ]
               }
            ]
      )
   ]

I am only just following you here but are you thinking that the file save as dialog is not appearing?

When doing a "Save as..." or "Export" I get the dialog with the suggested filename and the ability to navigate to a folder to save it. The thing is that after pressing save nothing happens. The file picker dialog closes, there appears to be no error but no file is saved.

Ah weird, sorry; makes a load more sense. There’s a completely similar sounding issue with the package removed where the UI doesn’t appear at all, which is what I was thinking you were experiencing.

The dbus stuff could still be relevant, but it sounds like you’re running into some weird behaviour then with QT itself. With that in mind then, does this not occur anywhere else at all? What if you use the file picker in Firefox or Chrome, which should be the same implementation as Electron is using, backed by these DBus calls. But if the problem is in the file picker itself, you’re not going to see any return responses in these logs and it’d likely be a QT bug rather than Joplin.

I was hopeful that when you’re opening the filer picker, the dbus output would maybe have an error. It might still be returning errors when you’re pressing the button and nothing is happening, but I’d look more into QT debugging myself basically.

Running v3.4.12 installed using the offical script on Manjaro KDE 6.3.6. No issues and was able export all and a note as well as save the attachment.

Peter

Export 1 or many notes worked for me on openSUSE Leap 15.6 and KDE Plasma 5.27.11. Self-hosted joplin 3.1.24