Some not so wobbly news from wobblyland

Long time no post on what has changed in KWin lately. So I’m going to show you some new features.

There has been some work going on to improve the tabbox (alt+tab) when no effect is used. Andreas Pakulat added an outline for the currently selected window like it was in KDE 3 time. Very nice and usefuel – thanks a lot. The tabbox has received some face lifting and uses the Plasma style. On that part I want to thank Nuno for his great help on making the whole thing nice. Adding some pixels here and there – I could not have done it.

Well nothing is as good as a screenshot:

Plasma styled tabbox with outline
Plasma styled tabbox with outline

But that’s not the only thing which has improved. Some might have noticed that they activated an effect but it just doesn’t work. This can have different reasons: you want to activate an OpenGL only effect and you are using XRender or the effect requires OpenGL shaders and your hardware or driver does not support shaders. To solve this problem the best solution would be to deactivate the not supported effects in the plugin selection, but that’s not possible as you can change the effects if compositing is suspended or deactivated. So testing if OpenGL is used does not work and we cannot deactivate the effects in the UI.

To give some feedback to the user a notification is shown when you change effects and you have selected a not supported effect. It just checks which effects are loaded and which effects are selected when you change your settings.

Notification for not supported effects
Notification for not supported effects

We also added a D-Bus method toggleCompositing to suspend/resume compositing. This is already used by PowerDevil when the option to disable Compositing is set. In that case another notification is shown, telling you the shortcut to resume compositing. So if you are the author of an application which you know performs badly with compositing (I have heard there are some drivers which don’t like you to play videos when compositing is enabled – should be solved with DRI2) you can automatically suspend compositing.

And last but not least there is a new on-screen-display which is shown when you change the desktop. It’s Plasma styled as well and looks very much like the pager. It highlights the new desktop and arrows from the old desktop to the new desktop are shown. Please don’t tell me that this is just a copy from Mac OS – of course it is inspired. But this one is better. Ever looked at the Mac OS spaces OSD? Does it look like the other parts of the workspace? No it doesn’t. Our OSD uses the workspace style, so it’s better integrated 🙂

This OSD replaces the old popup info. So you just have to check the “Show desktop name on change” option to receive this OSD. If you want to keep the old just name option: please leave a note. If there is need for it I will add an option to select between OSD and only desktop name.

Desktop change OSD
Desktop change OSD

And as an image can’t show the dynamic animations (Plasma has really great stuff for that) here’s the video (Link for planet reader):

KWin effects in Windows Vista

There has been a Feature Request to port KWin to the Microsoft Windows platform (see Bug 182700) and we have started secretly to port KWin to Microsoft Windows Vista. And today we are proud to announce that there will be a first release for the Microsoft Windows platform with KDE 4.3.

Of course porting an application that is tied so much to the X11 platform is not a simple task. That’s why we won’t provide the window manager functionalities in the first version. There will only be the compositing effects. Microsoft allows to access Vista’s Aero features so we just had to implement a new Direct3D backend. KWin’s compositing support is very modular and there are already two backends OpenGL and XRender, so adding support for Direct3D is not that difficult. So we added a new scene_direct3d.cpp file which handles the compositing the same way as the existing scene_opengl.cpp.

A more complicated task were the EffectWindows which represent a window in the effect. In the current implementation it is tied to X Clients: managed, unmanaged and deleted clients. These types have the parent class TopLevel. So what we needed was a new Client implementation called WindowsWindow. We are not able to manage those windows as porting the window management functions is – as said – too difficult. So for the effects everything is transparent, nothing changed. When accessing an EffectWindow in X11 it will be a managed or unmanaged client, in Microsoft Windows it’s an WindowsWindow.

Of course our Effect API allows to access all the window management functionalities. It would be kind of a joke if you have the cube but cannot change the desktop. As the Microsoft Windows plattform does not know the concept of virtual desktops we can of course not provide these API calls. So we had to implement a WindowsEffectsHandler Implementation which provides access to all the functions for API compatability and just returning dummy values. effects->numberOfDesktops() will always return 1. That is effects relying on effects->numberOfDesktops() > 1 will not work. So no cube effect 🙁

We have now reached a point in the porting effort that we are confident to have all the important effects ported till hard freeze. CoverSwitch and FlipSwitch are already working, also small effects like MagicLamp and MinimizeAnimation are nearly done (we still have some problems with retrieving the icon position).

I think you want to see a screenshot of current state. As FlipSwitch was the first effect to use 3D in KWin I finished this port first and here it is:
KWin FlipSwitch in Windows Vista

Unfortunately nobody from KWin team registered for a Windows 7 beta licence. So we are currently unable to test with the upcomming release. We hope that Microsoft will see the chances a good and working Compositing implementation will provide for their platform and that they will provide us all needed help including licences for the new version.

New KWin effect: Sheet

I implemented a new KWin effect called “Sheet”. It animates modal dialogs. The dialog is rolled up and flys in from the parent window. Well difficult to describe it with words. So here’s a video (of course speed is set to very slow):

Link for Planet or RSS readers

Currently you don’t want to use the effect if fade effect is enabled as well. The two effects have different durations, so the dialog is completly faded while still being rolled up.

Work on cube is still going on and new features are added. Yesterday for example I surrendered and implemented the 3D Windows feature due to many requests. So windows can hover above the cube. It’s actually one of those features I don’t like myself but Compiz has it, so it had to be implemented 😉

Once again an image says more than thousand words:
cube-3d-windows

There are still small glitches caused by the painting sequence, but nothing that couldn’t be solved.

Cube and pager

As it is quite obvious the cube effect cannot use the desktop layout defined by the pager. For cube the layout has to be

+--+--+--+--+
| 1 | 2 | 3 | 4 |
+--+--+--+--+

That’s basically how the user would expect the cube to work. All virtual desktops are mapped to the faces of a geometric object. That’s how we know it from Compiz. But this layout used by cube does not represent the actual layout which is in case of 4 desktops like that

+--+--+
| 1 | 2 |
+--+--+
| 3 | 4 |
+--+--+

In my opinion it is impossible to use this layout for cube. Of course you could do something like having just two faces and scaling the desktops so that (1,3) is on one face and (2,4) is on the other face. But that makes the cube effect kind of useless. It would require to have at least eight desktops in a 2×4 layout. But I don’t expect that someone using 8 desktops will ever use cube. I personally think cube effect is more for the normal user, but not for the power user. And I’d say having 8 desktops is kind of power using 😉

So cube effect has to ignore the desktop layout which is OK and even allowed by EWMH.

But when using cube to animate change of desktop via pager, via ctrl+f1-4 or via active desktop borders it should use the desktop layout. E.g. when you use the pager to switch from desktop 1 to 3 in the above shown layout you’d expect the animation to go down and not twice to the right. You’d expect the same behaviour as in slide animation.

For using pager and ctrl+f1-4 it’s still usable as it’s, but when you use active desktop borders and drag a window to another desktop it becomes painful. E.g. you drag a window from desktop 1 to the left. Thinking of the cube you will end up in desktop 4, but in fact you end in desktop 2. You move your window to the left, but receive an animation to the right. Even worse when you move a window to the top or down. Instead of having an animation going downwards or upwards you animate twice to the left or right. The animation does not reflect at all what triggered the animation. That’s probably one of the reasons why I myself do not use cube effect to animate the desktop change 😉

So you might have guessed it: I worked on improving this situation and there is a new solution to the problem available in my git branch. It will need some more work before it can be merged to trunk (there are more improvements than this one). While animating the desktop change cube follows the pager layout. That is changing from desktop 1 to 3 will result in an animation downwards, changing from 1 to 4 will result in an animation to the right and one downwards. Here’s a screenshot of what it looks like:
cube-vertical

The screenshot illustrates another new requested feature: you can keep the panels in place while the cube rotates. I like it very much and I think it will change from currently opt-in to an opt-out 😉 Of course this feature is not available in ctrl+f11 mode.

Btw currently it is the best time to request features for cube. At the moment I have no lectures and no upcoming exams. So I have lots of time and I am working on cube. So I’m waiting for your feature requests at bugs.kde.org 😉

No more video garbage

Good news to all Kubuntu and Fedora users. The cause for the video garbage appearing whenever a new window is opened has been discovered. A custom patch to xorg is causing the trouble. Now we can only hope that the distributions will provide updates for xorg without this patch. If you don’t want to wait that long and you are a Kubuntu user just add the following ppa to your sources.list and upgrade your system:

deb http://ppa.launchpad.net/adamspain/ubuntu intrepid main

The interesting thing is that NVIDIA knew about this patch for at least one month and started to work around it in their drivers. That’s great as it shows that they care about KDE and want to improve the KDE experience. The bad is that they did not communicate that a custom patch to xorg is responsible for the problem. Neither in KDE’s nor in Ubuntu’s bug report there is a comment from NVIDIA. And that’s sad. With a little bit more communication the problem would have been solved much earlier.

KWin 4.2 Screencast

Jos Poortvliet hat einen sehr schönen Screencast zu KWin in KDE 4.2 Beta 2 veröffentlicht. Diesen hat er auf blip.tv veröffentlicht. Hier der Link: Screencast

Der Screencast geht fast 10 Minuten und kann als Oggfile heruntergeladen werden. Es werden so ziemlich alle neuen Effekte aus 4.2 gezeigt und auch die verbesserten Konfigurationsoptionen. Und wie es sich für eine Beta gehört, ist er auch über ein paar Bugs gestolpert – diese sind aber größtenteils bereits behoben oder werden noch behoben 😉

Status Kubuntu mit KDE 4

Disclaimer: Ich drücke in diesem Post meine persönliche Meinung aus. Ich spreche weder für das KDE Projekt, noch für das Kubuntu Projekt, noch für das Ubuntuusers Projekt oder iregendein anderes Projekt mit dem ich in Verbindung gebracht werden könnte. Des weiteren bin ich in keinster Weise mit dem Kubuntu Projekt involviert. D.h. ich bin weder über irgendwelche Entscheidungen informiert gewesen, noch habe ich an ihnen mitgewirkt. Der Post ist alleine von meiner Arbeit als Supporter im uu-Forum motiviert und ich möchte hier nicht den Status der KDE 4 diskutieren. Der Status (Bugs und Feature Completeness) ist allgemein bekannt und es wurde bereits genug darüber diskutiert und auch von Seiten des KDE Projekts argumentiert.

Ich habe lange darüber nachgedacht, ob ich den Post überhaupt schreiben will und bin nun doch zum Entschluss gekommen, ihn zu schreiben.

Mit geht es heute mal um die Situation Kubuntu 8.10/KDE 4 und die Anwender. Ich bin ja Supporter im KDE Forum von Ubuntuusers und bekomme somit jeden neuen Thread mit. Und ich muss sagen, seit dem Release macht es eigentlich keinen Spaß mehr. Es tummelt sich von Beschwerden gegenüber KDE. Als Entwickler, der auch zu KDE 4.1 beigesteuert hat, ist es natürlich nicht schön, so etwas zu lesen. Immerhin opfere ich meine Freizeit für das Projekt, versuche den Anwendern eine bessere User Experience zu geben und man liest nur schlechtes. Ich bring jetzt einfach mal ein paar Beispiele:

  • “Ist ein schlechter Witz oder!!” […] “Sowas als Final zu vermarkten ist im grunde eine Frechheit, wenn ich in meiner Branche so einen Müll abliefern würde, dann gute Nacht, ich habe den Eindruck man wird von Canonical etwas veräppelt – hab ich nen dicken Hals – sorry das musste jetzt mal raus!!”
  • “nach dem Update auf Kubuntu 8.10 bin ich richtig erschrocken. Dass KDE 4 immer noch so unfertig ist hätte ich ehrlich gesagt nicht vermutet”
  • “aber ist die noch Alpha oder Beta ???”
  • “Funktioniert überhaupt etwas in diesem Release?”

Ist jetzt nur eine kleine Auswahl und ich habe mich gerade beim Suchen immer auf den ersten Thread Post beschränkt. Man sieht hier meiner Meinung nach zwei Sachen:

  1. Die Anwender haben offensichtlich das Upgrade gemacht ohne sich im Klaren zu sein, dass KDE 4 noch nicht ausgereift ist
  2. Die Anwender haben ein extrem hohes Anspruchdenken

Zum ersten Punkt. Es gibt im Adept Manager keine direkte und einfache Möglichkeit das Upgrade zu starten. Man muss Adept mit einem zusätzlichen Flag starten, um das Upgrade machen zu können. Dies wurde eingebaut, damit eben niemand aus Versehen auf Kubuntu 8.10 aktualisiert und zu KDE 4 gezwungen wird. Es ist also davon auszugehen, dass ein Anwender, der herausfindet wie man das Upgrade startet auch weiß, dass KDE 4 installiert wird, dass er weiß, was es bedeutet KDE 4 zu nutzen und dass er KDE 4 nutzen will. Nur um dieses weiter sicherzustellen hat Kubuntu natürlich auch weitere Informationen veröffentlicht:

This Intrepid release lives up to its name by including many changes, but there are some features that are not yet available in KDE 4. If you would rather stay with what you know then remember that Kubuntu 8.04 is still fully supported, see KDE3-KDE4Migration and Is KDE 4.1 for you? for more information on deciding. You can try it first with the Kubuntu Intrepid Live CD to see for yourself whether or not it really is “for you”.

(Quelle: Kubuntu 8.10 Refreshes the Desktop)

Nun gut, dies ist auf Englisch. Nicht jeder kann Englisch. Also schauen wir mal in die Ankündigung auf Ubuntuusers:

Achtung: Kubuntu 8.10 enthält ausschließlich KDE 4.1 und einige noch nicht portierte Anwendungen aus KDE 3.5. Dies bedeutet insbesondere, dass der neue Desktop zum Einsatz kommt. Ein Downgrade auf KDE 3.5 ist nicht möglich! Wer noch nicht auf KDE 4 wechseln möchte, sollte daher bei “Hardy Heron” bleiben. Nach Auslauf des Supports für KDE 3 im Oktober 2009 wird eine Upgrademöglichkeit auf Kubuntu 9.10 bestehen.

(Quelle: Intrepid Ibex 8.10 – Der “Unerschrockene Steinbock” ist da)

Wem das noch nicht reicht. Es gibt ja auch noch die Anleitung, wie man ein Upgrade macht:

Achtung! Es erfolgt ein Update auf KDE 4.1 und KDE 3.5 wird bis auf einige noch nicht portierte Programme entfernt. Insbesondere wird es nur noch den neuen Desktop geben. Wer noch nicht auf KDE 4 updaten will, soll bitte auf das Update auf Intrepid verzichten.

(Quelle: Upgrade auf Intrepid)

Nun frage ich mich: kann man von einem Anwender verlangen, dass er so etwas liest? Ich meine ja. Immerhin aktualisiert er das Betriebssystem. Niemand würde einfach so auf Windows Vista oder Mac OS X Leopard aktualisieren ohne vorher zu schauen was sich geändert hat. Ist es zuviel verlangt, zu sagen man soll bei Hardy bleiben? Immerhin hat Hardy als LTS Release (nicht KDE) drei Jahre Support. Also Kernel, X-Server etc. werden noch bis April 2011 unterstützt, KDE 3.5 immerhin bis Oktober 2009. Schaut man wieder auf Microsoft, so sieht man doch noch sehr viele Leute mit Windows XP arbeiten, ist noch sehr verbreitet und das ist, wenn ich mich richtig erinnere von 2002. Ist es da wirklich zu viel verlangt, zu sagen man soll eine halbe Jahr alte, noch unterstützte, Linux Version beibehalten? Lenny wird ja auch nicht gerade aktuell sein.

Womit wir beim Anspruchdenken der User wären. Anscheinend erwarten viele User, dass sie neue Software in Top Qualität bekommen. Natürlich, wenn Microsoft veröffentlicht, dann heißt es: “Warte auf das erste Service Pack – vorher ist das nicht benutzbar”. Warum herrscht dann bei Kubuntu solch ein Anspruchdenken? War es weil KDE seit 3.5 im Stillstand war? Keine neuen Features, dafür hohe Stabilität? Hat sich die Linux User Basis so schon verändert, dass es nun User gibt, die nicht mehr das alte Prinzip von “Release early, release often” verstehen?

Schauen wir uns doch mal die Optionen an, die Kubuntu meiner Meinung nach hatte:

  • Nur KDE 3 ausliefern: Nun ja, das hätte bedeutet, dass man auf KDE 3.5 weitere 18 Monate Support gegeben hätte. Ist das überhaupt noch möglich? KDE entwickelt aktiv nur noch KDE 4. Wer soll die Bugs beheben, wenn nicht die KDE Entwickler? Kubuntu hat nicht die Manpower alleine die Bugs zu beheben. Außerdem würde Kubuntu damit alle User verjagen, die KDE 4 wollen. Dazu gehören auch einige KDE Entwickler. Diese an andere Distributionen zu verlieren, wäre bestimmt nicht gut für das Projekt, da KDE Entwickler eher mal einen distributionsspezifischen Bug zurückmelden.
  • KDE 3 zusätzlich zu KDE 4 in Universe: Das hätte bedeutet, dass es auf KDE 3 keinen Support gegeben hätte. Wenn ich mir anschaue, wie viele Leute immer noch nicht verstanden haben, dass Kubuntu 8.04 kein LTS ist, dann wäre dies sicherlich auch schwer zu kommunizieren gewesen. Außerdem war das gleichzeitige Ausliefern von KDE 3 und KDE 4 in Hardy mehr als suboptimal. Hätte man das ganze nun umgedreht, wäre es bestimmt nicht besser geworden. Ja ich weiß, dass openSuSE in 11.1 sowohl KDE 3 als auch 4 ausliefern wird. OpenSuSE hat es in dem Punkt aber etwas einfacher. KDE 3 liegt klassisch im /opt/kde Verzeichnis und KDE 4 lieft ganz normal in /usr. Die Systeme behindern sich also nicht. Eigentlich sollte sogar beide KDE Versionen parallel in /usr zu verwenden sein. Das hat aber keine Distribution bisher ausprobiert und dass Kubuntu nicht den großen Feldtest macht, ist auch verständlich.
  • Nur KDE 4: Die Option, die Kubuntu auch gewählt hat. Meiner Meinung nach die richtige. KDE 4 ist aktiv entwickelt. Alle größeren Distributionen (außgenommen Debian Lenny) sind oder steigen darauf um. Der Zeitpunkt nach einer LTS ist auch ideal. Hier wird keine so hohe Stabilität erwartet (man denke an Edgy) und es ist einfacher zu experimentieren. KDE 3.5 ist über 7.10 und 8.04 immer noch unterstützt. Die User, die wollen, können umsteigen, die User, die nicht wollen, können ihr 3.5 weiterbenutzen. Eigentlich ideal…
  • Natürlich kann man auch einige Fehler und Probleme von Canonical/Kubuntu kritisieren. So auf jeden Fall die komplett fehlerhafte Übersetzung oder die Last-Minute Änderung des Bluetooth Stacks. Aber das hat ja nichts mit KDE zu tun. Insgesamt bin ich froh, dass wir jetzt KDE 4 in Kubuntu haben und ich hoffe, dass sich auch die Anwender damit zufriedener werden oder bei Hardy bleiben. Weiterhin möchte ich diese Nachrichten im Forum nicht mehr lesen, sonst werde ich nächste Woche den Support einstellen bis sich die Wogen geglättet haben und mich wichtigeren Dingen wie meinem Studium zuwenden.

4.2 Feature Freeze

Diese Woche war der Feature Freeze der KDE 4.2. Es können also keine neuen Features hinzugefügt werden und die verbleibende Zeit soll zum Jagen der Bugs verwendet werden. Feature Freeze bedeutet auch, dass sich meine selbstgebaute KDE nun so meldet:

Nein das ist über Pakete nicht zu haben und nein, die Beta ist noch nicht veröffentlicht.

Nun was wird denn 4.2 so bringen? Zum einen wohl alles was in 4.1 noch nicht so wirklich funktionierte. Plasma erreicht nun mehr oder weniger Feature Gleichheit mit KDesktop/Kicker aus 3.5. Ja es gibt Panel-Autohiding (nicht dass ich es bräuchte). Die fürchterlichen Darstellungsfehler im Systray sind endlich behoben (das für mich wichtigste Feature) und das Design des Panels wurde deutlich verschönert. Ach ja Fenster werden in der Fensterleiste endlich gruppiert und die Fensterleiste ist auch wieder mehrzeilig. Auch nicht so wichtig für mich, da ich meistens nicht mehr als 5 Anwendungen geöffnet habe, aber trotzdem schön.

Abgesehen von Plasma wurde auch sonst an allen Ecken und Enden gearbeitet. KWin schaltet Compositing jetzt standardmäßig ein und verwendet dazu einen cleveren Selbsttests. So ziemlich jeder Effekt wurde zu 4.2 hin überarbeitet, verschönert und verbessert. Besonders viel Liebe haben der Present Windows und Desktop Grid Effekt bekommen. Wir haben auch einige neue Effekte wie den Desktop Cube oder eine neue Magic Lamp minimier Animation. Auch an der doch etwas umständlichen Konfiguration haben wir gefeilt. Den Effekt zum Wechseln zwischen Fenstern (Alt+Tab) und Wechseln der Arbeitsfläche, kann man aus einer Dropdown Liste bequem auswählen und kommt somit auch an Einstellungen ran, die ansonsten irgendwo in den einzelnen Effekten versteckt wäre (wer wüsste schon, dass man Present Windows für Alt+Tab verwenden könnte?). Wir können nun global die Animationsgeschwindigkeit einstellen – also wer Zeitlupe will, kein Problem 😉 Die Einstellung für die aktiven Ränder versteckt sich auch nicht mehr in den einzelnen Effekten, sondern ist bequem über einen kleinen Monitor mit markierten Ecken auswählbar. Leider konnten wir die unübersichtliche Effekt Liste nicht überarbeiten. Das ist – für mich – das wichtigste ToDo für 4.3.

Konqueror lädt neuerdings Webseite richtig schnell. Kann nun in der Ladegeschwindigkeit locker mit anderen Browsern mithalten. KMail hat eine komplett neue Nachrichtenliste erhalten. War ein Google Summer of Code Projekt und ist einfach nur umwerfend. So stellt man sich einen Mail Client vor. Wirklich das worauf ich mich bei 4.2 am meisten freue.

So und da ich nicht alle Neuerungen kenne und sie aufzählen kann, verweise ich einfach mal auf den Feature Plan.

What’s going on with CoverSwitch?

Thanks to a cold and the decision not to attend classes today I found some time to work on CoverSwitch again and to blog about the new features I’m working on.

Some time ago I started to port CoverSwitch to new possibilities introduced by Cube. So we do not have to define an own perspective projection as KWin is already using a perspective projection. For those who are intersted: it is exactly the same projection matrix as used by Compiz. And I must say that CoverSwitch looks better now. The porting is not yet finished as there is a regression with multi screen setups. That’s the reason why it has not yet hit trunk.

Today I introduced a new feature I once saw at kde-look. Btw. kde-look is not the best place to inform developers about feature request. If I hadn’t visited kde-look on that day there would not be this new feature 😉 A thumbnail bar is added to CoverSwitch. So you can also see all windows additional as thumbnails. In fact the thumbnail bar is taken from BoxSwitch effect and modified to fit into CoverSwitch. So if you wondered why I added animations to BoxSwitch effect, now you know 😀

So here’s a screenshot:
Coverswitch with thumbnail bar

Another new feature is taken from Cube. You can define the position where the covers should be shown. A kind of zoom. So it is possible to have the covers far away:
Covers far away
Or very near to the front:
Covers very near to front

It is not possible to zoom while CoverSwitch is activated, but there is a nice slider in the config.

None of these new features has hit trunk yet. It currently lives in the “coverswitch” branch in Zarin’s git repository. So if you want to give it a try just pull the branch. But of course I hope to have it ready for 4.2.

I’ll present a video as soon as I finished all my new features.

Animated boxswitch effect

Today animation support for boxswitch hit trunk. So you can enable animation like in the Compiz one. The animation is optional. So if you don’t like animations you won’t see it.

Well what is better to show new animations than a video?

For those who don’t like Flash or want to see a better version of the video