Let the caller choose a fixed KamoDesktop resolution

FeatureSecurityService
Shipped
August 27, 2026 at 10:14 PM UTC
Author
Kamo
Commit
2ac407f

The remote desktop was never locked to a resolution — it tracks the browser window, and always has. guacd honours the client's size and xorgxrdp resizes the X screen live; the session log shows it moving between 1920x1014, 1080x711 and 1280x676 as the window changed. Guacamole also already multiplies by devicePixelRatio, so a HiDPI screen gets its real pixel count. What was missing is any way to ask for MORE desktop than the window has. The SSO endpoint now takes optional width and height and passes them to the connection. resize-method is turned OFF when a size is given, and that is the whole trick: leave it on and the browser sends its own size on the next window resize, guacd obeys, and the chosen resolution is silently undone — the picker would look broken for reasons nobody could see. Without it the size holds and Guacamole scales the display to fit, with its zoom control for 1:1 and scrolling. A test pins that, because it is the one detail that makes this work. Bounds are clamped server-side rather than trusted: the caller is a browser, the token is signed, and the framebuffer is allocated on a VM everyone shares, so an unbounded value is a resource decision, not a formatting one. Width and height must be given together; half a size is a caller bug, and filling in the other half would hand back a desktop shaped like nothing anyone asked for. Omitting both keeps the previous behaviour exactly, so nobody who has not touched the new picker sees any change at all.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing