I just joined the list and am thinking about doing some development work on TigerVNC.
Here's the context:
I'm developing a remote desktop extension for Big Blue Button, a video-conferencing system (see bigbluebutton.org
Basically, I'm embedding a remote desktop into a video conferencing system, primarily targeted at classroom use, so the question arises: "how do we move from sharing a desktop between two or three users to a classroom of 10-20 students?"
My answer is to provide each student with their own desktop, and the teacher gets a Zoom or Hollywood Squares type grid that, instead of showing a grid of videos, shows a grid of desktops. The teacher can interact with any desktop by clicking on it, and an escape sequence gets them back to the grid. The teacher also has the ability to screen share any one of the desktops to the entire class.
Creating the grid view is more difficult. I've thought of coding a custom VNC multiplexer, but I initially implemented this feature by running xvncviewers on an "extra" Xvnc server that the teacher connects to. I still like doing it this way, because you get all the nice features of X11, so it's easy to use Tk, for example, to put labels on the windows, and the FVWM window manager does a nice job of laying everything out.
So, I need to run a bunch of xvncviewers, laid out on a grid, and then throw in another xvncviewer (this one in full screen mode) when the teacher wants to connect to one of the desktops.
Right now, I'm using ssvncviewer to create the grid because it supports both scaling and UNIX domain sockets. I used to use ssvncviewer for the full screen function, but switched to tigervncviewer because it's X11 Selection handling is better. This allows cut-and-paste to work when you're connected to a server that has a full screen vnc viewer connected through to another server.
But I really need both functions in one program. The teacher might be connecting to a student desktop with a different display geometry, and I want scaling, not panning or a lot of blank space around the edges, and cut-and-paste needs to work, too.
So it looks like I need to either add scaling to tigervncviewer, or fix the selection handling on ssvncviewer. Since ssvnc hasn't been updated since 2011 or 2013, I'm leaning towards adding scaling to tigervncviewer.
I see that's an open issue here: #274.
Also, the whole nested vnc-within-vnc setup (as opposed to a custom vnc multiplexer) really makes the most sense if the code is fairly optimized to handle the case where a X11 vnc viewer is full screen on an Xvnc desktop. I'm thinking that optimizing the code for this case makes more sense than a custom multiplexer, because you get (hopefully) nearly the same performance along with all the nice X11 feature mentioned above.
By the way, to build TigerVNC 1.11 on Ubuntu 18 (and Big Blue Button is closely tied to Ubuntu 18), I used the Debian package and ignored the build dependency on xorg-server-source (>= 1.20) and used 1.19.6 instead. It built. Any ideas what problems I might run into because of that?
Thanks for any feedback you might offer.