Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Experimental support for setdesktopsize / extendeddesktopsize #107

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

maxnet
Copy link

@maxnet maxnet commented Jul 17, 2019

When enabled with the -setdesktopsize option this allows
clients like novnc and tigervnc to request a change of
framebuffer resolution to fit that of the client window.

On the server this is implemented by leaving the physical
display resolution as-is, but setting a new framebuffer
resolution and scaling that framebuffer to the physical
display using RANDR calls.
As a result the view on the physical display may look a bit
distorted due to the scaling, but looks perfect on the remote
client. (While that is normally the opposite case)

When last client disconnects original framebuffer resolution
is restorted.

Known limitations:

  • Implementation currently limited to computers with a single
    screen attached.

  • Only works on X servers/drivers with RANDR support

  • Does not always work properly on headless sytems with no monitor attached. (Needs some investigation)

  • Needs a recent libvncserver with the setdesktopsize hook support recently merged.

Closes #91

When enabled with the -setdesktopsize option this allows
clients like novnc and tigervnc to request a change of
framebuffer resolution to fit that of the client window.

On the server this is implemented by leaving the physical
display resolution as-is, but setting a new framebuffer
resolution and scaling that framebuffer to the physical
display using RANDR calls.
As a result the view on the physical display may look a bit
distorted due to the scaling, but looks perfect on the remote
client. (While that is normally the opposite case)

When last client disconnects original framebuffer resolution
is restorted.

Implementation currently limited to computers with a single
screen attached.

Signed-off-by: Floris Bos <[email protected]>
@bk138
Copy link
Member

bk138 commented Jul 17, 2019

Thanks! Before any further review: please make sure the code builds with an older LibVNCServer version, too.

@maxnet
Copy link
Author

maxnet commented Jul 17, 2019

Fair enough. Added some #if's

@andrewmcewen
Copy link

Is there any update on this PR?

@ioMatrix
Copy link

Having this feature work would be a major plus. Please let me know what kind of support you require to get this working.

@bk138
Copy link
Member

bk138 commented Feb 23, 2020

It would be super nice if someone could tackle and sort out the remaining known limitations maxnet mentioned so we not merge in something half-baked :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ExtendedDesktopSize support?
4 participants