Adventures in Wayland

I’ve spent the last two weekends with the GTK+ Wayland backend, trying to make some progress towards day-to-day usability. While there are still some big gaps, things are looking pretty ok now.

Window decorationsThis screenshot shows client-side decorations on a GTK+ window. You can see rounded corners and invisible borders – shadows are still missing. We use the proper resize cursors, depending on which directions the window can be resized. This is a combined work of Kristian and Rob, based on older work by Cody Russell.

SettingsThis screenshot demonstrates that GTK+ applications are picking up desktop settings now – in this example the cursor theme as well as the text size.

The support for settings in GTK+ is a bit complicated: We have a GtkSettings object which receives changes from the xsettings client in the X backend. These xsettings are provided by the xsettings manager that is part of gnome-settings-daemon, which in turns reads the settings out of GSettings.

In Wayland, there is not root window to store properties on, and no X selection mechanism to manage it. In principle, the compositor could provide a settings interface for clients to use. Since we don’t have that yet, the GDK backend reads the settings directly out of GSettings for now. That works fine and fits the Wayland philosophy of doing things client-side.

Keyboard supportThis screenshot tries to capture some improvements of the keyboard support. Key repeat is done client-side and similar to the settings, we pick up the configuration for it directly from GSettings. Keyboard state information is propagated, and causes the Caps Lock warning icon to be shown in the password entry.

The Wayland backend should also handle keyboard layout changes, but since weston does not support changing layouts at runtime, this has not been tested.

The tooltip on that icon shows that there’s some work left to be done on popup window placement.

Custom titlebarsOnce we have client-side decorations, it becomes very natural to allow custom titlebars, like the one shown in this example. This has always been possible: you could use old-style wm hints to tell the window manager not to put a titlebar, and do your own. Using gtk_window_set_titlebar() just makes this easier, and it does the right thing, regardless whether you are using client-side decorations under Wayland or traditional wm decorations under X.

All of the screenshots are with current git master of GTK+. Trying out Wayland is pretty easy if you are on Fedora 19. The gtk3 package has the Wayland backend enabled. Just install weston, and set GDK_BACKEND=wayland.

To learn more about the status of the GTK+ Wayland backend and the work that remains to be done, visit the wiki page.

Is your GNOME shell extension ready for 3.8 ?

GNOME 3.8 is right around the corner – we are working on the release candidate today. In 3.8, shell extensions get a lot more recognition; via the new Classic mode that is built with extensions.

Coral tree flowers // by Tatters

But there’s a whole universe of interesting extensions out there on extensions.gnome.org beyond the ‘official’ ones. Unfortunately, many of them are not currently marked as compatible with 3.8. Now is the perfect time to test your extension and make sure it is ready for the new stable release.

Recent GNOME 3.7 sightings

With GNOME 3.7.90, we’ve entered the feature freeze and focus on polish and on whittling down the blocker list (don’t expect all of these to be fixed, the list currently still contains a mixture of actual blockers and nice-to-have things).

But just before that, there was a mighty effort to get things landed. All that happened while I was travelling, so here is a somewhat late tour of new things that have appeared recently.

Document scrolling

Document editing

GNOME Documents has  a new scrollbar with integrated preview, and lets you edit Google docs in place. What you can’t see in these screenshots: it has also been turned from a clutter-gtk app into a  pure GTK+ app. Among other things, this solves performance and accessibility problems.

Region & LanguageThe control-center has kept up its pace of one new panel per release. Here we see the redesigned Region & Language panel.

Network profilesAny type of network

The network panel can now create multiple wired configurations (called profiles), and it lets you create things like bridges, bonds or vlans.

Background menuMessage tray menuIn GNOME shell, we have a new context menus on the desktop background and on the message tray. These can be opened both with a right click or a long press.

Applications

The shell overview will now show your the most frequently used applications in a separate tab.

GNOME 3.8 will be released at the end of March. If you want to try it before, we have a live image.