- For Steam apps, the previous method doesn't work (for some reason - maybe it uses a custom launch process?), but after trying many different ways, I was able to get most Steam apps to use the correct GPU (GPU 0) by adding the custom launch option PROTON_USE_WINED3D=0 %command%
Steam runs the commands to launch the games directly, so editing .desktop files won't affect anything launched through steam directly.
PROTON_USE_WINED3D=0 is related to the graphics back ends, so I wouldn't use it for selecting the GPU, as, while it might work for making a game use the dedicated GPU, it probably won't work reliably as you've discovered. For setting a game to run on the NVIDIA GPU I think PRIME and NVIDIA Optimus are the solution, but I can't help you much since all my systems have only a single GPU enabled. One of the following 3 launch options in steam should work:
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia __VK_LAYER_NV_optimus=NVIDIA_only %command%
DRI_PRIME=1 %command%
prime-run %command%