godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
91.49k stars 21.26k forks source link

Editor ignores "use native file dialog" setting when run through Steam on Linux #98962

Open romlok opened 3 weeks ago

romlok commented 3 weeks ago

Tested versions

Reproducible in:

System information

Godot v4.3.stable - Steam Runtime 2 (soldier) 2 - Wayland - Vulkan (Mobile) - dedicated AMD Radeon RX 7600 (RADV NAVI33) - AMD Ryzen 5 7600 6-Core Processor (12 Threads)

Issue description

When Godot is run through Steam, the editor seems to always use the native file dialogs, even when that option is disabled in the editor settings.

This appears to have started with the most recent Steam client update, which improved Wayland integration (judging by the Steam client now scaling properly).

Note that the same Godot binary run externally from Steam doesn't exhibit this behaviour. So something in the Steam runtime environment appears to be affecting Godot in this way. I tried changing from the Soldier (2) to Scout (1) runtime, but that didn't make a difference.

I also noticed that the native dialog that pops up doesn't seem to be configured correctly, since when loading a script file to a Node in the scene tree, the dialog warned me about overwriting the file! :confused:

Steps to reproduce

  1. Be a Linux (+Wayland?) (+KDE?) user;
  2. Run Godot editor through Steam;
  3. Make sure Use Native File Dialogs is disabled in the editor settings;
  4. Perform any file access operation, eg. Scene -> Open Scene
  5. :eyes:

Minimal reproduction project (MRP)

N/A

bruvzg commented 3 weeks ago

Most likely something in the Steam Runtime environment is preventing access to the xdg-desktop-portal or system D-Bus interface in general, and not providing it's own equivalent.

romlok commented 2 weeks ago

I've looked into this a little more, and it appears that Godot is indeed now running in one of Steam's containerised Linux runtimes, where it wasn't doing so before (the "Legacy runtime"). There doesn't seem to be a way to reverse this on a per-game basis, but (for now) one can disable the enforced runtime by running the Steam client with -compat-force-slr off.

In announcing this change, IIRC Valve mentioned that developers could choose which runtime to use for their app/game. So is it an option for Godot on Steam to be configured not to use a containerised runtime?