The goal is to jump forward with this fate: https://fate.suse.com/319319

Xvnc can be configured in various way, but our current configuration that is enabled from YaST is quite simple - every VNC connection gets new session spawned, nobody else can connect to it and when the client disconnects, the session is ended.

It would be good to have possibility to configure the session from inside - make it permanent, set password and enable sharing. Other clients can choose to reconnect to existing session or create new one.

Looking for mad skills in:

Nothing? Add some keywords!

This project is part of:

Hack Week 13


Comments

  • michalsrb
    over 3 years ago by michalsrb | Reply

    Disclaimer: Not all of this was done during this hackweek. :-)

    Status

    The setup consist of 4 components: slightly modified tigervnc, vncmanager, greeter and config

    • Tigervnc is used for all the heavy work, authentication, running X session, forwarding VNC inputs to applications, encoding the picture etc. It is normal upstream tigervnc with two changes on top: 1) Some extra options can be changed in run-time. 2) Client side of their X11 VNC extension into library was exported to library, so other programs can use it to configure running Xvnc.)
    • Vncmanager works as VNC "proxy", it receives VNC connections, spawns Xvnc and greeter instances and switches clients between sessions. It understands VNC protocol and bunch of its extensions to handle the switching, but most of the time it only forwards messages back and forth.
    • Vncmanager_greeter is graphical application that shows fullscreen greeter with list of running sessions and button to start new session. It can ask for username and password if they are required for a session. It communicates with vncmanager using simple text protocol and could be replaced easily.
    • Vncmanager_config is graphical application that gets started inside a session if the session runs inside VNC. It can be used to configure the session from within (e.g. enable sharing, set password). It does the same things as vncconfig utility, just in more user-friendly way.

    Demo

    • Install xorg-x11-Xvnc, vncmanager, vncmanagergreeter and vncmanagerconfig from homeadd-emojifate319319.
    • Enable systemd service vncmanager.
    • Enable XDMCP in your display manager (enabled if you use VNC configured by YaST).
    • Connect your VNC viewer to your machine at display :0 (port 5900).
    • If everything works, you should see VNC greeter with the option to create new session. When inside some session, you should see red icon in your tray (placeholder) which launches the VNC session configuration.

    Missing/Problems

    • TLS is not yet working between vncmanager and VNC client.
    • Tight encoding sometimes doesn't get correctly reset when switching sessions leading rendering errors.
    • Greeter and config should be rewritten to Qt5 and their UI should be polished.

Similar Projects

This project is one of its kind!