User Tools

Site Tools


New features for X2Go

Below you find a list of new code projects that we are interested in, but no one has started working on them, yet.

X2Go Client

X2Go Client / X2Go Plugin on Chromebooks

  • As Chromebooks are a kind “Thin Client” “look-alikes”, it would be a good idea to be able to access Linux machines via X2Go.
  • As it is only possible to install applications on chromeOS (running on an original chromebook) via the Googles webstore of Google Chrome, X2Go Client needs to packaged for Googles webstore. Preferences and maybe session files should be altered and committed, so that users can sync them with their Google account.

Better sound support, Part 1

  • Code has been developed to clean up how pulseaudio is called on all three platforms
  • This brings Pulseaudio sound to Mac OS X, which currently isn't available in the standard release
  • This also contains the option to make sound unidirectional, so you can mute the microphone directly in X2GoClient
  • The code needs to be rebased against the current mainline X2Go client
  • Status update:
    • Mihai (ionic) is working on this as time permits,
    • sponsored by an anonymous donor via BAUR-ITCS.
    • Additional donations always welcome, though, as it turned out to be way more work than expected.
    • no ETA yet

Android Client

X2Go Server

Access X2Go Server Sessions via HTML5 Client

  • It's difficult for the X2Go Project to offer clients on a number of mobile devices lacking an X.Org server and with rules that make it very difficult to submit GPL'ed software to their ecosystems.
  • An HTML5 Client could help to build native apps and render sessions on a HTML5 Canvas
  • In the first step, it would be possible to use existing vnc↔canvas proxies like noVNC or Guacamole.

Better sound support, Part 2

  • While X data is compressed depending on the settings chosen in the client (available bandwidth and whatnot), no such compression takes place for the audio stream
  • Changing/fixing this may mean writing a wrapper around/a plugin to pulseaudio, or ditching PulseAudio altogether for some other sound system (which needs to be available on Windows, Mac OS X and Linux)


Rewrite of NX Agent/X2Go Agent

  • Currently, NX Agent/X2Go Agent is based on old X-Server code
  • This needs to be rewritten so it can be built against current
  • Care needs to be taken that there are no unresolvable licensing issues
  • HUGE Task
  • estimated cost at regular hourly rates of an average coder: 50.000 EUR
  • Crowdfunding planned, volunteers (both coders and funders) welcome
  • Status update:

Upgrade GLX extension in NX (redistributed)

  • With Ubuntu 12.10, Canonical has dropped Unity-2d support
  • Starting with Ubuntu 12.10, Unity requires a modern Xserver with GLX v8 included
  • The weakness of X2Go definitely is the NX Xserver used for display server session on the client
  • This coding project would be a start to gradually update the Xserver extensions shipped with NX
  • During this project you will get a deep insight into Xserver code. You need good C and Cplusplus skills to start this code project. You have to be a magician with C coding debugging tools!!!
  • Status update:
    • This will hopefully be fixed in “Rewrite of NX Agent/X2Go Agent” as well

Desktop Bindings

X2Go Desktop Applet

  • Status quo: for several desktop the X2Go project offers a desktop integration (=binding) package
  • One that can be used as a template and reference is the package: plasma-widget-x2go. It provides a Plasma widget that can dock into KDE4's panel and this widget then gives you control over your X2Go session
  • Unfortunately, the Plasma X2Go widget is for KDE4 only and of no use to users GNOME, Unity, XFCE, etc.
  • The idea: create a desktop independent applet that docks into the systems systray (or into the appindicator area). This applet then gives you control over your X2Go session from inside the X2Go session: unmount client-side folder, manage print job, suspend X2Go session, grant permission for desktop sharing, etc.
  • Please use the tools plasma-widget-x2go and x2godesktopsharing as reference and as a start point
  • Implementation shall be in C++ using Qt4.

X2Go Session Broker

X2Go Session Broker WebGUI Service

  • Similar to Canonical's UCCS Service X2Go admins may want to provide a company-wide site where users of the infrastructure shall be able to configure their favourite (X2Go, RDP) servers in the company's network
  • This will need an extension of the X2Go Session Broker:
    • Add a session profile storage (on a per-user basis) based on e.g. MongoDB
    • Make these session profiles configurable through a nice WebGUI
  • The current public implementation of the X2Go Session Broker is written in Python. The difficulty is medium. Interests in Web2.0 development strategies is of advantage.

JSON based protocol for communication between X2Go Client and X2Go Session Broker

  • JSON is a very appropriate data format when two applications what to exchange data objects via text base communication streams
  • Currently, X2Go Client and X2Go Session Broker currently communicate over a plain text base communication protocol. This protocol is not very tolerant about errors
  • To make the client↔broker communication more robust, this shall be changed to X2Go Client
  • However, transparent backward compatibility must be granted at the same time: new X2Go Clients must continue to be able to speak the older broker protocol, new X2Go Session Brokers must be able to understand old X2Go Clients
  • Good knowledge of Qt4 and Cplusplus are required for this task

PyHoca / Python X2Go

PyHoca-PubAppDaemon - transparent X2Go Published Applications Integration into local Desktops

  • This idea focuses on X2Go integration into Unity desktops (for providing hybrid fat/thin clients)
    • All multimedia intensive applications are run locally (using server-side dot files in a server-side home directory)
    • Anything else runs on an X2Go terminal server
    • The desktop shell's task is to merge both application types transparently with another
  • X2Go offers a feature called X2Go Published Applications
  • The feature allows starting of X2Go sessions of the type PUBLISHED on remote application servers. This session merely returns an application menu tree (and a slumbering x2goagent). Currently this menu tree is rendered by X2Go Client / PyHoca-GUI as a submenu of their systray icon. From this menu tree you then can select individual applications to get launched within your local desktop shell
  • However, how would it be if one could smoothly merge the remote menu tree into the local desktops application menu?
  • Or even more, drag'n'drop icons from the local desktop's menu tree onto the local desktop?
  • Or even better, dock those applications to Unity's Launcher?
  • An approach to realize this would be a split up of PyHoca-GUI: PyHoca-PubAppTrigger and PyHoca-PubAppDaemon.
    • On remote login (LightDM) a guest (Ubuntu) session gets launched and in the background PyHoca-PubAppDaemon waits for commands via a Unix domain socket file
    • PyHoca-PubAppDaemon can be queried for server-side provided applications (a list of .desktop files plus base64 encoded icons)
    • The returned menu items are merged into the local application menu
    • A click on one of those (local) .desktop files (executing a published application) will launch PyHoca-PubAppTrigger. This trigger talks to the PyHoca-PubAppDaemon and initiates the launch of the requested server-side application (via the X2Go Published Applications feature)

The task is rather complex and demands quite a bit of understanding of the specifications. The whole project will be in Python. A draft for the login process is already available on X2Go Git (projects: lightdm-remote-login-x2go and libpam-x2go).

wiki/development/new-feature-brainstorming.txt · Last modified: 2016/05/02 10:32 by stefanbaur