Looks like Calibre will try to use zenity on GNOME when available (which should be wrapped), and when it fails it will use the file dialogue provided by Qt:
- https://github.com/kovidgoyal/calibre/blob/1575a29101a7d956cc01618cc4dc668dadd9f073/src/calibre/gui2/actions/add.py#L50
- https://github.com/kovidgoyal/calibre/blob/3dd95981398777f3c958e733209f3583e783b98c/src/calibre/gui2/__init__.py#L672-L679
- https://github.com/kovidgoyal/calibre/blob/3dd95981398777f3c958e733209f3583e783b98c/src/calibre/gui2/linux_file_dialogs.py#L293-L297
- https://github.com/kovidgoyal/calibre/blob/3dd95981398777f3c958e733209f3583e783b98c/src/calibre/gui2/qt_file_dialogs.py
And it appears Qt will use the portal for file chooser if you set QT_QPA_PLATFORMTHEME=xdgdesktopportal environment variable.
Maybe we should do that by default in GNOME/when xdg-desktop-portal is enabled – but it might conflict with adwaita-qt. Edit: qgnomeplatform is the component to worry about and it already uses portals when available. It would probably be best to just enable the theme like Pantheon does. Edit 2: Opened nixos/gnome: enable platform integration for Qt by jtojnar · Pull Request #136071 · NixOS/nixpkgs · GitHub.