<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">

<channel>
	<title>Martin&#039;s Blog</title>
	<atom:link href="http://blog.martin-graesslin.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.martin-graesslin.com/blog</link>
	<description>From the land of wobbly windows</description>
	<lastBuildDate>Fri, 17 May 2013 06:47:47 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/de/</creativeCommons:license>		<item>
		<title>KWin running in Weston</title>
		<link>http://blog.martin-graesslin.com/blog/2013/05/kwin-running-in-weston/</link>
		<comments>http://blog.martin-graesslin.com/blog/2013/05/kwin-running-in-weston/#comments</comments>
		<pubDate>Fri, 17 May 2013 06:47:47 +0000</pubDate>
		<dc:creator>Martin Gräßlin</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[planetkde]]></category>
		<category><![CDATA[KWin]]></category>
		<category><![CDATA[Wayland]]></category>
		<category><![CDATA[Weston]]></category>

		<guid isPermaLink="false">http://blog.martin-graesslin.com/blog/?p=1208</guid>
		<description><![CDATA[This week I decided to do some research for the Wayland porting of the KDE Plasma workspaces. One of the features we will need in future is a Wayland session compositor which runs nested on a Wayland system compositor. Of &#8230; <a href="http://blog.martin-graesslin.com/blog/2013/05/kwin-running-in-weston/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>This week I decided to do some research for the Wayland porting of the KDE Plasma workspaces. One of the features we will need in future is a Wayland session compositor which runs nested on a Wayland system compositor. Of course one could think of setups without a system compositor, but overall I think that a nested compositor simplifies the setup and allows to have all the low level technologies in one place without duplication in all the various compositors. +1 for working together.</p>
<p>After three days of work I already have something to demo (<a href="http://www.youtube.com/watch?v=9_uRUIctGd0">video on youtube</a>):<br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/9_uRUIctGd0" frameborder="0" allowfullscreen></iframe></p>
<p>Sorry for the bad audio. I&#8217;ll just explain what one can see. The video starts with the normal X-Server. After that it switches to a VT and we start Weston there. On Weston I&#8217;m starting KWin with some environment variables set to pick the correct libraries and force KWin into Wayland mode. KWin creates a connection to Wayland, creates a Wayland surface and uses it for OpenGL output. All the windows from the running X Server are rendered into this surface just as if it were a normal X11 output.</p>
<p>KWin also gets input from Wayland and passes it to the X Server. That&#8217;s the reason why we can see mouse interaction and working keyboard.</p>
<h1>How it works</h1>
<h2>The OpenGL backend</h2>
<p>KWin supports multiple backends for providing an OpenGL context and doing the texture from pixmap operation. At the moment we have an GLX and an EGL backend. Both create the OpenGL context on the XComposite overlay window and provide the texture from pixmap in the GLX case through the <a href="http://www.opengl.org/registry/specs/EXT/texture_from_pixmap.txt">GLX_EXT_TEXTURE_FROM_PIXMAP extension</a> and in the EGL case through the the <a href="http://www.khronos.org/registry/egl/extensions/KHR/EGL_KHR_image_pixmap.txt">EGL_KHR_image_pixmap extension</a>.</p>
<p>A new backend is added which creates the OpenGL context on a Wayland surface. The backend started as a fork of the existing EGL backend with the X code stripped out. What&#8217;s a little bit tricky is getting the texture from pixmap working. The extension used in the normal EGL on X11 backend is not available. The proper solution would be a setup with XWayland, but that&#8217;s still too early as KWin does not yet support Wayland clients.</p>
<p>The solution I came up with is inspired by a fallback mechanism in KWin from the time when GLX_EXT_TEXTURE_FROM_PIXMAP was not guaranteed to be around: XShm to copy the pixmap content into an OpenGL texture. Not a nice solution but it works.</p>
<h2>Input handling</h2>
<p>Input is currently also a rather hackish solution until we have XWayland up and running. We just take all input events and forward them to the XServer with the XTest extension to inject fake events. It&#8217;s a huge hack and one can see how old X is there and how limited. I was rather surprised that it works at all. At the time of this writing the code supports keyboard events and the left, middle and right mouse button. Wheel events are tricky as X uses mouse buttons for them and for more mouse buttons I have problems with mapping them as I&#8217;m lacking a multi button mouse.</p>
<p>We are also not able to back sync the mouse position from X to Wayland. As far as I understood the Wayland protocol there is nothing like XWarpPointer, so if something in X warps the pointer we have a mismatch. I agree that warping is evil, but we use it in KWin for activating the screen edges <img src='http://blog.martin-graesslin.com/blog/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<h1>Next Steps</h1>
<h2>Cursor</h2>
<p>What is to do next is to get the changes to the cursor in X11 and set the cursor on the Wayland surface. That should not be really difficult as the XFixes extension provides everything one would need for that.</p>
<h2>Thread</h2>
<p>A rather huge limitation at the moment is that the connection to the Wayland display is hold in the main thread. We cannot block there, so we only get events when we actively check for them. This is currently during repainting the screen. So if you wondered why the ShowFPS effect in the video is turned on: it&#8217;s to force repaints and to keep the connection alive. This connection needs to go into a thread so that we can block there.</p>
<h2>Buffer age</h2>
<p>Currently the code forces as to do full-screen repaints. The two solutions we have for non-fullscreen repaints in the EGL backend do not work in the EGL on Wayland backend. The Wayland demo code shows that the <a href="http://www.khronos.org/registry/egl/extensions/EXT/EGL_EXT_buffer_age.txt">EGL_EXT_buffer_age</a> implementation could be used. We wanted to have support for that one anyway in KWin.</p>
<h1>Giving it a try</h1>
<h2>Building from source</h2>
<p>I just pushed the code into branch &#8220;kwin/wayland-egl-backend&#8221; on my clone <a href="http://commits.kde.org/clones/kde-workspace/graesslin/kde-workspace/b154226b9687c9aa1039c1008aec5b51db0d3b58">kde:clones/kde-workspace/graesslin/kde-workspace</a>. Be aware that I intend to force push to this branch.</p>
<p>To build you need to have the Wayland libraries around. The CMake module tries to find it through package kit. Watch the output of CMake, Wayland is only an optional dependency! If you build Wayland and Weston from source, please follow the <a href="http://wayland.freedesktop.org/building.html">instructions</a>. You might also need to build Mesa from source.</p>
<h2>How to start</h2>
<p>Starting is rather simple. Just have an Xserver running somewhere, start Weston on a VT (don&#8217;t do nested on X, you would only get a black screen once KWin started) and open a terminal. Setup your environment variables to be able to start KWin and then start KWin in the following way:</p>
<pre class="brush: bash; gutter: false; first-line: 1; highlight: []; html-script: false">
DISPLAY=:0 KWIN_DIRECT_GL=1 KWIN_OPENGL_INTERFACE=egl_wayland kwin --replace &amp;
</pre>
<p>KWIN_DIRECT_GL makes KWin skip the OpenGL Test application which is currently only supporting GLX and seems to fail if one is on a different VT. KWIN_OPENGL_INTERFACE tells KWin which backend to use. So by using &#8220;egl_wayland&#8221; one forces KWin to use the Wayland backend. In future we will probably detect whether the Wayland display environment variable is defined and just pick it directly (though that is dangerous in case of nested Weston on X).</p>
<h2>When will it be available in a release</h2>
<p>I want to get this work into 4.11 as an experimental feature for multiple reasons. I wanted to have a build dependency to Wayland in 4.11 for quite some time. So that&#8217;s a nice excuse. Unfortunately feature freeze is approaching.</p>
<p>Of course I want to give users something to play with. We have talked about Wayland for such a long time and there is nothing to really see that we are walking the way. Last but not least that might be a rather important solution for Plasma Active as that hopefully allows to run on hardware where we currently would not get OpenGL. With libhybris we should be able to get KWin working with OpenGL and being an X11 compositor even if the driver doesn&#8217;t support X11. Though I have not tested this case yet and have no devices to play with. But I know a few people in the community who might be interested to play with that.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.martin-graesslin.com/blog/2013/05/kwin-running-in-weston/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Mir in Kubuntu</title>
		<link>http://blog.martin-graesslin.com/blog/2013/05/mir-in-kubuntu/</link>
		<comments>http://blog.martin-graesslin.com/blog/2013/05/mir-in-kubuntu/#comments</comments>
		<pubDate>Sun, 12 May 2013 08:37:45 +0000</pubDate>
		<dc:creator>Martin Gräßlin</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[planetkde]]></category>
		<category><![CDATA[Kubuntu]]></category>
		<category><![CDATA[KWin]]></category>
		<category><![CDATA[Mir]]></category>
		<category><![CDATA[Wayland]]></category>

		<guid isPermaLink="false">http://blog.martin-graesslin.com/blog/?p=1201</guid>
		<description><![CDATA[As you might have seen in Jonathan&#8217;s blog post we discussed Mir in Kubuntu at the &#8220;Mataro Sessions II&#8221;. It&#8217;s a topic I would have preferred to not have to discuss at all. But the dynamics in the free software &#8230; <a href="http://blog.martin-graesslin.com/blog/2013/05/mir-in-kubuntu/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>As you might have seen in <a href="http://blogs.kde.org/2013/05/08/notes-breakout-sessions-mataro-sessions-ii">Jonathan&#8217;s blog post</a> we discussed Mir in Kubuntu at the &#8220;Mataro Sessions II&#8221;. It&#8217;s a topic I would have preferred to not have to discuss at all. But the dynamics in the free software world force us to discuss it and obviously our downstream needs to know why we as an upstream do not consider Mir adoption as a valid option.</p>
<p>This highlights a huge problem Canonical created with Mir. I cannot just say &#8220;Canonical sucks&#8221;[1] to discard Mir as an option, I have to provide proper technical arguments why we won&#8217;t integrate Mir. I have to invest time to investigate the differences, advantages and disadvantages. As I have those arguments, I thought it might be a good idea to share them in a blog post.</p>
<p>The discussion started during a presentation about X11 and Wayland to my fellow team mates at Blue Systems. I decided to first explain X11 as I think one cannot understand the needs for Wayland without understanding X11. I did not intend to discuss Mir at all, but somehow the discussion drifted into the direction and the valid questions were raised about what are the differences and advantages of Mir or Wayland. What followed was kind of a rant about Ubuntu and Canonical [2]. So later the week we discussed &#8220;Mir in Kubuntu&#8221; in more detail to try to find answers to the many questions this raises for our downstream.</p>
<h1>Introduction</h1>
<h2>Frustration and lost Motivation</h2>
<p>Before I go into more detail I want to make one thing clear: Canonical is totally allowed to develop whatever they want. I&#8217;m totally fine with this and don&#8217;t care whether they develop another display server, an own os kernel or yet another desktop shell. I couldn&#8217;t care less. It&#8217;s Canonical/Mark&#8217;s money and he can invest it in any way he considers as useful. I wouldn&#8217;t even care if it would be proprietary software, that&#8217;s all fine.</p>
<p>What is not fine is causing a major disruption in the free software ecosystem by giving false technical arguments and doing bold statements about software Canonical does not contribute to. This is not acceptable. This was very frustrating and destroyed lots of trust I had in Canonical. It will be difficult to rebuild this trust. Canonical can be glad that it is the free software world and not the normal corporate world. There were quite some statements which could have raised the legal department in the normal corporate world[3]. It also cost lots of motivation at least on my side and I even questioned whether it&#8217;s still worth to be a member of the free software ecosystem. Instead of working together we now have a situation where members of the ecosystem become a competitor and which badmouth part of the software stack. A very frustrating situation.</p>
<p>There certainly are valid reasons for developing Mir which also make sense. Unfortunately they have not been presented so far. I&#8217;m quite sure that I know the reasons and if they would have been said straight away it would have been for me and other projects probably much easier. It would have taken away the frustration which the announcement caused and we would not need to discuss it at all, because those question marks would not exist. But apparently Canonical decided to give false technical arguments over the real ones.</p>
<h2>Not ready yet</h2>
<p>At the moment Mir is not there yet, this is important to remember. With the announcement we basically had four options on how to handle the situation.</p>
<ol>
<li>Continue with the Wayland plan and ignore Mir</li>
<li>Switch to Mir and ignore Wayland</li>
<li>Support Mir and Wayland</li>
<li>Delay decision until Mir is ready</li>
</ol>
<p>If I map our time line for Plasma Workspaces 2 against the time line of Mir I see no overlap. We want to support Wayland before Mir is ready. So delaying the decision would be a rather bad idea. It would just throw us back. This also means that option 2 is not valid especially as we would need to delay until Mir is ready for this to happen. So the only valid options are supporting both Mir and Wayland or only Wayland. At the moment the code is not ready yet to properly decide whether supporting Mir in addition to Wayland is a valid approach or not. Last time I checked the source base I hit a few stubs and then obviously stopped looking at the code as it&#8217;s not worth the effort yet. So we have to evaluate on the knowledge we already have and that doesn&#8217;t look good on the Mir side.</p>
<h1>Wayland vs Mir</h1>
<h2>Possible Advantages of Mir over Wayland</h2>
<p>The differences between Mir and Wayland are rather minimal. One of the differences is that Mir uses <a href="http://blog.cooperteam.net/2013/03/server-allocated-buffers-in-mir.html">server allocated buffers</a> while Wayland uses client side buffer allocation. I cannot judge whether this is an advantage or disadvantage. But I trust Kristian and the Wayland team more on that topic.</p>
<p>Another difference is that Mir uses <a href="http://en.wikipedia.org/wiki/Test-driven_development">test-driven development</a>. To me development methodology is not a technical argument. I rather use a working system without unit tests than a system with unit tests that doesn&#8217;t work [4]. Also KWin does not use TDD. If I would consider TDD superior I would have to question my own development methodology.</p>
<p>But that&#8217;s it. That are the differences I found so far which could count as an advantage for Mir. But of course there is the advantage that Mir is going to be awesome. For the disadvantages I will spend a complete section on each point.</p>
<h2>Distro specific</h2>
<p>So far Mir is a one-distribution solution. So far no other distribution has shown any interest in packaging Mir even if it would become a working solution. Unfortunately I don&#8217;t have the ability to see into the future, but I can use the past and the present to get ideas for the future. The past tells me that there are other Canonical specific solutions which are not available in other distributions. I do not know of any distribution which packages Unity and from all I have heard it&#8217;s even impossible to package Unity on non-Ubuntu distributions. Given that it is quite likely that Mir will go the same road. It&#8217;s designed as a solution for Unity and if distros don&#8217;t package Unity there is no need to package Mir.</p>
<p>This has quite some influence on a possible adoption. I do not know of any kde-workspace developer using (K)Ubuntu. I do not see how anyone would work on it or how we should be able to review code or even maintain code. It would mean all the adoption would have to go into ifdef sections nobody compiles and nobody runs. This is the best way to ensure that it starts to bit-rot. Even more our CI system runs on openSUSE so not even the CI would be able to detect breakage. Of course a downstream like Kubuntu could develop the adoption and carry it as a patch on top of upstream, but I would highly recommend them to not do this as KWin&#8217;s source code churn is too high. Also we all agree that downstream patches are evil and we would no longer be able to help in any way downstream&#8217;s user from a support perspective.</p>
<h2>Architecture</h2>
<p>Mir&#8217;s architecture is centered around Unity. It is difficult to really understand the architecture of Mir as the specification is so full of buzz-words that I don&#8217;t understand it [5]. From all I can see and understand Unity Next is a combination of window manager and desktop shell implemented on top of Mir. How exactly this is going to look like I do not know. Anyway it does not fit our design of having desktop shell and window manager separated and we do not know whether Mir would support that. We also do not know whether Mir would allow any other desktop shell except Unity Next, given that this is the main target. Wayland on the other hand is designed to have more than one compositor implementations. Using KWin as a session compositor is an <a href="http://wayland.freedesktop.org/docs/html/sect-Compositors-Session-Compositor.html">example in the spec</a>.</p>
<h2>License</h2>
<p><a href="http://wayland.freedesktop.org/faq.html#heading_toc_j_1">Wayland</a> is licensed like X under the <a href="http://en.wikipedia.org/wiki/MIT_license">MIT license</a>, which served us well for a display server. I think this is a very good choice and I am glad that the Wayland developers decided for this license. <a href="http://unity.ubuntu.com/mir/md__r_e_a_d_m_e.html">Mir</a> is licensed under <a href="http://en.wikipedia.org/wiki/GPLv3#Version_3">GPLv3-only</a> with <a href="http://www.canonical.com/contributors">CLA</a>. I think this is very unsuited for such a part of the stack and would render quite a risk for usage in KDE Plasma. KWin (and most KDE software) is GPLv2-or-later, this would no longer be possible, it would turn our code into GPLv3-only as KWin (or any other software which would depend on mir-server) would be a derived work of Mir. I do not consider GPLv3-only software as a possible dependency of any core part of our application stack. It renders a serious threat for the future in case of a GPLv4 which is not compatible with GPLv3. I also dislike the CLA [6]. So from a licensing perspective Mir is hardly acceptable.</p>
<h2>Unity Specific/No Protocol</h2>
<p>One of the most important aspects from Wayland for us is the ability to extend the protocol. This has already been a quite important feature in X and we are using our own extensions over ICCCM and EWMH to implement additional functionality. Of course our workspace has own ideas and it is important for us to be able to &#8220;standardize&#8221; those and also make them available to others if they are interested. This is possible thanks to protocol extensions.<br />
Mir doesn&#8217;t have a real protocol. The &#8220;inner core&#8221; is described as &#8220;protocol-agnostic&#8221;. This renders a problem to us if we would want to use it. Our architecture is different (as described above) and we need a protocol between the desktop shell and the compositor. If Mir doesn&#8217;t provide that we would need to use our own protocol. And that already exists, it is called &#8220;Wayland&#8221;. So even if we would support Mir, we would need the Wayland protocol?!? That doesn&#8217;t make any sense to me. If we need to run Wayland on top of Mir just to get the features we need, why should we run Mir at all?</p>
<p>But it gets worse, the protocol between Mir server and Mir clients is defined as not being stable. In fact it&#8217;s promised that it will <a href="http://blog.cooperteam.net/2013/03/artistic-differences.html">break</a>. That&#8217;s a huge problem, I would even call it a showstopper. For Canonical that&#8217;s fine &#8211; they control the complete stack and can just adjust all bits using the protocol like QMir.</p>
<p>For us this looks quite different. Given that the protocol may change any time and given that the whole thing is developed for the needs of Unity we have to expect that the server libraries are not binary compatible or that old version of the server libraries cannot talk with the latest client libraries. We would constantly have to develop against an unstable and breaking base. I know that this sounds overly pessimistic but I know of one case where a change got introduced in a Canonical protocol late in the release cycle completely breaking an application in Kubuntu which wanted to use the protocol. Given this experience I would not trust that the protocol doesn&#8217;t change one day before the release meaning that Kubuntu cannot ship.</p>
<p>This is not awesome, it&#8217;s awful. It means KWin will not work just fine on Mir.</p>
<p>I hope this shows that using Mir inside the KDE Plasma workspaces is not an option. There are no advantages which would turn Mir into a better solution than Wayland and at the same time there are several showstoppers which mean that we cannot integrate Mir &#8211; not even optionally in addition to Wayland. The unstable protocol and the licensing choice are clearly not acceptable.</p>
<h1>What this means to Kubuntu</h1>
<h2>Question marks</h2>
<p>For Kubuntu the Mir switch by Canonical created quite some questions. One of those questions is answered: Upstream has no interest in supporting it and would most likely not accept patches for support. With upstream not using Mir the question is how the graphics stack for Kubuntu will look like once Ubuntu switched to Mir? The questions cannot be answered right now but it doesn&#8217;t look good.</p>
<h2>Patches to the stack</h2>
<p>Ubuntu has always had one of the worst graphics stack in the free software world. I can see this in the bug tracker. The quality of the Mesa stack in Ubuntu is really bad. For Mir Ubuntu will have to patch the Mesa stack even further. This is nothing which I would like to see. Also Mesa needs to be packaged with Wayland support. But will Canonical continue to do this? If not, would Kubuntu (and other Ubuntu flavors) need to ship their own Mesa stack? What if the changes by Canonical are so large that a standard Mesa stack doesn&#8217;t run on top of the Ubuntu stack?</p>
<h2>Switching Sessions</h2>
<p>One of the advantages of free software is that one can select the desktop environment in the login manager. This looks like no longer be possible in a Mir world. Unity will run with a Mir system compositor with LightDM nested underneath. We will need either the X Server or a Wayland system compositor. So from the login manager it will not be possible to start directly into a session using a different system compositor. How will it continue to be possible to use both Unity and KDE Plasma on the same system? Running a Unity and a KDE Plasma (or GNOME or XFCE or anything) session at the same time seems to no longer be possible.</p>
<h2>System Compositor</h2>
<p>How deep into the system is the system compositor going to be? Will it be possible to disable the Mir system compositor and replace it with X or Wayland? What if the packages start to conflict? Will it still be possible to install Kubuntu and Ubuntu on the same system? Will Canonical care about it? Will the system compositor mean that one has to decide in Grub whether to boot Ubuntu or Kubuntu?</p>
<h2>Packages from Where</h2>
<p>So far X, Wayland and Mesa have been packaged by Canonical. But what about the future? Will there still be packages for X, will there be packages for Wayland? If not, where to take them from? Debian unstable, most likely. But Debian might be frozen. Will it be possible at all to use the Debian packages for X and Wayland in the Ubuntu stack? Will they meet the requirements for KDE Plasma[7]? If Canonical doesn&#8217;t provide Wayland packages, they would drop to universe, so Mesa in main cannot depend on them. How to get then Mesa with Wayland support?</p>
<h2>Only Future can tell</h2>
<p>Those questions cannot be answered right now. It will have to wait until Mir is integrated into the Ubuntu stack. Then Kubuntu developers will see how far the stack broke. I&#8217;m not really optimistic that it will still be possible to provide the Ubuntu flavors once the transition to Mir is done. I don&#8217;t think that Canonical has any interest in the community provided distributions on top of Ubuntu any more. There are many small changes in the direction which indicate that. But we will see, maybe I&#8217;m too pessimistic.</p>
<p>[1] Given how Canonical introduced Mir with incorrect information about Wayland I consider this as a valid approach to dismiss the technology.</p>
<p>[2] I was very fed up with Ubuntu at the time anyway because our bug tracker once again exploded after the Ubuntu release.</p>
<p>[3] I do admit that I thought about asking KDE e.V. to send an <a href="https://en.wikipedia.org/wiki/Abmahnung">Abmahnung</a> after the statement that KWin would just work fine on Mir.</p>
<p>[4] In fact I consider TDD as utter non-sense and as a useless methodology though some aspects are useful.</p>
<p>[5] &#8220;with our protocol- and platform-agnostic approach, we can make sure that we reach our goal of a consistent and beautiful user experience across platforms and device form factors&#8221;</p>
<p>[6] Yes I know that Qt also has a CLA, which I have signed. But for Qt there is also the <a href="http://www.kde.org/community/whatiskde/kdefreeqtfoundation.php">KDE Free Qt Foundation</a> agreement.</p>
<p>[7]Last week a feature hit KWin which I cannot test/use because the X-Server is too old in Debian testing.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.martin-graesslin.com/blog/2013/05/mir-in-kubuntu/feed/</wfw:commentRss>
		<slash:comments>129</slash:comments>
		</item>
		<item>
		<title>Compositing and &#8220;lightweight&#8221; desktops</title>
		<link>http://blog.martin-graesslin.com/blog/2013/05/compositing-and-lightweight-desktops/</link>
		<comments>http://blog.martin-graesslin.com/blog/2013/05/compositing-and-lightweight-desktops/#comments</comments>
		<pubDate>Wed, 01 May 2013 14:16:40 +0000</pubDate>
		<dc:creator>Martin Gräßlin</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[planetkde]]></category>
		<category><![CDATA[Compositing]]></category>
		<category><![CDATA[KWin]]></category>
		<category><![CDATA[lightweight]]></category>
		<category><![CDATA[OpenGL]]></category>

		<guid isPermaLink="false">http://blog.martin-graesslin.com/blog/?p=1198</guid>
		<description><![CDATA[In the general discussion about &#8220;lightweight&#8221; desktop environments I have read a few times that one should disable Compositing in KWin. That&#8217;s done in Kubuntu&#8217;s low-fat settings package and also something Jos talked about in the context of Klyde. I &#8230; <a href="http://blog.martin-graesslin.com/blog/2013/05/compositing-and-lightweight-desktops/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>In the general discussion about &#8220;lightweight&#8221; desktop environments I have read a few times that one should disable Compositing in KWin. That&#8217;s done in <a href="http://bazaar.launchpad.net/~kubuntu-packagers/kubuntu-settings/kubuntu-settings/view/head:/low-fat/share/config/kwinrc">Kubuntu&#8217;s low-fat settings package</a> and also something Jos <a href="http://www.muktware.com/5520/jos-poortvliet-talks-about-klyde-interview">talked</a> about in the context of Klyde.</p>
<p>I have never seen an explanation on why Compositing should matter at all. It mostly boils down to &#8220;OpenGL is evil&#8221; and &#8220;I don&#8217;t want 3D&#8221;. So let&#8217;s leave the &#8220;educated guesses&#8221; behind us and have a proper look to the question whether Compositing matters for &#8220;lightweight&#8221;. (Remember: lightweight is a buzz-word without any meaning.)</p>
<p>Let&#8217;s start from one of the &#8220;lightweight&#8221; aspects: Memory. For this it&#8217;s important to know that KWin is a Window Manager and Compositor. You cannot just have the Window Manager &#8211; even if compositing is disabled. It&#8217;s not like xcompmgr which runs in another process. For the binary that gets loaded into memory it doesn&#8217;t matter whether compositing is enabled or not. The pure binary containing both window manager and compositor has a size of 1.3 M (on Debian testing, that should be KDE SC 4.8). But when you enable compositing an additional library gets loaded containing the Effects. They are all in one library to not have to open 40 different files. (Again on Debian testing) This library has a size of 783 K. The effects do not link any library which is not already linked by KWin core, so that&#8217;s what we are talking about from additional memory costs when using any desktop effect from binary size: 783 K!</p>
<p>Obviously the binary mapped into memory is just one aspect. There are also additional data structures which need to be created on the <a href="http://en.wikipedia.org/wiki/Heap_%28programming%29">heap</a>. I have no idea how much is really needed and cannot properly look at my system because I have a KWin with debugging symbols loaded. What&#8217;s important to know is that only Effects one uses will get loaded and use memory for their data structures. Also the Effects do not load everything they need but wait till they get activated. E.g. the cube effect will only load a background texture if the cube gets activated. But of course effects do not have anything to do with just using compositing. If you don&#8217;t want an effect, just disable it.</p>
<p>The biggest cost from compositing in the memory perspective is probably using the XComposite extension which redirects the rendering into an X pixmap. That&#8217;s something which will go away once we are on Wayland as application and compositor share the buffer the application is rendering to.</p>
<p>But even so the usage of the additional memory is not just something which is thrown out. It&#8217;s just another case of the <a href="http://en.wikipedia.org/wiki/Time-memory_trade-off">time-memory tradeoff</a>. Unrelated windows do not need to repaint if a window get&#8217;s unmapped, moved or resized. Just look at this comment from the non-composited switching of virtual desktops:</p>
<blockquote><p>During virt. desktop switching, desktop areas covered by windows that are going to be hidden are first obscured by new windows with no background ( i.e. transparent ) placed right below the windows. These invisible windows are removed after the switch is complete. Reduces desktop ( wallpaper ) repaints during desktop switching</p></blockquote>
<p>Without compositing we move the time-memory tradeoff towards using more CPU (create those windows) to prevent even more CPU usage. With compositing we don&#8217;t have to do anything of it. So disabling compositing is obviously not the silver bullet for being &#8220;lightweight&#8221;. It just means moving the time-memory tradeoff slider towards CPU.</p>
<p>What remains is the OpenGL question. I know that many people think it&#8217;s about having a &#8220;3D desktop&#8221;. But the desktop I&#8217;m using is quite 2D-ish. There are people saying that 2D is just a special case of 3D. Looking at OpenGL that is certainly the case. As long as you don&#8217;t use any effect which needs the &#8220;3D aspect&#8221; of OpenGL, KWin just does 2D with OpenGL. Using OpenGL means to make use of hardware which is designed to do these operations instead of doing it on the CPU which is not designed for it. But what if one doesn&#8217;t have the hardware for it? A valid question, but just not in the context of KWin. If your system only provides software rendering KWin automatically falls back to XRender based compositing. </p>
<p>The last aspect to mention in the context of OpenGL is texture from pixmap. I don&#8217;t know how it&#8217;s implemented in the drivers so I don&#8217;t know whether that needs additional memory or not. But if you are concerned about it: XRender does not need a texture from pixmap.</p>
<p>So as you can see compositing comes with a little bit more memory usage but reduces CPU usage. It&#8217;s nothing I could say which one is generally better, but less CPU usage means a sleeping CPU. Granted some effects do animations &#8211; that also requires CPU usage. If you are concerned about that it&#8217;s better to disable the effects or set the global animation speed to instant than to just disable compositing completely.</p>
<p>And if you try to be &#8220;lightweight&#8221; and play with the compositing settings: one unrelated change can ruin all your benefit. Just imagine you would disable compositing because you want to be &#8220;lightweight&#8221; and then you enable a window decoration which uses QML (that is interpreted code) and does animations?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.martin-graesslin.com/blog/2013/05/compositing-and-lightweight-desktops/feed/</wfw:commentRss>
		<slash:comments>67</slash:comments>
		</item>
		<item>
		<title>Good bye Notifications</title>
		<link>http://blog.martin-graesslin.com/blog/2013/04/good-bye-notifications/</link>
		<comments>http://blog.martin-graesslin.com/blog/2013/04/good-bye-notifications/#comments</comments>
		<pubDate>Wed, 24 Apr 2013 13:02:19 +0000</pubDate>
		<dc:creator>Martin Gräßlin</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[planetkde]]></category>
		<category><![CDATA[KWin]]></category>
		<category><![CDATA[Tokamak6]]></category>

		<guid isPermaLink="false">http://blog.martin-graesslin.com/blog/?p=1193</guid>
		<description><![CDATA[When I arrived at Tokamak 6 last week Alex was studying D-Bus communication between various applications. Before I had a chance to really sit down he complained about KWin talking to kded whenever for example a window got moved. This &#8230; <a href="http://blog.martin-graesslin.com/blog/2013/04/good-bye-notifications/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>When I arrived at Tokamak 6 last week Alex was studying D-Bus communication between various applications. Before I had a chance to really sit down he complained about KWin talking to kded whenever for example a window got moved. This didn&#8217;t make much sense, so we had a look at it.</p>
<p>As it turned out that was KWin sending out notifications. Which immediately raised the question of why? Why would a user want a notification that he started/finished moving a window? After all it&#8217;s an action the user triggered. What should be done with the notification? Show a message? &#8220;You successfully moved a window!&#8221;, yes thank you I can see that on the screen. Play an annoying sound? Pling! Hopefully not.</p>
<p>Looking at what KNotify supports only logging to file or running a script make sense in response to the notifications emitted by KWin. But for logging to file it&#8217;s rather questionable why one would want that and why one would do that from inside a window manager. So what remains is running a script &#8211; fair enough that can be useful.</p>
<p>A closer look to the notifications emitted by KWin showed a few more things. None of them is configured to do something with the notification. By default KNotify just discards the notifications. This means we do a communication with kded via D-Bus for nothing. Two applications are getting woken up, context switches and so on for exactly nothing. Some notifications have a sound file connected to them, but are not configured to play that sound by default. We made a small quiz by me playing the sound file and letting the rest of the group guess what it&#8217;s for &#8211; I think nobody got one right. Nobody of the core workspace developers knew these sounds.</p>
<p>Looking at the code where the notifications are emitted highlighted another interesting fact. At all places we also emit a Qt signal which is mapped into the KWin scripting environment. And that&#8217;s actually quite awesome. Because unlike the notifications it has context. A KWin script does not only get informed about a window that gets moved, but about which window gets moved. Let&#8217;s say you are only interested in movements of Firefox windows &#8211; with KWin scripting that&#8217;s possible, with the notifications it isn&#8217;t. Given that we already identified that scripting (and maybe sound) is the only use case for the notifications emitted by KWin it&#8217;s getting more questionable why they are still around. Obviously they had been added long before we had KWin scripts. I was unable to really figure out when it got added, as git blame ends in one of the moving around code commits years ago (with more patience one can figure it out, but knowing that it&#8217;s old, was enough).</p>
<p>Of course we do not want to break our users&#8217; <a href="http://xkcd.com/1172/">workflow</a>, so removing the feature is not easy. We have to properly judge whether the users&#8217; workflow is valid enough to penalize all users by the additional overhead in code and in communication especially the context switches. Given that KWin scripting also allows to perform D-Bus calls, it should be possible to rework each of the previously existing notifications in KWin scripts.</p>
<p>That said: in case you were a user of one of those notifications and the removal breaks your workflow: please let me know. Please tell me how you used it and best provide your script. I will have a look at it and try to ensure that it&#8217;s still possible with KWin scripting (if it&#8217;s simple enough I will just port it).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.martin-graesslin.com/blog/2013/04/good-bye-notifications/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>The History on Wayland Support inside KWin</title>
		<link>http://blog.martin-graesslin.com/blog/2013/04/the-history-on-wayland-support-inside-kwin/</link>
		<comments>http://blog.martin-graesslin.com/blog/2013/04/the-history-on-wayland-support-inside-kwin/#comments</comments>
		<pubDate>Sun, 21 Apr 2013 19:28:20 +0000</pubDate>
		<dc:creator>Martin Gräßlin</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[planetkde]]></category>
		<category><![CDATA[KWin]]></category>
		<category><![CDATA[Tokamak6]]></category>
		<category><![CDATA[Wayland]]></category>

		<guid isPermaLink="false">http://blog.martin-graesslin.com/blog/?p=1191</guid>
		<description><![CDATA[Ever since a certain free software company decided to no longer be part of the larger ecosystem, I have seen lots of strange news postings whenever one of the KDE workspace developers mentioned the word &#8220;Wayland&#8221;. Very often it goes &#8230; <a href="http://blog.martin-graesslin.com/blog/2013/04/the-history-on-wayland-support-inside-kwin/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Ever since a certain free software company decided to no longer be part of the larger ecosystem, I have seen lots of strange news postings whenever one of the KDE workspace developers mentioned the word &#8220;Wayland&#8221;. Very often it goes in the direction of &#8220;KDE is now also going on Wayland&#8221;. Every time I read something like that, I&#8217;m really surprised.</p>
<p>For me Wayland support has been the primary goal I have been working on over the last two years. This doesn&#8217;t mean that there is actual code for supporting Wayland (there is &#8211; the first commit for Wayland support in our git repositories is from June 11, 2011 (!)).</p>
<p>The Wayland research projects two years ago had been extremely important for the further development of KWin since then. First of all it showed that adding support for Wayland surfaces inside KWin&#8217;s compositor is rather trivial. Especially our effect system did not care at all about X11 or Wayland windows. So this is not going to be a difficult issue.</p>
<p>The more important result from this research project was that it&#8217;s impossible to work against an always changing target. At that time Wayland had not yet seen the 1.0 release, so the API was changing. Our code broke and needed adjustments for the changing API. It also meant that we could not merge the work into our master branch (distributions would kill us), we needed to be on a different branch for development. Tracking one heavily changing project is difficult enough, but also KWin itself is changing a lot. So the work needed to be on top of two moving targets &#8211; it didn&#8217;t work and the branch ended in the to be expected state. Now with Wayland 1.0 and 1.1 releases the situation changed completely.</p>
<p>The next lesson we learned from that research project was that the window manager part is not up to the task of becoming a Wayland compositor. It was designed as an X11 window manager and the possibility that there would not be X11 had never been considered. We started to split out functionality from the core window manager interface to have smaller units and to be able to add abstractions, where needed, to support in future more than just X11. That had been a huge task and is still ongoing and it comes with quite some nice side-effects like the rewrite of KWin scripting (helped to identify the interface of a managed Client inside KWin), the possibility to run KWin with OpenGL on EGL since 4.10, the new screen edge system in 4.11 and many many more. All these changes were implemented either directly or indirectly with Wayland in mind. That means we have been working on it for quite some time even if it is not visible in the code.</p>
<p>My initial plannings for adding Wayland support around October/November last year was to start hacking on it in January. I was so confident about it that I considered to submit a talk for FOSDEM which would demo KWin running on Wayland. In the end I decided against it as it would have meant working on some of our very important foundations under time pressure, which I don&#8217;t think is good for maintainability of the code base.</p>
<p>In December though I decided to adjust my plans and focus first on the Qt 5 port as that would allow us to use the Qt Wayland bindings which are a little bit more convenient for usage in a Qt based application than the native C library. This is not something I just come up with, I discussed this small adjustment with a few people (for example Aaron Seigo) at the Qt dev days last year.</p>
<p>On January, 22nd 2013 sebas <a href="http://vizzzion.org/blog/2013/01/the-road-to-kde-frameworks-5-and-plasma-2/">outlined</a> the time line for the transition to Qt 5 and Wayland of the KDE Plasma Workspaces. It clearly states that KWin will become a Wayland compositor and that this is a target we are working on with a clearly defined time line.</p>
<p>Given that I am really surprised to see media writing again and again that we started to work on Wayland because other projects deciding against or for Wayland. It&#8217;s not something we decided on recently and it is quite clear that our work does not depend on any decisions or announcements our competitors do. We are an independent project, which does it&#8217;s own decisions for long term planning. The fact that our work now shifts towards Wayland just at the time our competitors decide for or against Wayland is pure coincidence.</p>
<p>Last week we had a Plasma developer sprint in Nuremberg (thanks to SUSE) and of course Wayland was an important topic for discussion. We had many points on the agenda. After all it&#8217;s the first sprint for us since we work on Plasma Workspaces 2 and it is needed to define our direction for the next year. Given all that I wrote so far it&#8217;s rather obvious that we would have discussed Wayland even if a certain project would not have done a certain announcement. Some topics on the agenda were based on discussions we had on the mailing list before the certain announcement was made (I&#8217;m currently sitting in a train with not sufficient Internet connection so I cannot look up the reference). Which also shows that we had long term plans which were decided on long before the ecosystem shifted.</p>
<p>Summary: we had been working on Wayland for years and it is our long term strategy. Our strategy is of course not based on any announcements of our competitors. We of course need to evaluate new solutions available in the ecosystem when they come up. As I already <a href="http://blog.martin-graesslin.com/blog/2013/03/war-is-peace/">pointed out in the past</a>, this is not yet possible at the moment and all we can see so far is that Wayland is a better solution for our needs in the KDE Plasma Workspaces than other windowing systems which might be tailored towards the needs of our competitor&#8217;s desktop shell. One of the advantage of free software projects is that the development and discussions are open and that it&#8217;s quite easy to reach out to the developers and architects of the software.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.martin-graesslin.com/blog/2013/04/the-history-on-wayland-support-inside-kwin/feed/</wfw:commentRss>
		<slash:comments>39</slash:comments>
		</item>
		<item>
		<title>The relationship between Plasma and KWin in Workspaces 2</title>
		<link>http://blog.martin-graesslin.com/blog/2013/04/the-relationship-between-plasma-and-kwin-in-workspaces-2/</link>
		<comments>http://blog.martin-graesslin.com/blog/2013/04/the-relationship-between-plasma-and-kwin-in-workspaces-2/#comments</comments>
		<pubDate>Sat, 20 Apr 2013 11:09:56 +0000</pubDate>
		<dc:creator>Martin Gräßlin</dc:creator>
				<category><![CDATA[Help KWin]]></category>
		<category><![CDATA[planetkde]]></category>
		<category><![CDATA[KWin]]></category>
		<category><![CDATA[Plasma]]></category>
		<category><![CDATA[Tokamak6]]></category>
		<category><![CDATA[Wayland]]></category>

		<guid isPermaLink="false">http://blog.martin-graesslin.com/blog/?p=1187</guid>
		<description><![CDATA[Yesterday during the Tokamak 6 sprint in Nuremberg we discussed the role of KWin in Plasma Workspaces 2. At the moment in Plasma Workspaces 1 KWin is of course the recommended window manager and compositor, but it&#8217;s also possible to &#8230; <a href="http://blog.martin-graesslin.com/blog/2013/04/the-relationship-between-plasma-and-kwin-in-workspaces-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Yesterday during the Tokamak 6 sprint in Nuremberg we discussed the role of KWin in Plasma Workspaces 2. At the moment in Plasma Workspaces 1 KWin is of course the recommended window manager and compositor, but it&#8217;s also possible to use a different window manager. Back in the days there were quite a lot of users who run Plasma with Compiz. In theory that shouldn&#8217;t matter because everything is standardized with EWMH and ICCCM. Over the years we added more and more extensions to EWMH. It&#8217;s all open source so anyone can implement these extensions (Compiz used to do so), nevertheless right now there is probably no other window manager available to offer the full experience except KWin.</p>
<p>Plasma Workspaces 2 will be released at an interesting point of time. We don&#8217;t want to do the transition to Qt 5 and Wayland at the same time, so it will still be X based. But we all agree that our future will be on Wayland and even if we use X as the windowing system our primary focus is on Wayland. With Wayland quite a few things will change. KWin will play a more important role as it will be the Wayland compositor &#8211; we do not plan to use Weston.</p>
<p>Given that we know that the Wayland shell interface only covers part of what Plasma needs and some of our needs are extremely Plasma specific (for example Activities) it would be tempting to say that we tie KWin to Plasma. Let&#8217;s face it: which other compositor will be there to replace KWin? The reference compositor will probably never accept Plasma specific patches for things like Activities, Compiz won&#8217;t be ported to Wayland and GNOME Shell will probably never be a solution for Plasma. For the small window managers we do not know whether they will go to Wayland at all, but I expect rather not, though I expect that we will see Weston forks/extensions for substitutions of tiling window managers.</p>
<p>We decided to resist the temptation to go the easy road, but instead will develop all our integration bits in a way that one could replace KWin by a different Wayland compositor, even if that is just a theoretical option. Of course we will not do any fallback modes for the case that one is using e.g. Weston without Plasma integration bits. So the features which we need might then just be disabled. Adding fallback modes would most likely just result in bit rotting code as nobody would use it.</p>
<p>Of course to make it possible that others can provide compatibility features we need to properly document our extensions and additional interfaces. Luckily Wayland implicitly forces us to do so. The general plan is to publish our extensions and also try to standardize what makes sense to be standardized and we hope that this would also benefit other projects. What we especially had in mind is of course Razor-Qt which already supports using KWin. By properly documenting all our Plasma-KWin communication channel, they can also use what is useful to them and it ensures that we don&#8217;t break KWin in a way that it gets unusable for Razor-Qt.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.martin-graesslin.com/blog/2013/04/the-relationship-between-plasma-and-kwin-in-workspaces-2/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>What makes a &#8220;lightweight&#8221; desktop environment lightweight?</title>
		<link>http://blog.martin-graesslin.com/blog/2013/04/what-makes-a-lightweight-desktop-environment-lightweight/</link>
		<comments>http://blog.martin-graesslin.com/blog/2013/04/what-makes-a-lightweight-desktop-environment-lightweight/#comments</comments>
		<pubDate>Sun, 14 Apr 2013 09:00:53 +0000</pubDate>
		<dc:creator>Martin Gräßlin</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[planetkde]]></category>

		<guid isPermaLink="false">http://blog.martin-graesslin.com/blog/?p=1184</guid>
		<description><![CDATA[Over the last few days I was wondering what is a &#8220;lightweight&#8221; desktop. And I must say I couldn&#8217;t come up with an answer to that question. I was considering various things like &#8220;being memory efficient&#8221; which I discarded for &#8230; <a href="http://blog.martin-graesslin.com/blog/2013/04/what-makes-a-lightweight-desktop-environment-lightweight/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Over the last few days I was wondering what is a &#8220;lightweight&#8221; desktop. And I must say I couldn&#8217;t come up with an answer to that question. </p>
<p>I was considering various things like &#8220;being memory efficient&#8221; which I discarded for obvious reasons. First of all it&#8217;s difficult to measure memory usage correctly (I haven&#8217;t seen anyone, who provides numbers, doing it correctly, this includes especially Phoronix). And then it&#8217;s comparing mostly apples to oranges. Loading a high-resolution wallpaper might make all the difference in the memory usage. Also if desktop environment Foo provides features which are not provided by Bar it&#8217;s obvious that Foo uses more memory. But still it&#8217;s apples vs oranges. It&#8217;s not a comparison on memory, it&#8217;s a comparison of features. And of course one might consider the <a href="http://en.wikipedia.org/wiki/Space%E2%80%93time_tradeoff">Time-memory-tradeoff</a>.</p>
<p>So is it all about features? Obviously not. If there is a feature a user needs and uses it cannot be bloat. The fact that a desktop environment has only few features cannot be the key to being lightweight. Being evil now: many people say GNOME is removing features, but nobody would say that GNOME is lightweight.</p>
<p>What about support for old systems? That&#8217;s not lightweight, that&#8217;s support for old hardware. And it&#8217;s something which doesn&#8217;t make any sense given <a href="http://en.wikipedia.org/wiki/Moore%27s_law">Moore&#8217;s law</a>. Which raises the first question: what is old hardware? One year, two years, ten years? Is it a moving target or is a Pentium III for all time the reference? Optimizing for old hardware means not making use of modern hardware capabilities. But does that make sense to not use modern hardware if it is available? Using the GPU for things the GPU can do better than the CPU is a good thing, isn&#8217;t it? Parallelize a computation on multi-core if possible is a good thing, isn&#8217;t it? But if you do so, you are optimizing for modern hardware and not for old hardware. So saying you are good for old hardware, implies you are bad on new hardware? Also I&#8217;m wondering how one can optimize for old hardware? Developers tend to have new hardware to not have problems like <a href="http://xkcd.com/303/">this</a>. And how can one keep support for old hardware when the complete stack is moving towards new hardware? Who tests the kernel against old hardware? Who provides DRI drivers for obsoleted hardware which doesn&#8217;t fit into modern mainboards (who remembers AGP or PCI)? Who ensures that software is still working on 32 bit systems, who would notice such a breakage for example in the X-Server? So lightweight cannot be fit for old hardware. And remember: optimizing for old hardware is not the same as optimizing for modern low-end hardware. Even the Raspberry Pi has a stronger CPU (700 MHz) than the oldest <a href="http://en.wikipedia.org/wiki/List_of_Intel_Pentium_III_microprocessors">Pentium III</a> (450 MHz) &#8211; not to mention things like OpenGL&#8230;</p>
<p>What&#8217;s it then? Let&#8217;s ask Wikipedia. For Xfce it tells us, that &#8220;it aims to be fast and lightweight, while still being visually appealing and easy to use&#8221;. Unfortunately there&#8217;s no link on lightweight and also no reference. Let&#8217;s try again, LXDE: &#8220;The goal of the project is to provide a desktop environment that is fast and energy efficient&#8221;. Again no real definition and just stating a goal. But it goes on:<br />
<blockquote>LXDE is designed to work well with computers on the low end of the performance spectrum such as older resource-constrained machines, new generation netbooks, and other small computers, especially those with low amounts of RAM.</p></blockquote>
<p>I have no idea what a &#8220;new generation netbook&#8221; is, but it sounds like something modern half a decade ago. But we are down to the &#8220;being good on old hardware&#8221;, which we just discarded. Interestingly Wikipedia has references to prove that LXDE is good on RAM &#8211; unfortunately it&#8217;s references to Phoronix. Shame on you, Wikipedia, that&#8217;s a &#8220;benchmark&#8221; which has been <a href="https://blogs.kde.org/2010/03/10/benchmarks">considered seriously flawed</a> by people understanding the topic.</p>
<p>Ok Phoronix aside, there is one more of the lightweight desktops to check. Razor-qt: &#8220;is a lightweight, Qt-based free software desktop environment for the X Window System. Unlike the KDE desktop environment which is also based on Qt, Razor-qt usually performs well even when used in computers with older hardware&#8221;. Damn, it again only claims and no reference for anything. Who says that KDE desktop environment (what&#8217;s that again?) is not performing well on older hardware? And what does the &#8220;usually&#8221; mean in that sentence?</p>
<p>So all Wikipedia gives us, is buzzword bingo and various claims without any proof (and not even a &#8220;reference missing&#8221;). Let&#8217;s try different and go to the projects directly.</p>
<p><a href="http://xfce.org/about">Xfce</a> tells us that it &#8220;is a lightweight desktop environment for UNIX-like operating systems. It aims to be fast and low on system resources, while still being visually appealing and user friendly.&#8221; Which sounds very similar to what Wikipedia wrote. Unfortunately nothing that tells us what lightweight means or what fast is or low on system resources. Fuzzy is fuzzy.</p>
<p><a href="http://lxde.org/lxde">LXDE</a> also has the same definition as shown in Wikipedia (maybe we should mark those wiki articles as advertisement?) but at least gives us a definition for what lightweight means to them: &#8220;It needs less CPU and performs extremely well with reasonable memory.&#8221; Fuzzy is fuzzy. What&#8217;s &#8220;reasonable memory&#8221; and &#8220;less CPU&#8221;? It goes on about various other things like &#8220;fast&#8221; and &#8220;energy saving&#8221; (which even are contradicting, e.g. fast is defined as working on hardware from 1999 and not require 3D &#8211; how that can be energy saving on new hardware one has to show me). The point energy saving is quite funny as it just says they are better than &#8220;other systems&#8221;. Oh well fuzzy is fuzzy.</p>
<p>Last but not least: <a href="http://www.razor-qt.org/">Razor-qt</a>. Razor doesn&#8217;t say it&#8217;s lightweight:</p>
<blockquote><p>Razor-qt is an advanced, easy-to-use, and fast desktop environment based on Qt technologies. It has been tailored for users who value simplicity, speed, and an intuitive interface. Unlike most desktop environments, Razor-qt also works fine with weak machines.</p></blockquote>
<p>Fuzzy is fuzzy. What&#8217;s a &#8220;weak machine&#8221;, what are the &#8220;most desktop environments&#8221;? Where&#8217;s the proof for other DEs not working well on those not-defined &#8220;weak machines&#8221;?</p>
<p>And here, poor fool! with all my lore I stand, no wiser than before. All what I could derive from studying what lightweight means is, that one just has to claim to be lightweight. Bonus points if you include it into your name. It seems like if you repeat it often enough people will repeat it and it will turn out into truth.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.martin-graesslin.com/blog/2013/04/what-makes-a-lightweight-desktop-environment-lightweight/feed/</wfw:commentRss>
		<slash:comments>156</slash:comments>
		</item>
		<item>
		<title>Hitting walls &#8211; a story of Present Windows 2</title>
		<link>http://blog.martin-graesslin.com/blog/2013/04/hitting-walls-a-story-of-present-windows-2/</link>
		<comments>http://blog.martin-graesslin.com/blog/2013/04/hitting-walls-a-story-of-present-windows-2/#comments</comments>
		<pubDate>Fri, 12 Apr 2013 14:12:42 +0000</pubDate>
		<dc:creator>Martin Gräßlin</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[planetkde]]></category>
		<category><![CDATA[QML]]></category>

		<guid isPermaLink="false">http://blog.martin-graesslin.com/blog/?p=1181</guid>
		<description><![CDATA[One of my favorite User Experience elements in KWin is the Present Windows/Desktop Grid combination. For me those are the most important elements to switch between windows and virtual desktops. Although Present Windows and Desktop Grid are two different &#8220;effects&#8221;, &#8230; <a href="http://blog.martin-graesslin.com/blog/2013/04/hitting-walls-a-story-of-present-windows-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>One of my favorite User Experience elements in KWin is the Present Windows/Desktop Grid combination. For me those are the most important elements to switch between windows and virtual desktops. Although Present Windows and Desktop Grid are two different &#8220;effects&#8221;, I consider them us one because of their very similar functionality. The primary use case for both is to change the active window, the main difference is that Desktop Grid sorts the windows by virtual desktops.</p>
<p>The effects are so similar that they even share the code to lay out the windows. Nevertheless there are quite some differences in the functionality. The following features are only available in Present Windows:</p>
<ul>
<li>Filtering of windows</li>
<li>Icon and caption on each window</li>
<li>Closing windows through a button shown on hover</li>
<li>Enlarging windows on hover</li>
<li>Mouse Actions</li>
<li>External activation (used by Netbook Shell)</li>
</ul>
<p>On the other hand there are features in Desktop Grid not available in Present Windows:</p>
<ul>
<li>Drag windows from one screen to another</li>
<li>Add/remove virtual desktops</li>
</ul>
<p>The difference in functionality cannot be explained &#8211; there is just no reason for it. This is clearly a problem for our users &#8211; the effects look identical, but they behave differently. From all I learned about usability this is pretty bad because it teaches users to not trust systems.</p>
<p>The obvious answer would be to merge those two effects. But here we have a problem. Present Windows has been implemented to be Present Windows &#8211; no matter how we tweak it, it will be Present Windows. And Desktop Grid has been implemented as a Desktop Grid &#8211; no matter how we tweak it, it will be Desktop Grid.</p>
<p>I know that people will tell me that nothing is impossible. Of course one could hack around and make the effects be the same. But we have been there and tried to bring non-Present Windows functionality into Present Windows. I once implemented an Alt+Tab mode in Present Windows &#8211; a huge mistake. All it did was adding lots and lots of special case handling to make it work. And it castrated the effect. It only supported one screen (needed of course special hacks), it didn&#8217;t support filtering (keyboard grab hold by Alt+Tab framework) and so on and on. It never made any sense and I am very glad that I realized this error and removed the Alt+Tab mode again.</p>
<p>But also with Desktop Grid we made the experience by adding the layout mode of Present Windows. It wasn&#8217;t good for the code base. Nowadays, after I implemented that addition, I compare the code base of Desktop Grid effect to a Jenga tower which is already shaking and I fear that if I touch it to change something it will completely collapse.</p>
<p>A merge would only be possible by removing features and that is always difficult. <a href="https://bugs.kde.org/show_bug.cgi?id=305044">People were really upset</a> when I removed the Alt+Tab mode of Present Windows. Arguments do not work, giving replacements does not help and trying to improve the workflow is of course <a href="http://xkcd.com/1172/">not welcome</a>.</p>
<p>What remains would be a complete rewrite from scratch. But that&#8217;s a task so large that I consider it as a possibility for a Google Summer of Code project. Together the two effects have more than <a href="http://blog.martin-graesslin.com/blog/wp-content/uploads/stats/cloc-effects.html">4000 lines of code</a>. It&#8217;s nothing we could do in parallel to our normal work and rewriting as a KWin Effect does not really make sense. Yes one can use Effects for that but it&#8217;s rather limited.</p>
<p>One of the most clear disadvantages is that Effects require Compositing. While having always composited systems becomes more and more the reality, there is still no reason why there should be the break in the user workflow when turning off Compositing and I have had many discussions with users who did not understand that.</p>
<p>But the real problem is that we do not have a toolkit inside the Effects. We are down to key press/release events and mouse motion/press/release events. That&#8217;s rather limited. For the close button inside Present Windows we do quite some hacks to get the mouse events injected into the QWidget. It&#8217;s a hack and nothing that scales. Key events are not composed correctly &#8211; for example on my English keyboard I&#8217;m not able to write letters like &#8220;ä, ß&#8221; in Present Windows. But the real problem is the handling of things like the drag and drop of windows in Desktop Grid. The code is extremely nested (seven indentation levels) and has to cover many, many corner cases. It just shows how difficult it is to get that handled correctly with different modes.</p>
<p>But since recently we have a technology which solves many of these problems: QML. With QML we get a toolkit which we can use to properly interact with the windows and which is supported in both composited and non-composited setups. In combination with our KWin scripting framework we have capabilities which are quite similar to what our effects can do. As a nice side-effect QML forces us to separate logic from visualization which means that the logic of Present Windows/Desktop Grid could be reused and combined with new ideas of how to represent the data.</p>
<p>This week the logic part entered KWin&#8217;s source repository in form of a <a href="http://qt-project.org/doc/qt-4.8/qabstractitemmodel.html">QAbstractItemModel</a> which is exported to QML. The model is quite flexible and allows to sort the windows in multiple levels &#8211; currently it supports screens, virtual desktops and activities. In addition one can specify whether a window should be excluded. That&#8217;s for example important to have the different modes of Present Windows &#8211; there is one mode for only current desktop and one mode for only windows of the currently active application.</p>
<p>Having a model makes it rather easy to support filtering &#8211; we just need to connect it to a <a href="http://qt-project.org/doc/qt-4.8/qsortfilterproxymodel.html">QSortFilterProxyModel</a> and such a model is already provided and exported to KWin&#8217;s QML binding.</p>
<p>Implementing the logic for Desktop Grid inside QML becomes now as simple as:</p>
<pre class="brush: javascript; gutter: false; first-line: 1; highlight: []; html-script: false">
ClientFilterModel {
    id: filterModel
    clientModel: ClientModelByScreenAndDesktop {
        exclusions: ClientModel.NotAcceptingFocusExclusion | ...
    }
    filter: filterItem.text
}
</pre>
<p>The idea is now to use this as a base for what I call &#8220;Present Windows 2&#8243;. It&#8217;s nothing I target for 4.11, because of the complexity of Present Windows and Desktop Grid. I hope that many things become easier once we are on Qt 5 and QtQuick 2. So it&#8217;s something I want to have for Plasma Workspaces 2. I&#8217;m still wondering whether to optionally include the current proof of concept QML script which renders a screen like this:</p>
<table style="width:auto;">
<tr>
<td><a href="https://picasaweb.google.com/lh/photo/I8LcYvdyar5UtlTsRy6ADdMTjNZETYmyPJy0liipFm0?feat=embedwebsite"><img src="https://lh6.googleusercontent.com/-nlLf8q2wY3U/UUdZTkIk_hI/AAAAAAAAA0E/60PiiER8M-I/s640/present-windows-2.png" height="360" width="640" /></a></td>
</tr>
<tr>
<td style="font-family:arial,sans-serif; font-size:11px; text-align:right">Aus <a href="https://picasaweb.google.com/115606635748721265446/KWin?authuser=0&#038;feat=embedwebsite">KWin</a></td>
</tr>
</table>
<p>One can already see the improvements like an always visible filter area. That&#8217;s one of the real disadvantages of the existing Present Windows effect: one doesn&#8217;t get any hint that it is possible to filter the shown windows. Also a clear improvement in this variant is the always visible close button for each of the windows.</p>
<p>The new models included in KWin might also get new tasks I haven&#8217;t thought about when I started to work on it. Our Plasma developers noticed that this would be a rather good base for the tasks applet. Whether that&#8217;s possible or not we do not yet know, but it would have clear advantages to have a shared code base for all the different ways of getting an overview of open windows.</p>
<p>(Sorry for having once again written such a long blog post)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.martin-graesslin.com/blog/2013/04/hitting-walls-a-story-of-present-windows-2/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Setting up a Pandaboard for KWin development</title>
		<link>http://blog.martin-graesslin.com/blog/2013/03/setting-up-a-pandaboard-for-kwin-development/</link>
		<comments>http://blog.martin-graesslin.com/blog/2013/03/setting-up-a-pandaboard-for-kwin-development/#comments</comments>
		<pubDate>Mon, 25 Mar 2013 20:14:10 +0000</pubDate>
		<dc:creator>Martin Gräßlin</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[planetkde]]></category>

		<guid isPermaLink="false">http://blog.martin-graesslin.com/blog/?p=1177</guid>
		<description><![CDATA[The Pandaboard is a nice little ARM powered device which is meant for development and suited for example to test KWin on real OpenGL ES hardware. This weekend I decided to set it up again, I had done it before, &#8230; <a href="http://blog.martin-graesslin.com/blog/2013/03/setting-up-a-pandaboard-for-kwin-development/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The <a href="http://en.wikipedia.org/wiki/Pandaboard">Pandaboard</a> is a nice little ARM powered device which is meant for development and suited for example to test KWin on real OpenGL ES hardware. This weekend I decided to set it up again, I had done it before, I had installed KWin on the PI, so I&#8217;m not a complete NOOB for ARM hardware. I wanted to test a few things and see how the latest changes to master do on a non x86 architecture.</p>
<p>I got the memo about Linux is for normal users and not for LEET, but I do not understand why it has to be so difficult to setup a device which is meant for development. In the past it was as simple as dd an image to an SD-card, plug it in and done. Well those times are over.</p>
<p>My requirement for a base distributions are rather small:</p>
<ul>
<li>Up to date kdelibs, because compiling is slow on the device</li>
<li>Working drivers for GL hardware</li>
</ul>
<p>With this combination we can rule out most distributions like for example <a href="http://wiki.debian.org/PandaBoard">Debian</a> (issues with both) or <a href="http://en.opensuse.org/HCL:PandaBoard">openSUSE</a> (no drivers). I decided to try <a href="https://releases.linaro.org/13.02/ubuntu/panda">Linaro 13.02</a> which offers an image for Pandaboard and is Ubuntu 12.10 based, which means we can easily install KDE packages.</p>
<p>Linaro is still rather simple: dd to SD card, plug in and go. Just that you don&#8217;t get any output on the screen. I already thought my Pandaboard was broken. What&#8217;s a little bit tricky is that the Pandaboard has two HDMI connectors (one as HDMI, one as DVI) and at least openSUSE reports that only the real HDMI works. But with Linaro I did not get anything on either screen or TV.</p>
<p>So I had to connect to the <a href="http://en.wikipedia.org/wiki/Serial_port">Serial port</a> to get some output. And look there: it boots. Once I was logged in I was able to figure out that the system is pretty basic, e.g. no X installed. But even after installing X I did not get anything on the screen: it complained about missing /dev/fb0. That was then the point where I considered trying a different distribution. (Search did not help).</p>
<p>Next choice was Kubuntu. This also used to be rather simple: dd to SD card. Downloaded daily build of 13.04, dd to SD card, plugged in and screen turns on. But instead of starting the system, the installer is started. Well since 12.10 you need to install. Obviously the system is not able to install to the SD card which is plugged in. So I got an USB stick, dd to stick, plugged in and nothing. The pandaboard doesn&#8217;t boot from USB stick. Now it got difficult: search for a second SD card. Found one, dd image to the second card, moved the first SD card to a card reader, plugged everything in and installed to the SD card at the card reader.</p>
<p>After installation, I swapped the SD cards, plugged in and nothing. System doesn&#8217;t boot. Well maybe the system expects at a different device, so I plugged the card reader in again, tried to boot and nothing.</p>
<p>OK, I installed a daily built of an unreleased version, so maybe I should try 12.10. Not so up to date kdelibs, but probably good enough for KWin. Did the same procedure again, installed and doesn&#8217;t boot.</p>
<p>Now what? I could try a base Ubuntu instead of Kubuntu. But as the installer is to my knowledge shared I do not expect that it will work. And also I&#8217;m too scared that Ubuntu will come without drivers and with Compiz. I don&#8217;t want llvmpipe on the desktop, I definitely don&#8217;t want llvmpipe on ARM. And I had seen Compiz with drivers on the pandaboard &#8211; so no that&#8217;s too scary.</p>
<p>While searching for a solution to the problems I was facing, I also stumbled over <a href="https://wiki.ubuntu.com/Core">Ubuntu Core</a>. It didn&#8217;t look like anything I want to try, but at this stage I was at the point to decide whether I use a distro like openSUSE without drivers or try something which might give me drivers.</p>
<p>Now with the linked wiki page I would not have been able to install it, because it&#8217;s an interesting system. Luckily the omappedia contains an <a href="http://www.omappedia.com/wiki/OMAP_Ubuntu_Core">instruction</a>. Basically the system comes with nothing. No editor, no network, no console, no way to log in, just nothing. But even with the introduction it gets interesting. For example it links a PPA which is not available for quantal or raring. Do I not need it anymore? Will my system be broken afterwards? (it turned out that the packages are nowadays included).</p>
<p>The most interesting aspects were that it doesn&#8217;t start with networking enabled. The wiki page lists a command to start networking, but I did not manually adjust resolv.conf because I thought DHCP would set it. Well it didn&#8217;t and in the running system you cannot change it because there&#8217;s no editor.</p>
<p>After quite some fiddling with the system I finally was at a state where startx succeeded and loaded into the KDE Plasma desktop. Looked good even compositing working OOTB (of course only XRender). So I enabled my keyboard/mouse combo and nothing. Searching for this problem recommended to check whether the usb module is loaded. Yeah, come on, I&#8217;m not stupid. Well better be sure:<br/><br />
lsmod | grep usb<br/><br />
nothing. Hmm get&#8217;s interesting. Modprobe fails, depmod fails &#8211; /lib/modules/ does not exist. The linux image was not installed. That was the point where I decided to install full kubuntu-desktop instead of just kde-workspace. The device is slow, it took a few hours.</p>
<p>By now I have the system running and KWin master built from source (took another few hours). It looks like it has drivers for the system. At least a shipped demo application for OpenGL ES 1.1 is working &#8211; the demo application for OpenGL ES 2.0 is failing because it has a hard coded path to the shader file. Installing the driver was also fun, it comes as a DKMS package and the first installation try failed with a crashing g++. That&#8217;s something I already knew from my last try with the pandaboard. Gcc might crash, restarting solves it.</p>
<p>Unfortunately I don&#8217;t have KWin running on OpenGL ES yet on this hardware. It fails somewhere in the init buffer configs code. But it was already worth the effort. The code is already extended with much more error checks as I needed to find where exactly it is failing. Also compiling on ARM found a few more C++11 narrowing conversion warnings (floats). Given that we want to enable C++11 for KWin in 4.11 it&#8217;s good to know that there is still some work to do on non x86 hardware. Would be nice to get that CI covered.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.martin-graesslin.com/blog/2013/03/setting-up-a-pandaboard-for-kwin-development/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>This week in KWin (2013, week 10-12)</title>
		<link>http://blog.martin-graesslin.com/blog/2013/03/this-week-in-kwin-2013-week-10-12/</link>
		<comments>http://blog.martin-graesslin.com/blog/2013/03/this-week-in-kwin-2013-week-10-12/#comments</comments>
		<pubDate>Mon, 25 Mar 2013 08:06:47 +0000</pubDate>
		<dc:creator>Martin Gräßlin</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[planetkde]]></category>
		<category><![CDATA[This Week in KWin]]></category>

		<guid isPermaLink="false">http://blog.martin-graesslin.com/blog/?p=1175</guid>
		<description><![CDATA[This week I want to start with a big thank you for our sysadmins who did a great job this weekend. And then I want to say sorry that I didn&#8217;t put up a summary the last two weeks, but &#8230; <a href="http://blog.martin-graesslin.com/blog/2013/03/this-week-in-kwin-2013-week-10-12/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>This week I want to start with a big thank you for our sysadmins who did a great job this weekend. And then I want to say sorry that I didn&#8217;t put up a summary the last two weeks, but I did a general blog post instead.</p>
<p>Last week we had to investigate one issue which quite surprised me. On Sunday a cleanup to our GLX initialization code was pushed to master. This had a small regression preventing compositing to work on NVIDIA. What surprised me is that nobody noticed till Thursday, when I setup an old system with NVIDIA to test something completely different. Is nobody running master any more or are our KDE developers no longer using the NVIDIA driver? Overall it&#8217;s not good that we have regressions in master for four days without anybody noticing. And no: CI cannot catch such issues.</p>
<h1>Summary</h1>
<h2>Crash Fixes</h2>
<ul>
<li><strong><a href="https://bugs.kde.org/show_bug.cgi?id=315528">315528</a></strong>: <em>KWin crashes when switching windows</em><br />
This change will be available in version 4.11<br /><a href="http://commits.kde.org/kde-workspace/1b1afdf00f326d9145da14a84eb118433705036e">Git Commit</a></li>
</ul>
<h2>Critical Bug Fixes</h2>
<ul></ul>
<h2>Bug Fixes</h2>
<ul>
<li><strong><a href="https://bugs.kde.org/show_bug.cgi?id=259640">259640</a></strong>: <em>Deleted windows not unrefed when restarting compositing</em><br />
This change will be available in version 4.10.2<br /><a href="http://commits.kde.org/kde-workspace/508a1da0becd739302ca28f5f1fb53967a0cfd93">Git Commit</a></li>
<li><strong><a href="https://bugs.kde.org/show_bug.cgi?id=317068">317068</a></strong>: <em>keepInArea does not work if window dimensions match the area dimensions</em><br />
This change will be available in version 4.10.2<br /><a href="http://commits.kde.org/kde-workspace/328775331c11f288d819491b95d5af8ee9e70cf8">Git Commit</a></li>
<li><strong><a href="https://bugs.kde.org/show_bug.cgi?id=305781">305781</a></strong>: <em>Option &#8220;Suspend desktop effects for fullscreen windows&#8221; makes the image freeze when going fullscreen in applications</em><br />
This change will be available in version 4.10.2<br /><a href="http://commits.kde.org/kde-workspace/d724bada226922794d341e97b334d1bbe696df82">Git Commit</a></li>
<li><strong><a href="https://bugs.kde.org/show_bug.cgi?id=316040">316040</a></strong>: <em>Dual screen issue caused by d6b3f6983efebc42abd6028ece9c3ec7facea2d0</em><br />
This change will be available in version 4.11<br /><a href="http://commits.kde.org/kde-workspace/c61081ffed38a2f124631d41cede6e2b839026c9">Git Commit</a></li>
<li><strong><a href="https://bugs.kde.org/show_bug.cgi?id=283309">283309</a></strong>: <em>Attaching windows to activities is too clumsy</em><br />
This change will be available in version 4.10.2<br /><a href="http://commits.kde.org/kde-workspace/b0c1a197d30f42fc405586aff18cd21ea3e46037">Git Commit</a></li>
<li><strong><a href="https://bugs.kde.org/show_bug.cgi?id=316033">316033</a></strong>: <em>Switching from one aurorae theme to another results in no decoration</em><br />
This change will be available in version 4.10.2<br /><a href="http://commits.kde.org/kde-workspace/45a6f0a2ecc79fe974f69cde6c4941dfb6ec5ab8">Git Commit</a></li>
<li><strong><a href="https://bugs.kde.org/show_bug.cgi?id=314532">314532</a></strong>: <em>Plastik (QML) decoration: poor performance with desktop effects</em><br />
This change will be available in version 4.10.2<br /><a href="http://commits.kde.org/kde-workspace/08fce80bd0bba1a653406f5acfd9cf6a6149eb95">Git Commit</a></li>
<li><strong><a href="https://bugs.kde.org/show_bug.cgi?id=296076">296076</a></strong>: <em>Fix fullscreen state handling: NETWM says it&#8217;s bound to focus and not stacking order, also see bug #224600</em><br />
This change will be available in version 4.11<br /><a href="http://commits.kde.org/kde-workspace/3b0cb1a9e353683930e9755f158d425d3551ec0c">Git Commit</a></li>
<li><strong><a href="https://bugs.kde.org/show_bug.cgi?id=313061">313061</a></strong>: <em>&#8220;Login&#8221; effect does not fade in on secondary monitor(s) with a multi screen setup</em><br />
This change will be available in version 4.11<br /><a href="http://commits.kde.org/kde-workspace/118b841835cdc5c60686abc3766a432323440266">Git Commit</a></li>
<li><strong><a href="https://bugs.kde.org/show_bug.cgi?id=307965">307965</a></strong>: <em>Upper part of windows tears when moving it left/right ONLY in upper part of display</em><br />
This change will be available in version 4.11<br /><a href="http://commits.kde.org/kde-workspace/6072b4feb8c90024aa24b2e9cb8a21ab2140412c">Git Commit</a></li>
<li><strong><a href="https://bugs.kde.org/show_bug.cgi?id=299245">299245</a></strong>: <em>Get rid of  &#8220;Display borders on maximized windows&#8221; setting</em><br />
This change will be available in version 4.11<br /><a href="http://commits.kde.org/kde-workspace/395bee6032ca41a1ebf916110ee95aa6056a94ee">Git Commit</a></li>
<li><strong><a href="https://bugs.kde.org/show_bug.cgi?id=237260">237260</a></strong>: <em>shortcuts for switching windows don&#8217;t work with multihead</em></li>
<li><strong><a href="https://bugs.kde.org/show_bug.cgi?id=317025">317025</a></strong>: <em>Java Swing Apps do not receive Deiconify event if window is shaded</em><br />
This change will be available in version 4.11<br /><a href="http://commits.kde.org/kde-workspace/607031cb4daec85082d35699214d2f9ae2ab386d">Git Commit</a></li>
<li><strong><a href="https://bugs.kde.org/show_bug.cgi?id=91703">91703</a></strong>: <em>vertical maximization doesn&#8217;t work as expected</em><br />
This change will be available in version 4.11<br /><a href="http://commits.kde.org/kde-workspace/395bee6032ca41a1ebf916110ee95aa6056a94ee">Git Commit</a></li>
</ul>
<h2>New Features</h2>
<ul></ul>
<h2>Tasks</h2>
<ul></ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.martin-graesslin.com/blog/2013/03/this-week-in-kwin-2013-week-10-12/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
