Features Download
From: Mike Gabriel <mike.gabriel <at> das-netzwerkteam.de>
Subject: Re: x2go on Android-dependencies
Newsgroups: gmane.linux.terminal-server.x2go.devel
Date: Saturday 21st September 2013 20:57:11 UTC (over 3 years ago)
Hi Lucian,

Nable has already contributed here and there as a reply to this mail.  
Also Reinhard pointed out that there indeed is an X-Server project for  
Android which is already in beta state.

I will inline go through your mail in detail below.

On Sa 21 Sep 2013 19:00:52 CEST Lucian Apetre wrote:

> I summed up what x2go needs to be ported on Android:

Thanks for investigating yourself already. That gives a good  
relaxation on my time budget. Deep thanks!

> nxproxy - an application that is needed to access remote desktop.
>   NX protocol makes it possible to run any graphical application on  
> any OS across any network.
>   Consists of 2 part a server side and a client side. 
>   For clients we have: Windows, Linux, MacOS, Solaris
>  official site: http://www.nomachine.com/download.php

For X2Go we have ,,NX (redistributed)'' [1, 2]. We chose to maintain a  
redistributed version of the NoMachine stuff, as we have several  
patches [3] applied on top of NoMachines original sources.

The NX mechanism is this:

   o X2Go session runs in nxagent (we renamed it to x2goagent)
   o nxagent is an X-Server, highly adapted to handling X11 protocol over
     connections (it is not X11 protocol anymore, it is NX protocol)
   o nxproxy runs on the client side
   o nxproxy understands NX protocol and translates it to X11 protocol

So, basically, you should test things first, to see if they are feasible:

   o ssh -X -> launch X11 applications via ssh with x11-forwarding on your
     Android device
   o nxproxy -> nxproxy: nxproxy can provide an X-Server like DISPLAY to
     applications. nxproxy does not understand the X11 protocol itself, but
     knows how to compress it and how to apply some caching magic to it.
     The nxproxy on the client side forwards the NX protocol traffic then
     the local (Android'ish) X-Server
   o x2goagent -> nxproxy: The x2goagent differs from other X-Servers. The
     NoMachine people found a way to reduce X11's round-trips [4] to a
     minimum. The nxproxy->nxproxy approach also reduces X11 traffic quite
     a lot, but with x2goagent->nxproxy things become really smooth.

> vcxrsv  - an application that is an X display server a set of  
> traditional sample X applications and tools, and a set of fonts
>   we also can use xming from what i see in the code.
>   i didn;t understand exactly what is the role of this x server on  
> the application, i didn't find any doc on this.
>   an x server for android:
>   https://play.google.com/store/apps/details?id=au.com.darkside.XServer&hl=en

Yes, you should start playing with that one!!!

> pulseaudio - an application used for sending application audio to  
> another device.
>              PulseAudio is designed for Linux systems. It has also
> been ported to and tested on Solaris, FreeBSD, NetBSD, MacOS X,  
> Windows 2000 and Windows XP.
>  pulse audio can be replaced with AudioFlinger that is the native  
> android audio system.
>  http://www.freedesktop.org/wiki/Software/PulseAudio/Ports/Android/

Cool! Did not know that.

> Unclear issues:
> 1. can we use the x2go without the nxproxy, the protocol to compress

Yes and no. I am working on a non-x2goagent approach for X2Go. I am  
still unclear if that then will be pure X11, nxproxy->nxproxy or  
TigerVNC based. The idea is to make the X2Go Server (and later on also  
the client) pluggable concerning its display rendering strategies.

But at the moment, get prepared to porting nxproxy to Android.

> If yes, I think that the porting can teoretically be made only using  
> the X server for Android found here:
>  https://play.google.com/store/apps/details?id=au.com.darkside.XServer&hl=en

The performance will be really really weak if you attempt using pure  
X11. That won't be much fun!!! It would also require changes in the  
X2Go Server code (which would not be a problem, if it became really  

> 2. the x server application is running on the server machine or the  
> client machine, or both?
> I notice that, for Win is running on the client side, is there a x  
> server also on the server side?

There are two X-Servers involved:

   1. client-side local X-Server: on Linux this is the local X.org, on
      we found that VcXsrv provides the best results. On Mac OS X we use

   2. x2goagent: with every X2Go session and instance of x2goagent is
      on the X2Go Server. The x2goagent can run in desktop mode or seamless
      application mode. In the Linux world it is very hard (if not
      to find a nested X-Server that provides both feature in one.

> If there is any documentation to specify the processes used in x2go  
> i will appreciate it.

Unfortuately, there is not. Best I can offer is the terminal session  
class [5] from Python X2Go. It should contain everything you need.

In addition to what has been written above. For making file transfer  
(folder sharing) available on Android you need an sftp-server on the  
Android device.

For further discussions on details may I invite you to join #x2go IRC  
channel on Freenode? Thanks!


[1] http://code.x2go.org/gitweb?p=nx-libs.git;a=summary
[2] http://code.x2go.org/releases/source/nx-libs/
[3] http://code.x2go.org/gitweb?p=nx-libs.git;a=tree;f=debian/patches
[4] http://lwn.net/Articles/390389/


mike gabriel, herweg 7, 24357 fleckeby
fon: +49 (1520) 1976 148

GnuPG Key ID 0x25771B31
mail: [email protected], http://das-netzwerkteam.de

CD: 25ms