This was great because we were able to do things like keep the action bar at the bottom of the dialog, restore color to the sidebar icons, and make use of Files’ smart pathbar. But, there are limitations to what we can do with Gtk.Module. At the end of the day, we can only ship a modified Gtk file chooser dialog and we must make sure that our Gtk.Module doesn’t break when the upstream Gtk chooser changes. This can be difficult at times, as we’ve seen that some users have experienced a file chooser with no action area at all. It’s not an ideal solution and to improve the situation, we need something new.

FileChooserNative + Portals

In preparing for a new world of sandboxed apps, Gtk has made a pretty big change: the file chooser dialog has moved from being a widget living inside of a given app to a separate process that apps communicate with through Portals. This is huge for security and privacy because it means that when an app asks you to open a file or folder, it no longer needs permission to read your file system. Instead, only that separate, trusted file chooser must have these elevated permissions.

Also, since the file chooser is its own separate process, Gtk itself no longer has to supply the file chooser. This means that Gtk apps can use custom fully-native file choosers from not just GNOME, but also other platforms implementing the file chooser portal like Plasma, Windows, macOS, and soon elementary OS.