GTK+ meeting notes

We had a GTK+ meeting during the Guadec BoF days. It was a long and good discussion touching on many issues. Notes from the session can be found here. Hard to summarize, but some highlights:

  • There’s a lot of interest in adding a flow box / grid companion to our new list box widget, and also adding a model-view separation. Expect to see work on this next cycle
  • We’re starting to make progress on clutter integration. Things are happening, but may not be ready for the next cycle
  • 3.10 will have pretty complete hi-DPI support. Just waiting on cairo, now.

GNOME / Wayland plans

In the interest of transparency (and for the benefit of Kristian, who had to leave before the BoF), I’ll quickly summarize the main decisions that were reached at the Guadec Wayland BoF today.

  • We are planning to have a tech preview of GNOME shell as a Wayland compositor in 3.10
  • GNOME shell will run on KMS, not just nested
  • We will keep the Wayland port of mutter on a branch for now
  • gnome-shell will build two binaries, for the X and Wayland compositor
  • Display configuration will work
  • In 3.10, we’ll keep input methods working as before, with client-side IBus. We will switch to using the Wayland text protocol and server-side IBus next cycle.
  • We may not get gdm to launch the tech preview, and fall back to launching the shell manually from a vt

For more details, see the feature page. That page also has a list of anticipated limitations of the tech preview.

Scrolling in GTK+

 

Scrollbars are hard to get right. They have very small click targets and are barely usable to make fine adjustments. In GTK+ 3, we’ve made a number of changes to scrollbars in the last few years.

  • We’ve removed the steppers
  • We made the scrollbar smaller and look more like an indicator
  • Clicking outside the thumb jumps to the position; paging is still available via right click

In particular the last change caused some heartburn. To compensate, we added a ‘zoom mode’, which scrolls slowly (1-1 correspondence between pointer movements and scroll delta). Unfortunately, it turned out to be too much of an easter egg. To trigger it, you have to hold down Shift while clicking on the thumb. The combined use of mouse and keyboard is also complicated for many users.

This cycle, we’re trying again to make scrolling useful. I’ve just merged patches by Jon McCann and Jakub Steiner to change the zoom mode is triggered. Click-and-hold or long press on the slider will now put the scrollbar into zoom mode. We’ve also added a visible feedback for this, which makes a big difference. To top it off, Jon added autoscroll – if you are scrolling in zoom mode and move the pointer above or below the widget, the scrolling will continue until you let go of the button. This turns out to be very nice. You should try it once GTK+ 3.9.12 is out.

Since the autoscroll is hard to capture in a screenshot, I’ve also made a little video to show it off.

Guadec – still going strong

We are into day 4 of Guadec in Brno now. The quality of the talks has been extraordinary. I sadly didn’t manage to catch any talks yesterday, but this morning, I saw a quick succession of excellent presentations.

The day started off with Cathy Malmrose of ZaReason telling us about the challenges of keeping hardware accessible and how she would like to offer a GNOME option for the laptops they are selling.

Next was Juan Pablo Ugarte showing his glade mastery. He was giving a talk about CSS support in glade that he has been working on recently, and how he has been using it to create custom, themed applications. During the talk it transpired that he not only writes custom applications with glade, but his presentation slides were done in glade as well, and exported as a pdf. Who know there was a presentation tool hiding in glade !

Right now I am listening to Stef Walter explaining how we can be more secure by taking the typical ‘security’ out of  software.

Stef WalterBehind the scenes, I’ve seen Wayland developers talk to Systemd developers, planning for a better future:

Mr. Systemd

Mr. Wayland

Guadec 2013 – day 2

The second day of Guadec is starting with a very inspiring keynote. Matt Dalio of Endless Mobile is sharing his vision for how to bring computers and the internet to the 80% of the worlds population that don’t currently have access to it, and how they are using GNOME in doing it.

Truly exciting. The world is changing, and we can be part of making it happen.

Matt Dalio keynoteThe audience is listening.

Keynote audience

Some GNOME 3.9 sightings

Today I spent some time building various branches and modules to see if I could find some early signs of the features that have been proposed for GNOME 3.10. It is still early in the cycle, we are just about to release 3.9.2 this week.

Here is my harvest of screenshots. Not all features are easy to capture in a screenshot, but see for yourself.

GNOME MusicGNOME Music is a new app for, well, playing music. Of course, it can’t yet compete feature-wise with e.g. rhythmbox, but it looks fresh and promising. And it plays my music already.

GNOME MapsGNOME Maps is a map viewer. It is still in its infancy – it does not do much yet beyond loading maps and showing me my location. But that will soon change.

gitg

Gitg is a git repository viewer. It has been around for a while. Recently, it has been rewritten in vala and it is getting a visual refresh this cycle.

Bijiben

Bijiben is a note-taking application, it was available as a ‘preview’ in 3.8 (and you can install it in Fedora 19 by running yum install bijiben). For 3.10, it will be much more feature-complete, data exchange with tomboy and online accounts is planned.

VideosTotem is getting a face-lift, picking up user-interface elements from other GNOME 3 applications (while not losing any features).

Status menuThe GNOME shell status area may be getting a design update, combining most of the hardware controls into a single menu.

That’s all the screenshots I could gather in an afternoon. If you want to learn more about the things that GNOME contributors and summer-of-code students are working on, you can look at the proposed features, or you can try out the latest code with OSTree or jhbuild.

GTK+ hackfest, wrapup and end

I had to take a day off from the hackfest on Tuesday to get a few things done in the office. The GTK+ hackers surprised me by collectively jumping on the bus and coming out to visit me in Westford. How sweet ! Yesterday we were back in the OLPC offices for the last day – much faster to get to the airport from Cambridge…

Discussions

In these last 2 days, we’ve discussed various non-technical topics, including Guadec planning, the 3.10 roadmap, regressions, etc. Before diving into these, here’s a little demonstration of scrolling under Wayland. This is a testcase we’ve used in evaluating drawing performance with the wip/simple-draw branch. It certainly shows that the Wayland backend is doing ok as far as drawing speed is concerned.

Scrolling, scrolling, scrollingOur Guadec presence will include at least two or three GTK+ talks, and we’ll also have a Wayland BOF, which should touch on GTK+ topics as well. If you haven’t submitted a talk yet, do so this week !

On regressions: There are a number of problems in git master currently. This includes growing infobars, the (temporary) loss of search in the file chooser, problems when drawing to client-side decorated toplevels, as well as numerous issues with window sizes.  We are aware of these, and will hopefully have most of these addressed before too long.

Merging all of the big pieces early in the cycle gives us enough time to find and fix these problems before 3.10.

Typing

On that topic, we’ve made a list of things that we still hope to complete and merge for 3.10 (I wouldn’t quite call it a roadmap).

EggListBox:

  • Alex will add support for row containers
  • We can improve the separator API by turning separators into properties of the row container
  • Model support should not block the initial merging

Simple drawing branch:

  • This should be ready for merging soon
  • The drawing model changes are considerable, but incompatibility should not be a problem unless you are using GDK without GTK+ (and who does that ?)

Support for hi-DPI displays:

  • Alex has hardware to work on this
  • the goal is to demonstrate it working at Guadec

Wayland tasks:

  • Clipboard cleanup: Benjamin is working on moving GtkClipboard to GDK, so we can cleanly support multiple backends at the same time
  • DND: a lesser priority, but also on Benjamin’s list
  • Owen got frame synchronization working with Wayland at the hackfest, and the performance is good
  • Client-side decorations: I’m going to introduce a second window again, to make things more compatible. widget->window will go back to being just the content area.

A few other things would be nice to get landed for 3.10, but these are less certain to make it:

  • Notification API (Ryan and Lars)
  • Action descriptions (Ryan)
  • GtkBuilder / action integration (Ryan)
  • Make GtkPathBar public and share it with nautilus (Federico)

Finally, there are things that really should be worked on, but don’t have a name behind them currently:

  • Popovers: We do have a prototype for this in GtkBubbleWindow, but it needs love
  • Touch: There are many details that we currently don’t get right

If you feel like you could be interested in working on either of these, meet us on #gtk+.

I hope to see most of the GTK+ team again at Guadec, this meeting was very productive.

css.php