dangerzone icon indicating copy to clipboard operation
dangerzone copied to clipboard

Please use a native file chooser dialogue in GNOME environments

Open sudwhiwdh opened this issue 9 months ago • 8 comments

It looks as if the current dialogue also does not support the system's dark mode.

Dangerzone 0.8.1 Using Fedora Workstation 41

sudwhiwdh avatar Apr 04 '25 08:04 sudwhiwdh

Which widget does Dangerzone use for this purpose?

sudwhiwdh avatar Apr 23 '25 17:04 sudwhiwdh

It uses the QFileDialog widget:

https://github.com/freedomofpress/dangerzone/blob/83be5fb151b0c30bad47f173f875b6ce1c20e0bd/dangerzone/gui/main_window.py#L739-L744

By default it should present a native dialog to you. Do you see any difference with other file dialogs in your system? A screenshot could help here perhaps.

apyrgio avatar Apr 23 '25 17:04 apyrgio

By default it should present a native dialog to you.

Native in terms of which toolkit? Qt or GTK?

sudwhiwdh avatar Apr 23 '25 20:04 sudwhiwdh

Do you see any difference with other file dialogs in your system? A screenshot could help here perhaps.

I have looked at various installed apps (Image download with Firefox, Metadata Cleaner, Audio Player, KeePassXC) KeePassXC is also a Qt app. All dialogues look different from those in Dangerzone.

Image Image Image Image Image

sudwhiwdh avatar Apr 23 '25 20:04 sudwhiwdh

Woot, thanks a lot for the screenshots. I checked locally and they differ in my case (but I have a theory). Here's what I see in my Fedora 41 system:

Firefox (save page as)

Image

Rhythmbox (open file)

Image

Keepass (open database file)

Image

As we can see, the first two screenshots (Firefox/Rhythmbox) differ from the ones in your system, and are similar to the Dangerzone file dialog (see https://github.com/freedomofpress/dangerzone/issues/1125#issuecomment-2824891557). However, the third one (Keepass) matches your screenshot.

Here's my theory. In my system, Firefox/Rhythmbox are programs installed on the host, whereas Keepass was installed via Flatpak. It could be that Flatpak decorates file dialogs in a different way. My guess is that the apps you posted the screenshots for are installed via Flatpak as well. If you install Firefox via dnf, I think you'll see a file dialog similar to Dangerzone's. Let me know if this is the case.

Native in terms of which toolkit? Qt or GTK?

Native in terms of the default desktop environment in Fedora 41, which is Gnome, and therefore GTK. From the QFileDialog docs:

By default, a platform-native file dialog is used if the platform has one.

Btw, the Qt file dialog has a distinctively different style than GTK's:

(example taken from a Linux Mint forum post)

apyrgio avatar Apr 24 '25 12:04 apyrgio

As we can see, the first two screenshots (Firefox/Rhythmbox) differ from the ones in your system, and are similar to the Dangerzone file dialog

I did some tests with Rhythmbox. And I couldn't find out exactly which dialogue you opened there. I clicked on the + at the bottom left and then clicked something like ‘Load new file’. And this dialogue looked the same in the Flatpak version and in the RPM version. And yes, they look like those from Dangerzone. By the way, Rhythmbox has not yet been ported to GTK 4, I wonder if that might have something to do with it?

What I also noticed is that although it is not a file dialogue, the layout of the ‘Files’ app, which is installed as standard in RPM in Fedora 41, looks more like my screenshots.

Image

I find the question of which dialogue Flatpaks use by default interesting. It works there via the portals, doesn't it?

What does the dialogue look like when you install KeePassXC as an RPM?

sudwhiwdh avatar Apr 24 '25 16:04 sudwhiwdh

I did some tests with Rhythmbox. And I couldn't find out exactly which dialogue you opened there. I clicked on the + at the bottom left and then clicked something like ‘Load new file’. And this dialogue looked the same in the Flatpak version and in the RPM version. And yes, they look like those from Dangerzone.

Right, that's what I did as well. I hadn't tested the Flatpak version though, so I stand corrected! Thanks for looking into it.

By the way, Rhythmbox has not yet been ported to GTK 4, I wonder if that might have something to do with it?

Oh, I did not expect this actually! I thought being a stock Gnome app that it would have been ported already. So, you're saying that maybe we're invoking a native file dialog, but written in GTK3 instead of GTK4. I don't know how Qt chooses what to show, so I probably need to dig more a bit there.

I find the question of which dialogue Flatpaks use by default interesting. It works there via the portals, doesn't it?

I think but I'm not that well-versed in the Gnome ecosystem.

What does the dialogue look like when you install KeePassXC as an RPM?

Just checked, it's the same as in Flatpak. I should have verified this earlier, but I installed Keepass instead of KeepassXC, and it threw me off.

apyrgio avatar Apr 28 '25 11:04 apyrgio

In Qubes, in an AppVM based on a debian-12 (GNOME) template, here's what I see:

Image

Based on https://github.com/freedomofpress/dangerzone/issues/1122#issuecomment-2827452017 that seems like the builtin Qt one, not the native GNOME one.

Is some package or dependency missing? (possibly on the Qubes side?)

legoktm avatar May 15 '25 18:05 legoktm