22 Nov 2011

A Wayland screensaver

Now that screen locking is done in Wayland demos, it is time to go for the eye-candy: full-screen idle animations, also known as screensavers. The first step was to port an existing screensaver to Wayland. I chose glmatrix from XScreenSaver, because it is cool, and it renders with OpenGL. This way I did not have to port Xlib based rendering to Cairo (yay!).

Here is GLMatrix running as a regular, windowed application on Wayland, using the toytoolkit:
GLMatrix on the Wayland demo compositor.
On Wayland, screensavers can be reduced to pure animation applications, while the compositor handles everything about locking. Next, we need a Wayland protocol extension to actually use this idle-animation in a screensaver'y way.

GLMatrix is already in the Wayland demo repository as a client called wscreensaver, and it requires cairo-gl, just like gears does.

21 Nov 2011

Screen locking in Wayland

This is continuation to my Wayland desktop-shell post.

My goal was to implement a simple screen locking feature, a similar idea to what xlockmore does for X. In Wayland it is much simpler and more reliable to implement than in X, because the implementation will be in the display server (compositor). While the "lock" itself is in the compositor, also an unlock dialog is required. The unlock dialog usually asks the user to input his password, but I settled for "click the green ball". Screenshots below...

Wayland misconceptions: Window

There are many misconceptions about Wayland, and I want to try to correct one. Let's start with the statement:

There is no object in the Wayland protocol that corresponds to Window in X.

Surprised? We need to take a step back to explain what that really means, and I will do it with the help of an example of a complex application: Firefox.

18 Nov 2011

Wayland desktop-shell

When I started on Wayland, it already had a fade to black type of screensaver, which triggered after an idle timeout. Actually, one should talk about wayland-demos and the demo compositor, as Wayland itself is just a protocol and a C-library implementing the protocol.

My plan was to add a locking feature. People usually like to lock their desktop when they leave, to prevent unauthorized access. Locking a desktop means that all windows should be hidden and interaction with any windows should be disabled. In X, implementing a lock requires lots and lots of tricks, and even then, you are not absolutely guaranteed, that it really works. In Wayland on the other hand, where locking can be implemented in the display server  which also manages all windows and input, you can be sure the lock holds.

The past summer

In the past summer I joined Collabora. After settling in and getting familiar with the self-employed status, I worked on Compiz for a moment, fixing bugs and helping the GLES 2 port. Then, I turned my interest to Wayland, and decided to implement some sort of screen locking.