A new unstable version of GIMP has just been released and features layer groups, rich text formatting and more long anticipated features. Read on!

It's been almost a year since the previous unstable version of GIMP which is quite atypical for the project. There's a lot of changes, just listing all of them would take half of the review below. So let's focus on the changes that matter most. Here they are:

optional single window mode (beta);

layer groups;

locking layers, channels and masks;

rich text formatting;

improved painting dynamics;

tools presets;

OpenRaster support;

new brushes;

simple user interface language toggle.

Got interested? Download source code or a Windows build and play along!

Single window mode and related changes

Initially it wasn't planned to introduce single window mode before v2.10. At Libre Graphics Meeting 2009 Peter Sikking, usability architect who has been working with the GIMP team since 2006, provided only an outlook at possible new interface, there even was no functional specification at the time.

However Martin Nordholts figured out he was brave enough to give it a push and started working on single window mode in late September. Few months later most of the code was in place, the rest was tweaking this and that, and now first results are available to you.

Here is an example of what it looks like:

Well, as you can see, it's pretty much like a web browser right now: all images are in tabs, all dockable dialogs are docked to the only window. You can navigate between images by clicking on thumbnails or using the common Ctrl+PgUp/PgDown key combination.

As mentioned above, the new mode is optional, so if you are a hardcore tiling window managers fan, just don't use the switcher in the Windows menu. Besides in the current version GIMP loads in multiple window mode anyway due to some unfinished code. This will be addressed in further unstable releases.

The new mode resulted in a number of changes and cleanups here, there and everywhere. First of all, dialogs now can be docked vertically as well. That is, you can now dock tools options dialog to the right from tools toolbar, like on screenshot below, or give the Layers dialog its well deserved full vertical space when working on a complex project.

Another new feature is dragging contents of one image into another as a layer. Just pick thumbnail of an image in the tab caption, drag it to another image's caption, wait for the other image to open, drag further onto the image and drop it there. Contents of the first image will be flattened to a single layer (or, rather, a buffer) and placed above all layers.

There is also a new handy menu item in the Windows menu::

Apparently not everyone knows that one could use Tab to temporarily hide all docked dialogs. This feature has been available since forever, but now it's finally visible.

Tabs in the docked dialogs also couldn't avoid changes. They now have an automatic mode for captions. It works like this: if there is a free space to the right from group of tabs, GIMP will try to find a tab with an automatic caption and add text to the right of the icon to fill the empty space:

Apart from that a whole bunch of cosmetic changes was applied to GIMP: a new icon for Desaturation tool to make it different from Gradient Fill tool, an updated ps-menurc file that contains hotkeys from Photoshop CS4 and so on and so forth.

Layer groups

Being able to group layers is quite important when you work on complex projects, hence it is a quite popular among web designers, for instance. This feature also wasn't initially planned for 2.8 either, but then Mitch Natterer just went ahead and did it.

Let's just use the previous image as an example (I should have used masks there really, but I was lazy):

The button that creates a layer group is next to the right from New Layer button. By default a new layer group is created above currently selected layer. To move an existing layer into a group just drag and drop it over there. That's it.

There is no limit to how many groups you can nest, so you can go wild:

For consistence sake border of a layer group has a cyan line around it on the canvas, and the place to the left from layer group's caption in Layers dialog contains a thumbnail of group's projection (flattened representation), so when you collapse the group's tree you still have an idea what's inside and you can toggle visibility of the whole group on and off.

Locking content from changes

The work on layer groups resulted in implementation of yet another feature users had been asking for — locking pixel data from accidental changes.

Until now you could only lock alpha channel, but now you can protect actual pixels. For that just click the brush button above list of layers:

When you switch to a layer with locked pixels, every painting, color or transformation tool's cursor contains a "forbidden" icon:

Same thing is implemented for channels and paths. Of course, it won't protect data from applying filters.

Rich text formatting

I don't think much has to be said here. Just look at what you can do inside one text layer now:

The look of the text options toolbar on canvas will definitely change in the future. Most work was done by Mitch Natterer again. Another developer, Barak Itkin, is planning to implement inline text color change in the coming versions.

In the future other tools will also have their basic options rendered on canvas. There is a dedicated Google Summer of Code project for that this year.

Better painting dynamics

One of last year's GSoC projects was advanced brush dynamics. The student was mentored by Alexia Death who is in charge for all things painting in the GIMP project. She spent some time polishing the student's code and then merged it into main development branch. The user interface was developed with assistance from Peter Sikking.

The changes are rather radical: the events-settings matrix is removed from every brush based tool and now is available as part of a dynamics preset.

There is a number of default presets for brush dynamics available in a new dialog. Here is what it all looks like:

That is: you create a new brush dynamics preset, define options, give the preset a name and, if you wish, tag the newly created brush dynamic. The dynamic presets are preserved across sessions.

As you can see, the matrix is now four times as large as in stable version (2.6.x). Besides for each mapping of event to a brush parameter you can define a response curve. For that choose a brush setting from combobox under dynamic's name, click below to choose type of event and edit the curve.

New brushes

There is a plan to refresh GIMP assets in upcoming stable v2.8, because really the old default pack of brushes and patterns looks prehistoric. However, as Peter Sikking said, every proposed new brush, pattern and gradient will have to prove its usefulness for default bundle.

Right now there are four new acrylic brushes available in v2.7.1. These brushes (on illustration above) were created by Johannes Engelhardt. More changes are coming.

Tools presets

Saving and loading tools presets is one of the features that have been available in GIMP for ages but has never been used much.

I have a suspicion that it's because the user interface for that was barely usable: either you had to go through several levels of menus, or you had to use toolbar button that a lot of people disable to save screen space. Besides the presets were available just for a current tool.

So if you wanted to switch from a brush to a particular pencil, you had to choose Pencil tool first, and then choose a preset.

The new implementation is a bit like in Photoshop: there is a common list of all presets, but the difference is that this list is in its own dockable dialog..

A new preset is created from a current tool with all its current options, some of which you can override in a dialog that presents itself when you click a button to create a new preset:

To switch from one preset to another all you have to do is just click it.

OpenRaster support

OpenRaster file format project was started back in 2006 to make multilayer project data transferable between applications. Thus far it is supported by GIMP, Krita, MyPaint and upcoming versions of Pinta and Nathive.

Importing and exporting of ORA files in GIMP was implemented by MyPaint superhero Jon Nordby. Layer groups are not supported yet, but straightforward multilayer projects get transferred just fine. The work on the file format's specification is not completed yet, so there are some changes coming anyway.

Simple UI language toggle

Switching user interface language in GIMP has been giving willies to users ever since the project was started.

First of all, not everyone likes localized user interfaces. I tend to blame Adobe and Corel for not bothering to provide as many localizations as possible which consequently led to a) books on their software mentioning just English UI and b) pirated, hacked localizations of very poor quality.

Now a whole generation of designers and photographers thinks that English UI the Right Thing and localized user interface is Evil and Not Professional.

Apart from that some users have specific demands, like running GIMP in one language, while system's locale has some second language and the user him-/herself has some third native language.

So starting with this version GIMP has a very simple interface language switcher in the Interface tab of Preferences dialog. GIMP will still try to use language defined in system's locale settings by default, but now you can override that. After switching language you will have to restart GIMP.

Any other changes?

The full list of changes is available here.

What's next

Around this January Martin Nordholts decided to try estimating date of 2.8 release. He cooked up a list of features that are likely to go into this version and judging by experience figured out how much time each feature would need to be implemented. As a result release candidate of v2.8 is currently expected by the end of this year.

Apart from features that have already been started or even completed you might expect things like clipping/masking for layer groups, exporting to PDF, streamlined color management and improved assets management. Bear in mind, however, that some features like vector layers have already been ditched from v2.8 plan.

As for 2.10, the plans for this version are not set in stone. It is known that it will feature GSoC projects of this year (cage transform tool, more tools having options rendered on canvas) and is likely to feature unified transform tool for which a functional specification is already written by Peter Sikking.

Full GEGL integration is unlikely to enter 2.10, if the current state of affairs doesn't change to the better. With 3.5 active developers around (rather 2.5, for last couple of months) there is very little place for miracles. I feel there is a need to elaborate here a little to avoid confusions.

There are things the team aspires to do and there is reality in which achieving the goals is several years of hard work ahead. GEGL project already has a history of initial developers burnt out and quitting. You need several active contributors working in team to tame the beast.

The way I see it, getting new contributors involved is difficult when GIMP looks like a dinosaur winking back at you and grinning. An application has to look smart to attract interested developers. Therefore implementing a better user interface instead of starting work on GEGL integration right now is a good idea. You don't have to agree with me here, of course.

If you are developer who is interested in helping the team, but specifically interested in GEGL integration, you don't have to wait few years to get started. There is a number of changes that will be required to make this change happen anyway:

porting more file format loaders and savers to GEGL;

porting existing GIMP filters to GEGL operations;

implement support for 64bit per color channel precision.

So you are not a developer and still want to help the team? This is perfectly fine. As mentioned before, GIMP 2.8 is coming with new assets, so you could create good brushes and patterns that will be generic enough for a wide audience. A dedicated announcement on that will be sent out soon. You can also work on the default set of tutorials at gimp.org that currently look aging.

Remember: GIMP is a community project. The more community is interested in its evolution instead of using pirated Adobe Photoshop, the faster GIMP evolves. You might just like to contribute ;-)