You Got A Question? Ask    GNOME Community!


GTK+ 3.10 Release!

GTK, GNOME’s toolkit for creating graphical user interfaces is lately on the media/blogs/socials spotlight and not for a good reason. GTK is criticized as no-modern and poor toolkit and many people even suggest that GNOME should switch to Qt -something that will never (never say never) happen.

If you look around in applications that are made with GTK, you will notice really bad interfaces in a very good apps (in functionality), and only the experienced devs (people that dedicated quite a  time) seem to deliver quality GTK Apps. In any case GTK never was a very attractive choice.

GNOME people are trying to reverse this situation, starting from version 3.8. First they promoted the popular Javascript over the hard C for creating Apps. Second, they started to provide documentation not only in GTK API but also in HIG (Human Interface Guidelines), which explains and demonstrates how to create elegant, user friendly interfaces.

All the above would be useless, if they didn’t also work to improve the GTK itself. There are massive improvements in GTK 3.10 and more will follow, like Responsive Design, Popup Windows, better Tabbing support etc.

Appart from GTK itself, there are also improvements in Clutter Toolkit, which many Apps embed in GTK and of course there is GTK Webkit and all those give the freedom to devs to create powerful and pretty applications.

clocks-cycles

Clocks feature an really nice animation!

Clocks Stopwatch View is a nice example of the capabilities of GTK to create what we call modern applications.

gnome-weather

Weather is another great looking app (and Athens has a great Weather!), so despite the weaknesses of GTK for devs, users can get quality apps.

toolkits-ohloh

GTK made a record high with 46 contributors in Aug 2013 equals the 46 contributors on Jan 2011. Of course those numbers while are better from previous years, aren’t encouraging at all for the size of the project, mostly if we take into consideration that only 2-3 devs do the most work. To make my point clear I also printed the Qt5 graphs, that shows 187 contributors in just one month.

A huge difference is that Qt has many more regular contributors and that is why the number of commits in Qt5 are multiple times over GTKs.

If you are interested on stats, you can check on Ohloh


GTK 3.10 Changelog

Major new features include:

Wayland

  • We support Wayland 1.2 now
  • The backend is much more complete now, with support for maximization, animated cursors, multiple monitors, settings, custom surfaces, frame synchronization

Broadway

  • Improve window size handling
  • Implement frame synchronization
  • Add support for password authentication
  • Broadway can be built on Windows now

OS X

  • Native input methods are supported

Major new features

  • Support for composite children has been added to GtkWidget. This allows to create complex widgets from GtkBuilder ui files. All complex GTK+ widgets have been converted to use this facility.
  • Client-side decorations are supported, including application-provided title bars with gtk_window_set_titlebar().
  • Support for scaled output (on high-dpi screens) has been added. This requires cairo master to work.
  • The fine-adjustment mode for scrolling has been made more discoverable, and visual feedback and autoscrolling has been added.

New widgets

  • GtkHeaderBar is a new widget similar to a GtkBox, with the extrafeature that it can center a child (typically a title), independent of the other content.
  • GtkPlacesSidebar is the sidebar widget in the file chooser, exported as a public widget – it will be shared with nautilus.
  • GtkStack is an alternative to GtkNotebook for showing one of several child widgets at a time. It supports animated transitions. Tabs are not built into this widgets, but instead provided by the separate GtkStackSwitcher widget.
  • GtkRevealer is a new new widget that can hide or show its child in an animated fashion.
  • GtkSearchBar -s a toolbar that will popup automatically when searches should be started, and dismissed when they are finished
  • GtkListBox is a vertical container that can sort and filter its children

Geometry management

  • Baseline support was added to the GTK+ size allocation machinery. Widgets can now export the baseline of the text they contain, and containers can align their children wrt to their baselines.
  •  Implement height-for-width for GtkEventBox and GtkCheckButton

Deprecations and removals

  • Support for the Motif DND protocol has been dropped
  • Support for multiple screens per display has been removed. This was only ever supported on X11, and is an exceedingly rare setup nowadays. The display-screen relation is now 1:1
  • gdk_window_get_display has been deprecated
  • gtk_widget_push_composite_child has been deprecated – this was not used for anything
  • Tear-off menuitems have been deprecated
  • We’ve started deprecating stock APIs, including GtkIconFactory, GtkIconSet, GtkIconSource, GtkImageMenuItem, GtkAction, GtkUIManager. These APIs will continue to work until GTK+ 4, so there is no need to rush to replace them.
  • A number of GTK+ settings have been deprecated and are ignored now.

gtk-widgetfactory-310

Widget Factory 3.10.1

For more details and lists of fixed bugs, see the NEWS file that is included in the tarball, or see:

For concerns about porting from older GLib release, see the README file that is included in the tarball, or see:

Where to get more information about GTK+
========================================

Information about GTK+ including links to documentation can be found at:

An installation guide for GTK+ is found at:

Common questions:

Contributing

============

GTK+ is a large project and relies on voluntary contributions. We are actively searching for new contributors in various areas and invite everyone to help project development. If you are willing to participate, please subscribe to the project mailing lists to offer your help and read over our list of vacant project tasks:

Thanks to the many people who contributed to this release in the form of bug reports, patches and translations.

September 23, 2013


Submitting Bugs

It would be very helpful if you have some time to file a bug that you will discover in GTK. Specially if you can run GTK against Wayland.

dialog-boxes

A bug that was forcing huge dialog boxes on large filepath names is gone! Remember, what is a common bug for you, maybe is unknown to devs!


 
  We can't watch comments unless G+ provides an API or if you send a notification, e.g +World Of Gnome
     Sometimes is better to place your questions on GNOME Community
  • foobar

    “””If you look around in applications that are made with GTK, you will
    notice really bad interfaces in a very good apps (in functionality), and
    only the top-class devs seem to deliver quality GTK Apps. In any case
    GTK never was a very attractive choice.”””

    Wrong. See Yorba. Some people would add Elementary OS to the list.

    “””Second, they started to provide documentation not only in GTK API but
    also in HIG (Human Interface Guidelines), which explains and
    demonstrates how to create elegant, user friendly interfaces.”””

    HIGs aren’t new. We had them before.

    “””First they promoted the popular Javascript over the hard C for creating Apps”””

    Also, Javascript is not a good choice for writing apps at all. There is no API documentation, debuggin is harder as whiping a Hipos ass due the lack of debuggin utilities. Gnome Music switched to Python because of that. Clocks is written in vala (there are 200+ gtk samples on valadoc.org), Weahter in Javascript. However, it is very likely one of the smallest programms in our collection.

    “””like Responsive Design, Popup Windows, better Tabbing support etc.”””

    I think you are confusing the stacks with tabs. They are different. We used tabs for UI-states. Stacks are a better way to do this. (Stack = the area where the content lives in, StackSwitcher = the buttons; you can use stacks without the switcher.)

    • alex285

      1. Obviously I am not talking about Yorba. If all devs were like Yorba’s one, the world would be different ..for real :)

      2. That is true. But I think in version 3.10, Gnome has -for 1st time- clear design goals for the apps.

      3. I just started to make some serious GJS Programming, so I will have a better opinion about GJS and Gtk in short future ;) Docs are missing, but whoever wants to learn he will :)

      4. Thanks for the correction on this!

      • foobar

        1.
        Yeah, Yorba is awesome. I totally agree. :) However, it is hard to
        make a point when the “opponent” adds exceptions to his statement. There
        are several good-looking GTK applications out there and various bad
        looking ones. However, in both cases it is about the invested time. I don’t
        know a lot of people who are willing to tune their GUIs. And, frankly, it is
        not worth it in several cases. It’s a little bit like jhbuilds GUI. It is helpful the very first time you use it but you won’t see it ever again. No one cares. Same goes for various utilities.

        2.
        Well, the one for 2.0 was fairly complete and clear too. The one for
        3.0 is simply not ready yet and different from 2.0. That’s all.

        It is just about documenting the new style the same way as we did for 2.0.

        3.
        Good luck. Gjs is fairly great for *small* applications / prototypes.
        Just do not make the mistake and confuse them with large/medium
        projects. There is a good reason why typing got stricter over time in
        various modern languages. I’m sure you’ll enjoy it.

        4.
        Welcome!

    • Arandas Allangate

      “Gnome Music switched to Python because of that.”

      Shockingly, you are correct. So, in its short life this project has gone from Vala to Javascript to Python. I wonder when it will be rewritten in Ruby, and I wonder how long it will take until they decide they want C after all.

      • foobar

        Well, the reason to switch to js was not because vala is bad in any sense but because some random guys decided to push javascript. The code base was so small, that it was just a matter of hours to rewrite it. A nice finger exercise for someone who wants to check out gjs. I got most of my gjs knowledge by porting an existing application by myself. (… and kept the original code base. I’d rather write my apps in assembler before I use gjs again. *I* didn’t enjoyed it.)

        The switch to python was necessary for sane development.

        • foobar

          Just a view other examples of recent ports:

          gnome-clocks: python -> vala
          gnome-calculator: C -> vala
          baobab: C -> vala
          gnome-games: C/Python -> vala

          gnomes translator: C -> vala (rewrite)

          (I’m not trying to say porting projects to vala is a good idea in general, just that porting an application to another language *might* make sense in some cases. Usually, it is not. But sometimes it is.)

  • Rajesh KSV

    Only 2-3 persons do most of this !!!!!!!!!! You must be kidding! (Jokes apart, surprised that only 2 can do all these and a bit sad that only 2 are working)

    • alex285

      Well, you can see the regular contributors ;)

  • http://blog.sudhirkhanger.com/ Sudhir Khanger

    QT had 10,000 more commits than GTK+. That’s mindboggling.

    • paul

      it is a shitty comparison. gtk is just a gui toolkit. qt5 includes much more. think (glib+gio+gtk+much more)

    • Enrico Badalamento

      really? how did you get the Nr. 10,000 more ?

      Qt commits last 12month : 13476
      Gtk commits last 12 month: 3111

      • http://blog.sudhirkhanger.com/ Sudhir Khanger

        13476 – 3111 = grossly 10,000 more commits.

      • Enrico Badalamento

        I thought that you mean 10 thousand times :-)

  • Goddard

    I think QT has seen more adoption(lately) because of its IDE/Developer tools.

    • shuchao

      I can’t agree more;Win has virsualStudio,Mac has xcode,KDE has Qtcreator,while gnome has nothing(anjuta is not very easy to use and humanistic; Gnome “new” Apps pleased the general users,similarly ,it also should please developers(a feasible method is to create a great IDE,after all,not very developer is a hacker of high-level developers)

  • Jekyll Wu

    “GTK, GNOME’s toolkit for creating graphical user interfaces”

    Well, that very first sentence makes the whole article redundant, because it already reveals the deep root cause of all those criticisms: GTK is changed from ‘GIMP’s toolkit’ into ‘GNOME’s toolkit’, and that brings trouble and pain to external developers .

  • Alex

    In my opinion the though that GTK has bad interfaces comes from very important programs like libreoffice or firefox that a lot of QT users use too, and really have ugly interfaces. But projects like elementary, yorba software or gnome itself shows that it can be very beauty. It would be great for GTK image that libreoffice had a better gui.

  • Wilbert Isaac Cortés González

    Just a question: does this release break some interface or part of the previous version? I like GNOME and the new look of the GTK apps; but as a developer I don’t like surprise just because with a non-major upgrade of the APIs I use.