GTK+ 3 on Windows

gtk-logo-48There have recently been some stories about applications switching away from GTK+ due to portability concerns. Therefore, I’m really happy to announce that we now have official GTK+ 3 builds for Windows. Currently, the supported version is 3.6.4. You can find these on the very informative download page:

http://www.gtk.org/download/win32.php

The driving force behind this was Manuel Bachmann (Tarnyko on irc). Thanks, Manuel !

We also have a page with instructions for GTK+ on OS X.

Montreal summit

Here is a belated update from the GNOME summit that is happening this weekend in Montreal.

Montreal at night

Jasper and I drove up from Boston Saturday morning, so we arrived a little late. Most people were already there, and there was a well-filled whiteboard with plans:

Ryan making plans

The weekend has been pretty productive so far.

We’ve talked about adding support for notifications to GApplication. This will allow us to get rid of the libnotify dependency and make our application API a bit more complete. This has been discussed for a while, on the gtk-devel list and at the last GTK+ hackfest and again at Guadec. Today, we agreed to merge the GIO patch (see bug  688492). It uses a GIO extension point to allow different implementations; currently we have implementations based on the freedesktop.org spec and on a new, nicer D-Bus API). It should be possible to write implementations for the native Windows and OS X notification APIs too. Help with this would be much appreciated !

Another session I have participated in is a design review and planning session for GNOME Boxes. We’ve done a pass over the UI and took notes about many smaller and larger issues, but we’ve also talked about new features such as multi-monitor support, import/export, snapshots and cloning, and how the user experience for these could look.

Getting ready to partyThe small piece of code I got to write this weekend is to bring back meaningful accessible names for icon-only buttons; these used to come from the GtkStock system, and we didn’t have them for buttons that are constructed from icon names or GIcons. This is an unfortunate regression in the otherwise good out-of-the-box accessibility support of GTK+, so it is nice to have it back. The fix will appear in GTK+ 3.10.2.

Another related session I participated in is a review of the Wayland port from an accessibility perspective with the GNOME accessibility team; we’ve identified a number of issues that we will have to address to keep our a11y support at the same level (such as giving the screen reader a way to identify the surface under the pointer).

GNOME / Wayland in Fedora

I’ve been itching to write this post for a while.

With the GNOME 3.10.0 release, we actually built mutter-wayland in Fedora 20, and enabled the Wayland compositor in the gnome-shell package. For a while, we were missing the xwayland support from our X server package, so gnome-shell-wayland would not actually run. As of today, with the very latest builds of xorg-x11-server, xorg-x11-drv-intel and mutter-wayland, it is actually possible to test GNOME under Wayland in Fedora 20. Note that these updates may not have made it into the updates-testing repository by the time this post appears.

Much of the credit for getting us this far goes to Giovanni Campagna, who writes about it here.

Of course, this is an early tech preview, so you should not expect wonders. The planning page for the Wayland porting effort lists the known limitations and regressions. The more noticeable ones are:

  • The generic Wayland driver is still under package review, so for now you can only try this with Intel graphics.
  • You can’t currently launch a Wayland session from gdm. To start a session, switch to a vt and run
    gnome-session --session gnome-wayland
  • Global keybindings don’t work
  • The touchpad support is very limited
  • The hot corner and pointer barriers don’t work
  • clutter-gtk applications (totem, cheese, …) display their content in the wrong place

But you can try it out, and that is huge milestone.

In the near future, we’ll focus on stability fixes and on addressing the most serious regressions. Our goal for the next cycle is to complete the port to the point where you can use it day-to-day without noticing it. There is still a lot of things that need to be done to get there, we are tracking this effort here. We are also going to discuss the Wayland port at the GNOME Montréal Summit in 10 days, feel free to drop by there if you are interested.

Help is very much appreciated.

One thing that would be helpful and can be done by anybody without expert knowledge of X or Wayland is to try applications and see which ones are working and which ones have issues. To try a GTK+ application with the Wayland backend, use

GDK_BACKEND=wayland <your-test-app>

This will only have an effect for applications using GTK+ 3, of course. There is no Wayland support for GTK+ 2. Applications using GTK+ 2 should transparently use the X server that is provided by xwayland.

 Update:

F20 alpha is not new enough for this. You need to run yum upgrade after installing the alpha, and then install the three aforementioned builds for GNOME / Wayland to work.