mate desktop

TL;DR-Version:

run: $ sudo pacman -S xorg-server-xephyr or $ sudo apt-get install xserver-xephyr

run: $ Xephyr :1 -ac -br -screen 1024x768 -resizeable -reset -terminate &

run:

$ docker run -it -e DISPLAY=:1 --device /dev/snd -v /tmp/.X11-unix:/tmp/.X11-unix  csicar/ubuntu-mate-desktop /usr/bin/mate-session```

Window-Managers inside a container
---


As show [here](http://fabiorehm.com/blog/2014/09/11/running-gui-apps-with-docker/) docker is not only useful for server applications, but can also be used for desktop applications.

Taking it a step further I wanted to run a window-manger from inside a docker container.

There are basically 2 steps to it:
1. Creating a virtual DISPLAY using a program like [Xephyr](https://www.freedesktop.org/wiki/Software/Xephyr/)
2. giving the container access to the `DISPLAY`

### Creating a windowed X-Server


1. Installing Xephyr is pretty simple: Just do `sudo pacman -S xorg-server-xephyr` or `sudo apt-get install xserver-xephyr `
2. Now run `Xephyr :1 -ac -br -screen 1024x768 -resizeable -reset -terminate` to create a X-Server
  - `:1` is the display-id; this will need to be passed to what ever wants to access the display
  - `-ac` disables access control restrictions
  - `-br` creates a window with a black background
  - `-screen 1024x768` sets the default screen size
  - `-resizeable` makes the screen (for the guest) and the window (for the host) resizeable
  - `-reset` closes the host-window, when the guest exits the X-Server


### Giving the container access to the DISPLAY


Just do: `docker run -e DISPLAY=:1 -v /tmp/.X11-unix:/tmp/.X11-unix [container-id]`
- `-e DISPLAY=:1` will pass the value `:1` as a environment variable `DISPLAY` through to the container
- `-v /tmp/.X11-unix:/tmp/.X11-unix` will pass the file through to the container`

The rest just like you are used to with docker.



### Conclusion


#### Why?
because you can. And maybe because you can test new configurations of your WM (like i3) without worrying about breaking your main system.

#### What makes it better than virtualbox?
I get a lot beter performance when using a wm in a container instead of a vm.

### Dockerfile
https://github.com/csicar/docker-wm