Describe the bug
When calling xdg-open from a FHS env or wrapped app, it tries to launch the associated program directly while either having unexpected/unrelated environment variables like LD_PRELOAD set or worse being in an FHS env which is entirely missing some dependencies.
Ideally, xdg-open when used in a FHS env or wrapped package would use xdg-desktop-portal to launch apps instead, similarly to how flatpaks use this to open other applications outside of the package.
There is partial upstream support for this but it only applies in flatpaks:
https://github.com/freedesktop/xdg-utils/blob/1a58bc28f6844898532daf9ee1bf6da7764955a9/scripts/xdg-open.in#L250
https://github.com/freedesktop/xdg-utils/blob/d11b33ec7f24cfb1546f6b459611d440013bdc72/scripts/xdg-utils-common.in#L361-L363
It also doesn't handle local files correctly.
An example script which also handles files is here.
Steps To Reproduce
One example of this issue, although there are many related issues in different contexts.
Steps to reproduce the behavior:
- Launch lutris under KDE
- Click a link in it or an app launched by it
- KDE thinks firefox's .desktop item isn't owned by root as it's owned by nobody in the FHS sandbox and refuses to start it
Expected behavior
The xdg-open package in NixOS should use xdg-desktop-portal to launch apps/urls/etc when possible as if it is inside a flatpak to avoid running apps in unexpected FHS envs or with unexpected env from wrappers.
Screenshots


Notify maintainers
@edolstra - xdg-utils maintainer entry
@Atemu @illegalprime @wentasah - work on bwrap FHS envs
Metadata
Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.
[user@system:~]$ nix-shell -p nix-info --run "nix-info -m"
- system: `"x86_64-linux"`
- host os: `Linux 5.15.19-xanmod1-tt, NixOS, 22.05 (Quokka)`
- multi-user?: `yes`
- sandbox: `yes`
- version: `nix-env (Nix) 2.7.0pre20220127_558c4ee`
- channels(root): `"nixos-21.11.333896.a640d8394f3"`
- channels(lun): `""`
- nixpkgs: `/etc/nix/path/nixpkgs`
Describe the bug
When calling
xdg-openfrom a FHS env or wrapped app, it tries to launch the associated program directly while either having unexpected/unrelated environment variables likeLD_PRELOADset or worse being in an FHS env which is entirely missing some dependencies.Ideally,
xdg-openwhen used in a FHS env or wrapped package would usexdg-desktop-portalto launch apps instead, similarly to how flatpaks use this to open other applications outside of the package.There is partial upstream support for this but it only applies in flatpaks:
https://github.com/freedesktop/xdg-utils/blob/1a58bc28f6844898532daf9ee1bf6da7764955a9/scripts/xdg-open.in#L250
https://github.com/freedesktop/xdg-utils/blob/d11b33ec7f24cfb1546f6b459611d440013bdc72/scripts/xdg-utils-common.in#L361-L363
It also doesn't handle local files correctly.
An example script which also handles files is here.
Steps To Reproduce
One example of this issue, although there are many related issues in different contexts.
Steps to reproduce the behavior:
Expected behavior
The
xdg-openpackage in NixOS should usexdg-desktop-portalto launch apps/urls/etc when possible as if it is inside a flatpak to avoid running apps in unexpected FHS envs or with unexpected env from wrappers.Screenshots
Notify maintainers
@edolstra - xdg-utils maintainer entry
@Atemu @illegalprime @wentasah - work on bwrap FHS envs
Metadata
Please run
nix-shell -p nix-info --run "nix-info -m"and paste the result.