Kristian’s look on things

August 25, 2007

XFixes - the problem and the dirty workaround

Filed under: Compiz Fusion, Summer of Code, The GNU/Linux Desktop — kristian @ 10:02 pm

Summer of code is over, and by and large, things are working. I’ve gotten some text-caret stuff working through python, but on the POC level, and this would be the only missing part of my project, which I personally believe have exceeded the original goal in other areas. We WILL have text-caret tracking.

But, this post is about XFixes.

With Ezoom, there is an option to hide the original mouse pointer, and this is done through XFixes, and it triggers a bugged behavior. Basically, animated cursors will be reported as having width==height==1, and they’ll be invisible. What is worse, they will even be invisible after you unhide the cursor.

However, you need this for some of the best tricks ezoom can pull off. I consider the bug worth it in my daily use, because I use default cursors, so the only animated cursor I have, is the Firefox “page loading” one.

I recently applied a tiny patch that somewhat helps, it’s so simple, you can probably understand it with zero C knowledge, this is inside the “zoomUpdateCursor” function which is called when XFixes tells us a cursor change occurred, and we try to fetch the new one:


+ if (ci->width height

This means that if the new cursor has a width and height equal to or less than 1, we ignore it. Simple ass that. The result is that, when you are zoomed in and the cursor would otherwise go invisible, you won't see a change at all. It's a bit awkward, it's an ugly workaround, but it's so simple and I figure that it's better to have this than have no cursor at all.

The animated cursors will still be invisible when ezoom is NOT zoomed in, however, because X draws the pointer, not compiz, when we're not zoomed in.

I am interested in any feedback on the result of this hack, drawbacks you experience, success stories, anything.

August 13, 2007

Compiz Fusion released

Filed under: Compiz Fusion, The GNU/Linux Desktop — kristian @ 2:26 pm

After several months of work, we are finally ready to present Compiz Fusion as a release, Compiz Fusion 0.5.2.

The version number is derived from the Compiz version number we’re basing the release on, and is a developer release. Just like compiz just branched 0.6.0, we will be branching Compiz Fusion 0.6.0 now too, in hopes to get a “stable” release out soon.

This is still an important release, being the first release we’ve made. I’m not going to try to sum up everything changed, see the official release announcement for that, but I do feel like mentioning what I see as the most important parts, compared to pre-merge Compiz and Beryl.

First, we are using Compiz as the core of this project. We have extended the functionality of the core Compiz package by adding the Compiz Configuration System (CCS). This comes as a plugin (ccp), library and settings editor (ccsm) for now. CCS has been given a lot of work, and will set the foundation for future configuration work. In Beryl, the configuration system was a part of the core, and not really as powerful as CCS is.

Though many of these issues had been solved in different ways in Beryl, Compiz 0.5.2 has several Multihead related fixes, both for using multiple X screens, and one big one.

There are also too many new plugins to mention all of them, but from my point of view, expo and color filter are the biggies. Expo allows you to view the content of all viewports with the touch of a button, and move windows. The combination of Expo and Wall makes for an excellent replacement of Desktop Cube/Rotate.

I like color filter for the accessibility factor. We have always said that Compiz and Beryl provided accessibility improvements, but truth be told, up until this point, those improvements have been more or less coincidental. There have been very little direct work to improve the situation for visually impaired, but Color Filter and Enhanced Zoom are just that.

Both Color Filter by Guillaume Seguin and Enhanced Zoom by myself are created with visually impaired in mind, and both are Google Summer of Code projects for Ubuntu. Color Filter is mostly useless if you are not color blind, but still a very important step. Color Filter allows a user to filter certain colors, changing blue with another color for instance. Enhanced Zoom will probably be useful for anyone, but the main target group is still the visually impaired. I hope these will not be the last explicit accessibility enhancements we see.

There are many other significant changes and features. Besides the ones I mentioned, I think the sheer number of new plugins and features in it self is an important point. So many small and large new features have been added

I also believe we are making very good progress as a project in general. The difference between former Beryl developers and Compiz extra contributors are fairly blurred at this point. The result has been an increased professionalism in the project, despite “a couple of” flame wars. I hope this can be seen from the outside too, and eventually be seen in the product we deliver. If you asked me two months ago whether I thought this merge was the right thing, I could not have given you a straight answer. I can now.

Powered by WordPress