On Mon, Sep 28, 2020 at 1:44 AM Vieri <[email protected]> wrote:
> Hi, > > I'd like to make sure that specific RDP connections get the best image > quality regardless of bandwidth. > ... > Should I leave DPI undefined, or should I manually give it a value of, > say, 300? > Short answer: No. The "dpi" parameter affects only how the client width/height are interpreted, not image quality. Long answer: The "dpi" parameter controls the *effective resolution* of the display only. It will not have any effect on the true remote display resolution as it pertains to things like font/vector rendering quality, which Guacamole (and typically Windows) assume is 96 DPI. So why is the DPI used at all if it has no effect on the true DPI of the Windows' display? Very high DPI devices like modern cell phones have a great many pixels covering a small area. If the true dimensions of these displays were sent as-is to Windows, the screen that you see on the client side would be unusable. With the Windows side assuming 96 DPI, you would end up with text that would be readable on a large monitor but is just microprint on a handheld device. To combat this, Guacamole's RDP support uses heuristics to determine a width and height to request for the remote desktop that will be "reasonable" based on the client-side DPI and dimensions. Blindly using an effective 96 DPI would produce a display that typically does not have enough screen real estate to be usable on small devices, whereas blindly using the true client-side DPI would produce a display that's unusable for the reasons noted above. Guacamole's heuristics will typically select a DPI somewhere in between. You can see the internals of how this is done here: https://github.com/apache/guacamole-server/blob/ceabd68e280c416e31cc35b105eac33dc13eb11e/src/protocols/rdp/client.h#L46-L63 https://github.com/apache/guacamole-server/blob/ceabd68e280c416e31cc35b105eac33dc13eb11e/src/protocols/rdp/resolution.c Specifying the "dpi" parameter overrides these heuristics. - Mike
