<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Window-Manger on csicar</title><link>http://blog.csicar.de/tags/window-manger/</link><description>Recent content in Window-Manger on csicar</description><generator>Hugo -- 0.155.3</generator><language>en-us</language><lastBuildDate>Tue, 24 May 2016 12:29:00 +0100</lastBuildDate><atom:link href="http://blog.csicar.de/tags/window-manger/index.xml" rel="self" type="application/rss+xml"/><item><title>Running a window manager from inside a docker container</title><link>http://blog.csicar.de/posts/2016-05-24-docker-wm/</link><pubDate>Tue, 24 May 2016 12:29:00 +0100</pubDate><guid>http://blog.csicar.de/posts/2016-05-24-docker-wm/</guid><description>&lt;p&gt;&lt;img alt="mate desktop" loading="lazy" src="http://blog.csicar.de/assets/img/mate-desktop.png"&gt;&lt;/p&gt;
&lt;h1 id="tldr-version"&gt;TL;DR-Version:&lt;/h1&gt;
&lt;p&gt;run:
&lt;code&gt;$ sudo pacman -S xorg-server-xephyr&lt;/code&gt; or &lt;code&gt;$ sudo apt-get install xserver-xephyr &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;run: &lt;code&gt;$ Xephyr :1 -ac -br -screen 1024x768 -resizeable -reset -terminate &amp;amp;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;run:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ docker run -it -e DISPLAY&lt;span style="color:#f92672"&gt;=&lt;/span&gt;:1 --device /dev/snd -v /tmp/.X11-unix:/tmp/.X11-unix csicar/ubuntu-mate-desktop /usr/bin/mate-session&lt;span style="color:#e6db74"&gt;```&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Window-Managers inside a container
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;As show &lt;span style="color:#f92672"&gt;[&lt;/span&gt;here&lt;span style="color:#f92672"&gt;](&lt;/span&gt;http://fabiorehm.com/blog/2014/09/11/running-gui-apps-with-docker/&lt;span style="color:#f92672"&gt;)&lt;/span&gt; docker is not only useful &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; server applications, but can also be used &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; desktop applications.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Taking it a step further I wanted to run a window-manger from inside a docker container.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;There are basically &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; steps to it:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;1. Creating a virtual DISPLAY using a program like &lt;span style="color:#f92672"&gt;[&lt;/span&gt;Xephyr&lt;span style="color:#f92672"&gt;](&lt;/span&gt;https://www.freedesktop.org/wiki/Software/Xephyr/&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;2. giving the container access to the &lt;span style="color:#e6db74"&gt;`&lt;/span&gt;DISPLAY&lt;span style="color:#e6db74"&gt;`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;### Creating a windowed X-Server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;1. Installing Xephyr is pretty simple: Just &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt; &lt;span style="color:#e6db74"&gt;`&lt;/span&gt;sudo pacman -S xorg-server-xephyr&lt;span style="color:#e6db74"&gt;`&lt;/span&gt; or &lt;span style="color:#e6db74"&gt;`&lt;/span&gt;sudo apt-get install xserver-xephyr &lt;span style="color:#e6db74"&gt;`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;2. Now run &lt;span style="color:#e6db74"&gt;`&lt;/span&gt;Xephyr :1 -ac -br -screen 1024x768 -resizeable -reset -terminate&lt;span style="color:#e6db74"&gt;`&lt;/span&gt; to create a X-Server
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#e6db74"&gt;`&lt;/span&gt;:1&lt;span style="color:#e6db74"&gt;`&lt;/span&gt; is the display-id; this will need to be passed to what ever wants to access the display
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#e6db74"&gt;`&lt;/span&gt;-ac&lt;span style="color:#e6db74"&gt;`&lt;/span&gt; disables access control restrictions
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#e6db74"&gt;`&lt;/span&gt;-br&lt;span style="color:#e6db74"&gt;`&lt;/span&gt; creates a window with a black background
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#e6db74"&gt;`&lt;/span&gt;-screen 1024x768&lt;span style="color:#e6db74"&gt;`&lt;/span&gt; sets the default screen size
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#e6db74"&gt;`&lt;/span&gt;-resizeable&lt;span style="color:#e6db74"&gt;`&lt;/span&gt; makes the screen &lt;span style="color:#f92672"&gt;(&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; the guest&lt;span style="color:#f92672"&gt;)&lt;/span&gt; and the window &lt;span style="color:#f92672"&gt;(&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; the host&lt;span style="color:#f92672"&gt;)&lt;/span&gt; resizeable
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#e6db74"&gt;`&lt;/span&gt;-reset&lt;span style="color:#e6db74"&gt;`&lt;/span&gt; closes the host-window, when the guest exits the X-Server
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;### Giving the container access to the DISPLAY&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Just &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;`&lt;/span&gt;docker run -e DISPLAY&lt;span style="color:#f92672"&gt;=&lt;/span&gt;:1 -v /tmp/.X11-unix:/tmp/.X11-unix &lt;span style="color:#f92672"&gt;[&lt;/span&gt;container-id&lt;span style="color:#f92672"&gt;]&lt;/span&gt;&lt;span style="color:#e6db74"&gt;`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#e6db74"&gt;`&lt;/span&gt;-e DISPLAY&lt;span style="color:#f92672"&gt;=&lt;/span&gt;:1&lt;span style="color:#e6db74"&gt;`&lt;/span&gt; will pass the value &lt;span style="color:#e6db74"&gt;`&lt;/span&gt;:1&lt;span style="color:#e6db74"&gt;`&lt;/span&gt; as a environment variable &lt;span style="color:#e6db74"&gt;`&lt;/span&gt;DISPLAY&lt;span style="color:#e6db74"&gt;`&lt;/span&gt; through to the container
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#e6db74"&gt;`&lt;/span&gt;-v /tmp/.X11-unix:/tmp/.X11-unix&lt;span style="color:#e6db74"&gt;`&lt;/span&gt; will pass the file through to the container&lt;span style="color:#e6db74"&gt;`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;The rest just like you are used to with docker.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;### Conclusion&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#### Why?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;because you can. And maybe because you can test new configurations of your WM &lt;span style="color:#f92672"&gt;(&lt;/span&gt;like i3&lt;span style="color:#f92672"&gt;)&lt;/span&gt; without worrying about breaking your main system.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#### What makes it better than virtualbox?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I get a lot beter performance when using a wm in a container instead of a vm.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;### Dockerfile&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;https://github.com/csicar/docker-wm
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item></channel></rss>