Quick answer: Pygame on Linux X11 ignoring vsync flag? SDL_GL_SwapInterval needs to be set explicitly - call after display.set_mode with the OpenGL flag.

Game runs at 600fps on Linux despite vsync=True. Same code caps at 60 on Windows.

Set swap interval

pygame.display.set_mode((w, h), pygame.OPENGL | pygame.DOUBLEBUF)
pygame.display.gl_set_attribute(pygame.GL_SWAP_CONTROL, 1)

X11 needs the explicit attribute. Windows handles vsync via the flag.

Use Clock.tick as fallback

If vsync is unreliable, clock.tick(60) caps frame rate uniformly. Trades GPU sync for portable timing.

Test on Wayland

Wayland handles vsync differently from X11. Test both compositors; the bug behavior changes.

“Linux display behavior varies by compositor. Defensive coding wins over assumptions.”

Document supported Linux configurations explicitly. 'X11 + GNOME 42+' is more honest than 'Linux'.