Switch to a seamless desktop

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Start the Xpra server when starting the container

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Start ssh daemon first and keep Xpra in the foreground

That way, if Xpra stops running, the container stops running, too.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Upgrade to saucy

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Avoid dpkg-divert hack

Apparently, it is no longer necessary now that we are starting dbus
correctly.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Adjust README

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Pick up all id_*.pub keys in shared/

Some people might want to connect to their Xpra instance from multiple
accounts; Best practices dictate that multiple accounts should have
multiple private ssh keys, so we allow that by installing all public
ssh keys dropped into shared/id_*.pub into the authorized_keys file.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Put the Xpra server into the background; open a root shell in foreground

Earlier, we tried to make things more convenient by starting the Xpra
server in the foreground so that quitting the last window in Xpra would
quit the container.

This was misguided, however, because Xpra does *not* quit when the last
window quits.

There was another problem we needed to solve somehow: due to our
reluctance to generate hard-to-remember passwords, we no longer could sudo
easily.

Both problems are addressed by opening an interactive root shell instead.
That way, we can -- if we want to -- add more settings via the console,
such as setting a password, or installing packages directly as root.

It is also a boon when debugging.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Also start syslog by default

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Give the container some time to start up

... apparently needed since we launch dbus and sshd before Xpra.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Add a script to attach to the Docker container running Xpra

This is helpful for debugging, but also to stop the container quickly.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Use Xpra's APT repository

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Install the GNOME desktop environment by default

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Write the unix socket into /shared/

That way, we can access it easier and with better performance than
by ssh'ing into the container.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Install socat for experimenting with unix sockets

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Switch from an ssh-based to a unix sockets-based method

Xpra has several modes how a client can connect to a server. The most
common is ssh because it provides very decent encryption without much
hassle between a client machine and a host machine.

However, in docker-desktop's scenario, the host machine is actually
running on the very same machine. So unix sockets are a much better
alternative because they provide security based on the file system,
and they are easier to set up (apart from having to start the Docker
container via sudo, this method does not require sudo because we
do not have to figure out which port the sshd is redirected to).

This also opens the door for "throw-away" containers, i.e. containers
whose sole purpose is to live as long as a given application is running
and after that be safely forgotten, with all its intermediate files.

Also, by making it very easy to have multiple containers, all running
an Xpra server inside, it is much easier to insulate applications,
or even different sessions of the same application, from one another.
Think e.g. surfing to a website whose advertisers read your Facebook
cookies.

These unix sockets can be accessed via ssh from a remote machine, too:

	REMOTE_SOCAT='socat - UNIX:docker-desktop/shared/docker-desktop-10'
	socat UNIX-LISTEN:$(hostname)-10 \
		EXEC:"ssh host-machine '$REMOTE_SOCAT'" &
	xpra --socket-dir=$(pwd) attach :10

In plain English: this uses a local and a remote socat, connected via ssh,
to allow a local Xpra to connect to the remote Docker container's Xpra.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
TEST: Try to fix gnome-terminal being all-black

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Wait a little longer until the Unix sockets have been created

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Warn very, very loudly when the user attempts to start without /shared/

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>