Screensharing from Ubuntu in Adobe Connect 9 Meetings

My school maintains an Adobe Connect server to support on-line meetings, and the research group I’m part of uses it frequently for weekly meetings.  Much of the research we do requires us to modify and compile the Android source code, which can only be done in Linux or MacOS.  I’m using Ubuntu 14.04 LTS as of this writing.

When I started using Connect, the school’s server was Connect 8.x.  For us Linux users, everything was fine since Adobe provides add-ins for Windows, Mac and Linux that are fully compatible with Connect 8.x.  In Connect 8.x, Linux users enjoy full functionality, including screen sharing.

Unfortunately, Linux users aren’t so lucky with Connect 9.x.  While attending meetings works fine, it seems that Adobe will not be providing compatible Linux add-ins, which makes directly sharing the Linux screen impossible.  For our group, this was somewhat of a show-stopper, since most of  the content we wanted to share in meetings is from our Linux development environment.

We tried a number of alternatives, including Google Hangouts.  However, there are times when it was necessary to use the “in-house” meeting server.  For this reason, we started looking for other workarounds.

Our initial attempt was based on this blog that uses TightVNC to “remotely” display a copy of the Ubuntu desktop in a Windows virtual machine running on the Ubuntu host.  While this worked OK, it was a little laggy and also created an annoying infinity mirror effect (which surely had something to do with the laggy performance).  However, the general approach of making the Ubuntu desktop/windows available to a Windows machine that had add-in compatibility seemed like a good workaround.

After a few different trials, we settled on our current approach which uses Cygwin/X.  The idea is the same, but it allows much finer control over what gets shared from Connect.  Here’s how we set it up:

In Ubuntu:

  1. Install VirtualBox.
  2. Install  openssh-server (sudo apt-get install openssh-server)
  3. Download Droid@Screen jar file (only necessary if you need to cast the screen from an actual USB-connected device).

In VirtualBox:

  1. Install Windows (I am using Windows 8.1).
  2. Set up two network adapters: one as host-only and the other as NAT.

In the Windows virtual machine:

  1. Install Cygwin/X (select the ‘xinit’ package from the ‘X11’ category).
  2. Add openssh package to Cygwin (select the ‘openssh’ package from the ‘Net’ category).
  3. Start Xwin Server (it should be on your Start menu now in the Cygwin-X program group). An xterm should pop up on the Windows desktop.
  4. In Cygwin xterm: ssh -YC <username>@192.168.56.1 (i.e., ssh to your Ubuntu host, replace username & IP address as needed; IP should be the one that the VM picked up from the host-only adapter you configured in VirtualBox).
  5. Start whatever gnome windows you need from the Ubuntu shell.  They will pop up on Windows desktop as X Windows. I’ve had good luck with gedit, Android Studio, gnome-terminal, and Droid@Screen.  Anything that displays on your gnome desktop should work fine.
  6. Use Internet Explorer to log into Connect meeting.  Install plug-in if necessary.  I suggest IE because there are weird bugs with the plugin when used in Chrome/FF.  If you’re willing to do some troubleshooting, you may be able to get these to work.

In Connect:

  1. Push Share My Desktop.
  2. Using the tabs on the Start Screen Sharing window, you can share:
    1. Desktop: this will share any Windows programs as well as the xterm and any Ubuntu windows that you have started up.  Sharing the entire desktop is useful if you’re using Windows for PowerPoint and the XWin for your Ubuntu windows simultaneously.
    2. Applications: This gives you a little finer control, but the X Window session is treated as one item, xwin.exe.  If you share xwin.exe, any and all of the windows that are part of the X desktop will be shared.  One thing to remember is that if you put a Windows window on top of any of the X windows, the portion covered will be hashed out for the folks viewing the share.
    3. Windows: This gives you the finest control where you can pick and choose among any combination of Windows windows and X windows to share.  Again, placing any non-shared window on top of a shared window will cause the covered portion to be hashed out for those viewing.

To share Android screen:

  1. Connect device via USB. Make sure debugging is turned on.
  2. From the Windows-to-Ubuntu shell, launch Droid@Screen.  Device screen and control window will appear on the Windows desktop as an X Window.  Since Droid@Screen is Java .jar file, it can also run directly in Windows.  You’ll need to install at least the stand-alone SDK tools with platform-tools in Windows, but it might improve sharing performance.

And that’s about it.  I know there’s ways to improve this setup, so please post your suggestions.