Released: 2025-01-20
Bug Fixes:
- Fix permission check for host system apps in the Camera portal.
- Do not expose the Settings portal if there are no backends available.
- Disable sounds-related notification tests if the project is built without wavparse.
Enhancements:
- Start porting the test suite to Python tests. Once finished, this should break the cyclic dependency between xdg-desktop-portal and libportal.
- Install Python-based tests. This is mostly useful for distributions to run tests as part of their packaging process.
Released: 2024-12-21
Dependencies:
- XDG Desktop Portal now requires GLib 2.72 or higher.
New Features:
- Introduce the Notification v2 portal. This updated version of the Notification portal supports a plethora of new fields for notifications, such as sounds, categories, purpose, and more.
- Introduce the USB portal. This portal allows apps with relevant permissions to enumerate and acquire access to specific USB devices.
- Introduce a new
SchemeSupported
method to the OpenURI portal. This new method allows apps to know ahead of time if the host system is able to deal with a particular scheme.
Enhancements:
- Continued the move towards Python-based tests. This should simplify the test setup in the project quite significantly, and also will allow removing the cyclic dependency between libportal and XDG Desktop Portal.
- Introduce umockdev-based tests.
- Improve the icon validator so it can deal with memfd-based icons.
- Clarify behavior of the Settings portal for non-standardized keys.
- In the Global Shortcuts portal, clarify that the result the
BindShortcuts
of may be a subset of all requested shortcuts. - Add a documentation page about icon validation requirements.
Bug Fixes:
- Fix memory leaks in the Background, Email, and Global Shortcuts portals.
- Fix a general file descriptor & memory leak.
- Fix a regression in the Settings portal.
- New and updated translations.
Released: 2024-10-09
- Completely rework and restructure the documentation website. Documentation is now segmented by target audience (app developers, desktop developers, and contributors). It also documents how the Document portal operates, the FUSE filesystem, and custom file attributes. This is available in the following address: https://flatpak.github.io/xdg-desktop-portal/docs/index.html
- The portals.conf parser is now able to handle fallback backends better, and respects the order of backends in the config file.
- Try to use the xdg-desktop-portal-gtk backend as a last resort backend, if everything else fails.
- Implement getlk and setlk, and honour O_NOFOLLOW, in the Document portal's FUSE filesystem.
- Neutralize the Devices portal. Originally the Devices portal was introduced so that services like PulseAudio or PipeWire could request access to microphones and cameras on the behalf of apps. It was not meant to be used by sandboxed apps directly, which is unusual for a portal. Practically, however, it didn't take off.
- Implement PID/TID mapping for host system apps.
- Add a new "supported_output_file_formats" option to the Print portal. This can be used by apps like browsers to limit the output file formats presented by the Print portal backend. For example, an app can limit file printing to PDF files.
- Add a new "GetHostPaths" method to the Document portal, which allows mapping file descriptors to paths on the host system. This can be used by apps to show more meaningful file paths in the user interface.
- Like the new method above, the Document portal sets the "user.document-portal.host-path" xattr on files, pointing to the the host system file path. The use case is similar to "GetHostPaths".
- Make the Background portal more robust when validating autostart files.
- Clarify behavior of the File Chooser portal in the documentation pages.
- Improve robustness against deleted o_path fds in the Document portal.
- Fix a warning in some systems while trying to load Request D-Bus object properties.
- Fix a physical inode leak in the Document portal.
- Various improvements to the test suite. Python-based tests now run in parallel and are more careful when setting up the mock D-Bus server. Tests also start dbus-monitor if necessary now. FUSE tests of the Document portal have been made more TAP-alike now.
- Memory leak fixes in a variety of portals and services, including the permissions database, the Document portal, the File Transfer portal, the Location portal, the Background portal, tests, and the icon validator. And more. There's a lot of memory leak fixes everywhere, really.
- Major refactorings of the icon validator. Icons are now limited to 4MB files.
- Update XML specification specifying session handle type to match current actual ABI in GlobalShortcuts, Inhibit, RemoteDesktop, and ScreenCast portals.
- New and updated translations.
Released: 2023-10-26
- Communicate better when the Background portal kills an app
- Properly quote Flatpak command in the Background portal
- Improve documentation of the "cursor_mode" propery of the ScreenCast backend D-Bus interface
- Fix ScreenCast portal removing transient restore permissions too early. This fixes screen sharing dialogs on Chromium asking for the screen multiple times.
- Only send the Closed session signal to the sender
- Add Meson options to disable building with Bubblewrap, and without the Flatpak portal documentation. Disabling Bubblewrap is highly discouraged, and only meant to be used on platforms that do not currently support it. By disabling Bubblewrap, bitmap validation happens without a sandbox, which is highly insecure since image parsing is a common source of exploits. Really, just do not disable Bubblewrap please.
- Improve the manpage of portals.conf
- Various spelling fixes to the Document portal
- Add a new website! We don't have a fancy domain yet, but the website can be accessed at https://flatpak.github.io/xdg-desktop-portal/
- Improve pid mapping for host system apps. This should get rid of some rare, unnecessary warnings.
- Adjust documentation of Global Shortcuts portal's timestamps to millisecond granularity
- Bump minimum Meson version to 0.58
Released: 2023-09-18
- Bump interface version of the Printer portal to 2
- Validate addresses following the HTML specs in the Email portal
Released: 2023-09-01
- Document minimum version of the new ReadOne() method of the Settings portal
- Add a mapping id property to the ScreenCast portal
- Add activation token parameter to the Email portal
- Test tarball generation in CI
Released: 2023-08-27
- Document xdg-desktop-portal versioning scheme
- Fix various issues in the OpenURI portal
- Introduce the ReadOne() method in the Settings portal. This method is now preferred over the Read() method, as Read() mistakenly returned a variant inside a variant. The Read() method will continue to exist for compatibility with existing apps, but its usage is deprecated. We recommend apps to port to the ReadOne() method. Apps can decide whether to use ReadOne() or Read() by looking at the version of the Settings portal.
- Improvements to the new config-based portal matching mechanism. Config files are now searched in standard paths, in a way that is compatible to other system components (e.g. MIME types).
- Various small visual tweaks to the generated documentation
- Document a new 'accent-color' key in the Settings portal. This key represents an arbitrary color in sRGB colorspace. How implementations of the portal provide this key is entirely dependent on their internal policies and design.
- Translation updates
Released: 2023-08-04
- Drop the Autotools build. Meson is now the only supported build system.
- Rework how portal implementations are loaded. This new, more robust system allows selecting specific backends for specific portals, and layering them when necessary. Platforms that provide portals implementation are encouraged to provide a suitable configuration file.
- Introduce a new Clipboard portal. This portal extends the Remote Desktop portal by adding support for sharing clipboard between remote machines.
- Introduce a new Input Capture portal. This portal adds mechanisms for taking control of input devices. The primary usage model is centered around the InputLeap and Synergy use cases, where local devices are used to control remote displays.
- Stop using the deprecated GTimeVal struct
- Bump GLib dependency to 2.66
- Add an "accept-label" option the the Print portal. This lets apps suggest a proper label to the print operation.
- Various fixes to the Global Shortcuts portal
- Support restoring remote desktop sessions
- Improve robustness of the OpenURI portal by validating more URIs
- The PipeWire dependency is now mandatory
- Various improvements for the test suite
- Translation updates
Released: 2022-12-12
- Introduce a new background monitoring service. This allows desktop environments to list applications that are running in background, that is, sandboxed applications running without a visible window. Desktop environments can display these background running applications in their interfaces, and allow users to control their execution.
- Introduce the Global Shortcuts portal. This portal allows applications to register and receive keyboard shortcuts even when they're not focused. This was a highly requested feature, especially on Wayland desktops. There are improvements to come, but portal backends can now implement this new portal.
- Various CI improvements
- Translation updates
Released: 2022-08-11
- Add Meson build files. For now, both Autotools and Meson are available in the source tree. Starting from next release, tarballs will be generated using Meson. There is no set date to delete Autotools files, but it will happen at some point in the future. The removal of Autotools will be communicated in advance.
- Make the Screenshot portal request permission to take screenshots. Frontends that implement the version 2 of org.freedesktop.portal.impl.Screenshot portal can now be aware that the screenshot permission was granted through the new 'permission_store_checked' option, and skip any kind of dialog when that is the case.
- Stop sending the app id quoted in the Background portal
- Fix a bug in cgroup name parsing
- Various fixes to the Realtime portal
- Various CI improvements
- Translation updates
Released: 2022-03-18
- Fix an issue in 1.14.0 where xdg-desktop-portal.service starting before graphical-session-pre.target would cause the GNOME session to deadlock by moving code to a new libexec binary which handles deleting or migrating .desktop files (and icons) from the dynamic launcher portal for apps which have been uninstalled or renamed.
- Fix some bugs in the aforementioned launcher migration implementation, "xdg-desktop-portal-rewrite-launchers".
- Fix build without libsystemd
Released: 2022-03-17
- Add a new "dynamic launcher" portal, which can install .desktop files and accompanying icons after user confirmation.
- Rework handling of empty app IDs: In case an empty string app ID is stored in the permission store, this permission is now shared only by apps whose app ID couldn't be determined, rather than all unsandboxed apps.
- Use libsystemd (when available) to try to determine the app ID of unsandboxed processes. This is useful since some portals otherwise can't be used by host apps.
- Make x-d-p start on session start, which is needed for the dynamic launcher portal to handle rewriting launchers for apps that have been renamed.
- Bring back the copy of Flatpak's icon-validator, which was dropped many releases ago.
- Icon validation is now required for the notification and dynamic launcher portals (previously it was only done if the "flatpak-validate-icon" binary could be found).
- document-portal: Move to the libfuse3 API
- document-portal: Use renameat2 sys call
- document-portal: Use mutex to fix concurrency bug
- realtime: Fix error code paths
- realtime: Fix MakeThreadHighPriorityWithPID method
- screencast: Fix an error when restoring streams
- ci: Various improvements
- Documentation improvements
- New translations: pt, ro
Released: 2021-12-22
- Fix a crash in the device portal
Released: 2021-12-21
- Place portals in the systemd session.slice
- settings: Add color-scheme key
- open-uri: Avoid a sync call to org.freedesktop.FileManager
- screncast: Allow restoring previous sessions
- Add a portal for requesting realtime permissions
- ci: Many improvements
- Publish the docs from a ci job
- Translation updates
- Remap /run/flatpak/app, for Flatpak 1.11.x
- Remap /var/config and /var/data
- permission-store: Avoid a crash
- permissions-store: Add GetPermission
- screencast: Add 'virtual' source type
- openuri: Use real path for OpenDirectory
- location: Fix accuracy levels
- Add power profile monitor implementation
- Translation updates
- openuri: Fix an fd leak
- filechooser: Fix directory support
- build: Drop a fontconfig dependency
- snap: Use cgroups to identify confined apps
- documents: Add snap support
- wallpaper: Fix a crash
- build: Factor out a fuse check
- Translation updates
- openuri: Allow skipping the chooser for more URL tyles
- openuri: Robustness fixes
- filechooser: Return the current filter
- camera: Make the client node visible
- camera: Don't leak pipewire proxy
- Fix file descriptor leaks
- Testsuite improvements
- Translation updates
- document: Reduce the use of open fds
- document: Add more tests and fix issues they found
- Fix the build with musl
- filechooser: Add a "directory" option
- filechooser: Document the "writable" option
- document: Expose directories with their proper name
- testsuite improvements
- background: Avoid a segfault
- screencast: Require pipewire 0.3
- document: Support exporting directories
- document: New fuse implementation
- better support for snap and toolbox
- Translation updates
- tests: Adapt to libportal api changes
- background: Add a signal to the impl api
- background: Rewrite the monitoring to better track when apps disappear
- permissions: Fix SetValue handling of GVariant wrapping. This is an api change
- openuri: Add a per-type always-ask option
- openuri: Show the app chooser dialog less often
- memorymonitor: A new portal to let apps receive low memory warnings
- filetransfer: A new portal to rewrite file paths between sandboxes
- Add more tests
- Translation updates
- location: Various fixes
- document portal: Monitor fuse mount
- openuri: Only ask 3 times to use the same app
- openuri: Add an 'ask' option
- Fix build from git
- email: Allow multiple addresses, cc and bcc
- filechooser: Allow saving multiple files
- Add many more tests, using libportal
- gamemode: Add a pidfd-based api
- inhibit: Send a Response signal
- openuri: Add an OpenDirectory api
- Translation updates
- Add a portal for setting desktop backgrounds
- Add tests
- Optionally use libportal (for tests)
- Add a secret portal that is meant be used via libsecret inside the sandbox. One backend for this will live in gnome-keyring, others are possible
- Fix a file descriptor leak
- Reduce log spam
- Translation updates
- Build fixes
- Add a background&autostart portal
- Add a gamemode portal
- Add a camera portal
- Require pipewire 0.2.6
- inhibit: Track session state
- documents: Fix a ref-counting bug
- screencast: Add cursor modes
- screencast: Memory leak fixes
- Translation updates
- notification: Use icon validator from flatpak
- notification: Don't leave temp files around
- email: Validate options better
- inhibit: Validate options better
- file chooser: Add support for setting the current filter
- Translation updates
- Validate icons in notifications
- Respect lockdown settings
- Write back permissions for notifications to indicate portal use
- Set st_nlink in the documents portal
- Add infrastructure for validating options
- Validate email addresses
- Translation updates
This is the first release in the new unstable 1.1.x series, leading up to 1.2 which is expected around the end of the year.
- Add a location portal, this requires geoclue 2.5.2
- Add a settings portal, for desktop-wide settings like XSettings or kdeglobals
- Allow locking down printing, save-to-disk and opening uris
- Monitor application changes in the open uri portal
- Add more tests
- Fix an option name in the remote desktop portal
- document-portal: Validate permissions and report errors
- Fix life-cycle issues with inodes in the document portal
- Improve the test coverage of the documents portal
- Add a 'coverage' make target
- networkmonitor: Fix several issues
- inhibit: Add session state monitoring
- networkmonitor: Add GetStatus and CanReach methods
- Unset GTK_USE_PORTAL
- Add a portal for moving files to the trash
- Fix an inode leak in the document portal
- screenshot: Add a color picker api
- screencast: Bump the pipewire dependency to 0.2.1
- Improve --help output
- Small documentation improvements
- The NetworkMonitor portal API has been changed to allow access control
- The Proxy and NetworkMonitor portals only respond to requests from sandboxes with network access
- The flatpak portal is now documented
-
Add initial support for Snap packages.
-
Fix memory leaks when ownership of bus names changes.
-
Include docs for the session, remote desktop and screencast portals.
-
document-portal: Be more flexible validating apps' IDs.
-
document-portal: Be more strict when checking & granting file access.
-
file-chooser: Fix crash with unitialized data in the save dialog.
-
open-uri: Don't ever skip showing the dialog if a threshold is set.
-
open-uri: Don't register http: URIs for sandboxed handlers.
-
remote-desktop: Use the correct device type values.
-
screencast: Fix synchronization issue with PipeWire.
-
Translation updates Chinese (Taiwan) Spanish
This version of xdg-desktop-portal contains the xdg-document-portal that used to be shipped by flatpak. The code was moved to xdg-desktop-portal as a first step towards being used by snappy. Additionally having the two related portals delivered together makes it easier to implement new features that rely on changes to both portals.
The two versions of the document portal are fully compatible, but the package files will conflict with older versions of flatpak, so packagers will have to pick one version. Following this there will be a new release of unstable flatpak with the document portal removed, and a release of the stable branch (0.10) that has a configure option to disable the document portal.
Additionally, this release contains a new screencast and remote desktop portal based on PipeWire.
Major changes in this versions:
- Import permission store from flatpak
- Import document portal from flatpak
- Add remote desktop portal
- Add screencast portal
- Add "interactive" mode to screenshot portal
- file-chooser: Don't return document paths for paths the application has direct access to
- Handle newer version of bubblewrap
- New abstraction for application info, supporting multiple sandbox technologies
- Add basic test suite
-
Install pkg-config files into datadir
-
Avoid a race in the portal APIs
-
Change the email portal to take fds
-
Translation updates Galicican Indonesian Turkish
- Update po files
-
In the OpenURI portal, send the content-type and filename to the appchooser
-
Stop handling file: uris in the OpenURI method of the OpenURI portal
-
Add an OpenFile method for local files to the OpenURI portal
-
Bug fixes in the notification portal
-
Translation updates: Czech Italian
-
A portal for sending email has been added
-
The OpenURI portal has be made a bit more permissive. It will now directly use the system default for "safe" schemes such as http, and local directories.
-
Translation updates: French
-
The notification portal now supports non-exported actions
-
An Account portal for basic user information has been added
-
All portal interface now have a version property. Currently, all interfaces are at version 1
-
The file chooser portal was forgetting to make files created for SaveFile writable. This has been fixed
-
Translation updates: Czech Polish Swedish
-
No longer rely on cgroups to find the app id
-
Fix handling of mime type filters in the file chooser portal
-
Translation updates: Chinese Czech German Serbian
-
open-uri: Allow configuring threshold
-
open-uri: Use fallback applications when needed
-
Translation updates: Brazilian Portuguese Hungarian Slovak Ukrainian
-
Add internationalization support
-
Add Qt annotations
-
New portal APIs:
- org.freedesktop.portal.Device
- Translation updates: Polish
Included portal APIs:
- org.freedesktop.portal.FileChooser
- org.freedesktop.portal.Print
- org.freedesktop.portal.OpenURI
- org.freedesktop.portal.Screenshot
- org.freedesktop.portal.Inhibit
- org.freedesktop.portal.Notification
- org.freedesktop.portal.NetworkMonitor
- org.freedesktop.portal.ProxyResolver