I thought I’d do a quick analysis of Beryl from a ‘usefulness’ point, rather than the pure eyecandy you see everywhere. For the record, my machine is a few years old, an AMD Athlon 1800, with 512 Mb RAM, and I’ve got an NVidia GeForce 5200 FX — an pretty old model of graphics card these days, but you can still buy them new, and it works well enough for my needs (although some of the effects are noticeably sluggish
First, a hint to people using KDE - export KDEWM=beryl is the way to go — just put that line in your ~/.bash_profile. This way, beryl starts first of all, rather than first loading KWin. This speeds things up, but also avoids some bugs I found if KWin loads first.
It took me a while to configure everything. Setting up windows to appear on certain cube faces is too hard — it needs to be integrated into the context menu for the window, like it is in KWin.
Lots of things can only be discovered by the inquisitive i.e. pretty much all the shortcuts require going through dialogs in beryl-settings to find (and then usually change in my case, as I tend to use the ‘Windows’ key for all window manager and global shortcuts). I’ve now got pretty much ideal settings, but it would take a long time for a novice to get things into the setup I would demonstrate to them (but then again, I’m pretty fussy about this kind of thing — most people would just use a mouse).
Having got everything configured as I like it, I’ve got a list of things I consider genuine advantages:
- Switching between windows/desktops is snappier because windows are not having to be redrawn (at least it seems that way) due to an offscreen buffer. Moving of windows is also much nicer — the windows underneath are not redrawn.
- Edge flipping is much better with a cube. Because it takes time to do the rotation (not much once it gets going), you have opportunity to back out, and it’s not a case of magically appearing on another desktop — it’s very obvious what’s happened.
- The uninitiated can see how useful it will be much more easily. To explain to someone how multiple viewports/desktops work used to take a long time and they probably still wouldn’t believe you. Using a manual cube rotation, you can show it to them in 2 seconds (I did it today, with a real ‘wow’ response).
- Edge snapping is nicer in some ways with wobbly windows — the windows don’t jump about, instead they stretch and squash, and it feels much more ‘physical’, and it’s obvious what is happening. (Edge snapping itself actually works slightly better in KWin — it snaps before you get there, whereas in Beryl it sticks after you’ve got there). In general wobbly windows are not as useless as they seem — they make windows much more tangible.
- ‘Scale’ (like Compose on Macs) works great, and it works in combination with multiple desktops very well — you can access the window you want very quickly, and yet you still have multiple workspaces
- Windows fading/zooming in and out when they appear is somehow much nicer on the eyes. The visual clues that something has appeared/disappeared are nice.
- Window transparency is useful once you realise that there are shortcuts for changing the transparency of an individual window (Alt + mousewheel by default). This allows you to put something in the background (e.g. a browser window that you are waiting to load) and quickly change the transparency of the window that is in front slightly so that you can see when it has loaded.
- Zooming - you can zoom in on the whole desktop very easily (Win + mousewheel for me), which is nice for looking at the detail of a photo and things like that.
- ‘Beep’ - Beryl can reinterpret the ‘beeps’ that many applications make in response to invalid input and turn them into a visual clue — the whole window quickly expands and contracts like someone stamped on it. It’s a very nice effect, and much nicer than hearing a beep. It doesn’t work with all applications — I still haven’t succeeded get konsole/yakuake to do it, though xterm does (I’ve tried every combination of settings for interpreting the ‘system beep’ in konsole).
In general, the ‘windows-as-pieces-of-paper-on-a-desktop’ metaphor starts to come into its own when you can have multiple desktops, when you can shrink all the pieces of paper and put them side by side at a keystroke, when you can magnify your entire desktop in a fraction of a second, when you can ‘touch’ pieces of ‘paper’ and change their opacity at will, and so on. It has taken us this long for this metaphor to actually be much better than the physical thing it is copying.
- I’ve been afflicted by X crashing randomly — it’s a known bug. It happens about once every 10 hours with me, usually when there is some intense disk activity. Quite annoying, but hasn’t lost me much time yet.
- About once every 5-10 times I log in, X freezes very shortly after logging in. Quite annoying. I have to do a hard reset.
- An Nvidia bug means that once you open too many windows, you start get black windows appearing (for me, this condition isn’t too hard to trigger). You can fix it by changing the ‘Rendering Platform’ to ‘Force AIGLX’ and the ‘Rendering path’ to ‘Texture from Pixmap’. However, performance is then much worse - CPU maxes out when doing things like rotating the cube or things involving a large amount of transparency. This means that things like live preview of videos becomes very jerky or stops altogether, and music will pause if you spend more than about a couple of seconds rotating the cube or dragging windows around.
- Some normal apps have worse performance. Notably for me, this includes scrolling down by using arrow keys in the editor in Eric (a Python IDE)
The combined effect of these bugs has been annoying enough to make me go back to using KWin — in fact the last one in the list was the biggest. On a more powerful machine, I’m guessing some of these things wouldn’t actually be a problem. Things I’m missing the most are the nice ‘feel’ of everything (things fading in and out, windows being more tangible) and the ‘Scale’ feature. Previews of KWin for KDE4 look very nice, getting the most useful of the desktop effects with the stability of KWin, and I’m looking forward to that. I’m hoping the NVidia bugs will be fixed by then too :-)