This is a recent issue, and I don't know what has changed to cause it. There seems to be no rhyme or reason as to which games work and which ones don't. My monitor's resolution is set to 2560 x 1440 in the display settings, but some games don't recognize it.
Of the games I have installed, Subnautica, Dark Souls III, Sekiro, Control, Hades, and Hi-Fi Rush think my native resolution is 1896 x 1067 and they won't let me change it to anything higher than that.
Elden Ring, Ark Survival Ascended, and Returnal detect my resolution correctly and work fine.
This is all from Steam without any custom launch settings, and with and without gamescope. I've tried custom resolution command line options for Subnautica and that hasn't helped either.
I'm running an RX 6700 XT on Nobara with everything currently up to date. I'm not sure when this issue started, but it's recent, probably within the last week or so. I've definitely run Control and Sekiro at the correct resolution before, but in my recent testing they no longer work right.
Does anyone know what could be causing this? Why some games work fine and others don't?
I've solved most of my monitor problems on Wayland by using Gamescope. For example Enlisted (native) will insist on spanning across my 2 1080 monitors, or Helldivers 2 won't boot on fullscreen while showing a white line on borderless. Also most games won't properly grab the cursor.
On any steam game add this as launch options:
gamescope -w 2560 -h 1440 -r 60 -f -e %command%
This will make the game think it's always running in the foreground, and in the resolution/refresh rate you specify.
If you want to add extra commands, like mangohud or gamemoderun, put them before gamescope
Used to be really finnicky but lately (last 6 months let's say) it's worked just fine. The only downside is that it might get hanged in the background and steam will show the game still running.
It's basically a compositor, on top or your main compositor. So games aren't aware of the outer compositor (which will be Gnome or KDE or whatever) and just see a display with whatever dimensions you give to it.