There has been a lot of anticipation for the release of GTK 4 for the past few years. Partially because the use of GTK 3 completely changed the game for the GNOME desktop environment, but it also added plenty of new features and really has become a modern, mature, and excellent graphical user interface toolkit. Now, many are wondering where the GTK developers are going to take GTK 4 for the future of application development on Linux.
As one of the most important steps towards GTK 4, the GNOME Project (stewards of the GTK toolkit) have released the final iteration of the current toolkit, GTK 3.99. By looking at the work that has been put into this release as well as the talks from GTK developers at the annual GUADEC conference, its clear to see that there is an emphasis on cleaning up the codebase, fixing major architectural problems, and providing more futuristic looking widget classes for developers.
Back in February, with the release of GTK 3.98, the GTK developers made a list of all the items they wanted integrated before releasing the feature-complete 3.99 version. From their official release notes:
- “Event controllers for keyboard shortcuts
- Movable popovers
- Row-recycling list and grid views
- Revamped accessibility infrastructure
- Animation API“
Well, I’m happy to report that the GTK developers have successfully implemented all of these target goals for 3.99, except for the Animation API, “since it requires more extensive internal restructuring, and we can’t implement it in time“.
In addition to the above implemented features, the GTK developers also spent a significant amount of time working on their new scalable list infrastructure, something that developers have been asking about for some time. In addition, Christian Hergert, Red Hat employee and the mind behind the GNOME Builder IDE, has worked diligently on a new macOS GDK backend that has been merged into the project, despite a few problems that need some polishing. As well as this exciting new functionality, other smaller regressions were fixed–from tiny aspects like spinbutton sizing to treeview cell editing–and beyond.
The GTK team also commented that this would be a great time for GTK developers to start looking at porting their applications to the new GTK 4 standard. Of course, not every application will be able to accomplish this due to indirect dependencies on GTK 3 and the libraries that have not yet been ported to GTK 4.
This is awesome and extremely exciting for a GTK user such as myself. I’ve been keeping a close eye on the development of GTK 4 and the talks at GUADEC (that are just starting to show up in video format) sound really promising overall. Of course, there will be a lot of work to do in the upcoming months as GTK 4 becomes finalized and the transition will likely take quite some time. However, it is nice to see this massive step taken. Congrats to all the GTK developers out there working really hard to improve the product and overall experience of using GTK to build applications!
There is a ton of news regarding new items in GTK 4 that can be found at the end of the GTK 3.99 release announcement here. If you would like to follow along with GTK development, you can find them on Twitter, their news blog, and their official website. In addition, Matthias Clasen’s virtual talk regarding porting applications from GTK 3 to GTK4 from GUADEC 2020 is linked below: