GIMP 2.9.8 Released

(Pat David) #1

I’m sure many of you know this already, but I apparently forgot to post about it here last night when amplifying social sharing. So here it is. :slight_smile:

From the site:

Newly released GIMP 2.9.8 introduces on-canvas gradient editing and various
enhancements while focusing on bugfixing and stability. For a complete list of
changes please see NEWS.

On-Canvas Gradient Editing

One of the most user-visible changes in 2.9.8 is the updated Blend tool.
Here’s what’s new about it.

First of all, it pretty much eliminates the need for the old Gradient Editor
dialog, as all of the dialog’s features are now available directly on the
canvas. You can create and delete color stops, select and shift them, assign
colors to color stops, change blending and coloring for segments between color
stops, create new color stops from midpoints.

Secondly, default gradients are now “editable”. As you probably know, the
reason most resources such as brushes, painting dynamics, and gradients are not
direclty editable is that they are typically installed into a system directory
where non-privileged user can’t make any changes.

Now when you try to change an existing gradient from a system folder, GIMP will
create a copy of it, call it a Custom Gradient and preserve it across
sessions. Unless, of course, you edit another ‘system’ gradient, in which case
it will become the new custom gradient.

Since this feature is useful for more than just gradients, it was made generic
enough to be used for brushes and other types of resources in the future.
We expect to revisit this in the future releases of GIMP.

Now that 2.9.8 is out with the updated Blend tool, we are interested in your
feedback, as we still expect some cleanup and enhancements to be done there.

Most of the programming was done by Ell, however we also want to acknowledge
two other people who contributed to that effort one way or another.

Michael Henning improved the Blend tool for 2.9.2, making the position of its
endpoints editable before applying the gradient fill.

Michael Natterer refactored source code of GIMP’s tools to make them reuse one
another’s on-canvas handles. That greatly simplified adding on-canvas handles
for color stops. He also added the generic on-canvas dialog with the most
important options for tools.

Clip Warning

Ell also implemented a feature request made in our public mailing list,
where Elle Stone asked for some way to visualize underexposed and overexposed
areas of a photo, which is a common feature in digital photography tools such as
darktable and RawTherapee.

The new Clip Warning display filter targets that use case and fills
underexposed and overexposed areas with user-configurable colors. For now,
it’s mostly geared towards images where colors are stored with floating point
precision. You will mostly benefit from this, if you work on 16/32 bit per
channel float images such as EXR and TIFF.

Implementing this feature as a display filter has certain disadvantages such
as having to go through the whole routine of adding a display filter for every
image. We are thinking of better ways to do this.

Color Management

GIMP now uses the babl library for doing conversion of images between color
spaces when matrix-based ICC profiles are used. This leads to completing
transforms ca. 5 times faster in comparison to LittleCMS v2 on a few test
images we tried this on. We expect to make further use of babl for doing color
transforms once the library supports ICC profiles based on lookup tables.

Wayland support

While we already had the screenshot plug-in working under GNOME/Wayland,
we now implemented screenshots for KDE/Wayland (though it misses rectangular
area selection

The Color Picker widget will now also work in KDE/Wayland.
Note that there is still no color-picking interface in GNOME for
, so as a workaround,
color picking will only work inside GIMP windows for this platform.

Color-picked and screenshot pixels are not color-managed yet in Wayland.

Paste in Place

Michael Natterer implemented another small feature request from a user who
asked for an Inkscape-like Paste in Place command. The idea is that GIMP
should be able to paste contents of the clipboard at exact coordinates the
contents was originally copied from. This feature is available for both the
regular clipboard and named buffers.

Paste in Place complements the usual Paste command which places contents
of the clipboard into the center of the viewport.

GUI and Usability

The spinscale widget now highlights vertical parts of the slider section
differently to hint that position of cursor above the widget matters.
When changing values in the lower step section, the pointer will be wrapped
around the screen so that you could continue adjusting the value without

spinscale widget highlighting lower area

When using transform tools, you can now press a modifier key before or after
pressing/releasing a mouse button.

The Info window for the color picker now remembers the modes across session.
So if you prefer seeing LAB values, that’s what you will see every time until
you choose something else.

Canvas rotation and flip information is now visible in the status bar, as angle
value and flip icon. Clicking on these canvas statuses will respectively raise
the Select Rotation Angle dialog or unflip the canvas.

Status about canvas rotation and flip

Help Manuals

Upon detection of locally installed manuals in several languages, GIMP will now
allow selection of the preferred manual language in the Preferences dialog
(Interface > Help System).

Manual localization settings in GIMP's preferences

This is especially useful since GIMP’s interface is available in 80 languages,
while its manual is translated to only 17
languages. You may therefore not have a choice of viewing the manual in your
preferred language.

Moreover, some people choose English over their native language for user
interfaces, while sticking to their native language for reading documentation.
This is another case where choosing preferred language for the user manual
might come in handy.

Improved Wavelet Decompose Filter

The much demanded Wavelet Decompose filter got a small round of updates
and gained a couple of new options: placing decomposition stack into its own
layer group and adding a layer mask to each scales layers. It also produces
more expected results now.

File Formats

The PSD plug-in was fixed to properly handle Photoshop files with deeply
nested layer groups and preserve expanded state of groups for both importing
and exporting. Additional changes fix mask position and improve layer opacity
for importing/exporting.

The PDF plug-in now supports loading password-protected files by promting
the user for password.

HGT files can now be imported. HGT is the format for Digital Elevation Model
data by the NASA and other space agencies
GIMP now supports both the SRTM-1 and SRTM-3 types (as far as we know, the
only two variants) which will be imported as grayscale RGB images.

NASA HGT file import followed by appropriate "Gradient Map" filtering

In order to obtain more visible relief information, you will want to map
altitudes to colors, for instance with the “Gradient Map” filter as we did
in the example image above (see also this explicative post on the


Translation of GIMP was updated for 13 languages: Catalan, Croatian, Galician,
German, Greek, Hungarian, Icelandic, Indonesian, Italian, Polish, Russian,
Spanish, and Swedish.

What’s Next

We’ll enter strings freeze soon so that translators could safely finalize their
work for 2.10. Following that we expect to start making release candidates
of GIMP 2.10.

From the ANNOUNCE email on gimp-dev:

Overview of Changes from GIMP 2.9.6 to GIMP 2.9.8


  • The default brush is now “Hardness 050”.
  • Verbose version (command line: gimp -v) now displays C compiler
  • Transform tools don’t commit identity transformation anymore.
  • Manual language can now be selected amongst all installed manuals,
    which is particularly interesting when no GIMP manuals are
    available in your GUI language. This will be proposed by default
    when a manual is not installed for the GUI language (alongside the
    possibility to read online) and the choice can be edited in
  • The statusbar now blinks on warnings and errors.
  • Paste in Place, available for regular clipboard and named buffers,
    allows pasting contents of either the clipboard a named buffer at
    the exact coordinates it was copied from.
  • Color Picker should now work on KDE/Wayland.
  • Color Picker now reads values under cursor in local windows making
    it work at least inside GIMP Windows on Wayland platforms with no
    color-picking capabilities (for instance GNOME/Wayland) yet.
  • OpenCL is now disabled by default. Depending on graphics cards and
    drivers, OpenCL acceleration is often slower than multi-threaded
    implementation, and can also sometimes be “glitchy”.
  • Now possible to open a locally-installed manual different from the
    GUI localization. The manual language choice can be customized
    through preferences when several manuals are installed. If no
    manual language has been selected already and no manual for
    current GUI localization is available, choice of help language
    will be proposed at first call to the manual.


  • Keybindings now possible for previous/next/top/bottom channel.


  • The spinscale widget now highlights vertical parts of the slider
    section differently to hint that position of cursor above the
    widget matters. When changing values in the lower step section,
    the pointer will be wrapped around the screen so that you could
    continue adjusting the value without interruptions.
  • Canvas rotation and flip information is now visible in the status
    bar (as angle value and flip icon). Clicking on these canvas status
    will respectively raise the “Select Rotation Angle” dialog or
    unflip the canvas.
  • Use abbreviated versions for long layer mode names. In particular,
    replace the “(legacy)” suffixes with “(l)” in the abbreviated
    versions, still showing the unabbreviated names in the full list.


  • Blend tool now features on-canvas gradient editing: adding,
    shifting, removing color stops, shifting midpoints and converting
    them to color stops, assignging colors to color stops, changing
    blending type for midpoints. Additional options: ‘Instant mode’
    (active before you start blending) to support the old workflow
    where you can’t edit color stops before applying the gradient
    fill, and ‘Modify active gradient’ which allows changing user-
    writable gradients directly rather than creating copies of them.
    Moreover, custom gradient is now saved and restored across
  • All transform tools: it makes no difference now whether a modifier
    is pressed before of after mouse button press/release.
  • Free Select tool selection can now be committed with double click
    as well (only through Enter key before). This allows smoother
    workflows on some setups, and in particular when no keyboard is
    available (e.g. tablet-like computers).
  • Layer group children now inherit the color tags of the parent by
    default, unless specific color tags are assigned. Inherited color
    tags show in a less saturated color than assigned ones.


  • When copying a generated brush, GIMP now copies its 'Spacing’
  • Rename “Wheel” dynamics labels as “Wheel/Rotation”. It turns out
    that Wacom Art Pen and Airbrush pen use the same axis for barrel
    rotation and wheel scrolling respectively. Therefore they already
    work in GIMP. “Unhide” the feature with more obvious labels.

Color management:

  • Use babl to convert between profiles if possible.

Display filters:

  • New ‘Clip Warning’ display filter to show underexposed and
    overexposed values. Target values below 0 and above 1.0, hence it
    only works on 16/32 bit per channel float images (such as EXR and
  • Display filters now operate in unbounded sRGB rather than in
    monitor color space.


  • Fix finding raw loaders on Windows/macOS.
  • Screenshot for KDE/Wayland has been implemented (full-screen and
    window screenshots only; rectangular area screenshots need
    implementation on the KDE side).
  • Screenshot can now add a delay between window pick/rectangular
    area selection and the actual shot, but only in platforms
    supporting the feature.

File formats:

  • PSD:
    • Fix mask position when opening/exporting.
    • Fix active layer selection during loading.
    • Fix potential group-layer naming conflict during loading.
    • Fix missing some attributes loading empty layers.
    • Fix reading files with deeply nested layer groups.
    • Load and save layer group expanded state.
    • Improve layer opacity loading/saving.
  • PDF: password-protected files can now be imported.
  • HGT: Digital Elevation Model data from NASA/NIMA can now be loaded,
    both SRTM-1 (1 arc-second) and SRTM-3 (3 arc-seconds).


  • Update GEGL-based filter Wavelet Decompose:
    • Add an option to keep the decomposition in a layer group.
    • Add an option to add layer mask to each scales layers.
    • Do not use ‘New from visible’ because it produces unexpected
      results; replaced by succession of layer copy and merge down.


  • Add file-pdf-load2 API to load password-protected and/or multi-page
    PDF files.
  • Add file-hgt-load to load HGT files, with aan rgument to select
    between SRTM-1 and SRTM-3 types.


  • Updated: Catalan, Croatian, Galician, German, Greek, Hungarian,
    Icelandic, Indonesian, Italian, Polish, Russian, Spanish.


  • Require LittleCMS >= 2.8.
  • Initial docker-based build environment for GIMP now available.
  • Warn against use of GCC 7.2 which has a bug breaking GIMP.
  • An official flatpak stable package is now available on flathub.

(Morgan Hardwood) #2

Fantastic, and also a great news article! Thank you GIMP devs, contributors, testers and article writers!


Great update with features that I have long waited for. You see, I have a love-hate relationship with GIMP. Now the needle is moving a little more toward love :heart:.

(Eduardo Bohoyo) #4

I would like to know if the tool for foreground extraction works fine without crashing or odditys when using implemented Levin-Matting algorithm.

(Boris Hajdukovic) #5

The development curve now gets an exponential growth :smiley:


With this speed, at the end of the year we will have GIMP 5.0 :rofl:

And yes:


Well, Firefox is at 57 :wink:.

(Jean-Luc Coulon) #7

Well, 2.10.0 will be the next real one!
In the git version, the NEWS file says now:
“Overview of Changes from GIMP 2.9.6 to GIMP 2.10 RC1”

So 2.10 will be here soon. :wink:

(Carmelo Dr Raw) #8

I have just finished preparing an up-to-date GIMP AppImage package from the latest BABL/GEGL/GIMP GIT versions, which you can find here.

The AppImage package includes a number of plug-ins:

  • Resinthesizer and liquid rescale plugins
  • RAW processing plugins (Darktable, RawTherapee, PhotoFlow and NUFRAW)

I am still working on the inclusion of the QT-based G’MIC plugin, hopefully I will sort this out soon…

The new AppImage package has been generated with a totally new configuration, which is based on a custom-built Docker container and Travis CI, for a fully automated procedure. At this point, updating the AppImage is as simple as re-starting a Travis CI job. Moreover, the whole configuration is available in the corresponding github repository, in case somebody will need or which to take over at some point.

As usual, any feedback is highly appreciated!

(Morgan Hardwood) #9

It works!

Sabayon, sys-libs/glibc-2.25-r9 installed.

“Legacy” icons work, “Symbolic*” icons are missing:

(Carmelo Dr Raw) #10

Thanks for the quick feedback! I have no idea yet what’s going wrong with the symbolic icons, but I’m looking into the issue.

(Tobias) #11

Perhaps @Jehan can help with the icons, he implemented the functionality in Gimp.

(Jehan) #12

Hmmm… I was called upon.

Looking at this log, it looks like that’s from a third-party appimage. For some reasons, it lists all the GDK pixbufloaders, which is weird, but helpful since I can see there is no! So here is your problem. The GUI cannot load SVG images since it doesn’t have the support.
Also normally this should have been detected at configure (there is a test to detect presence of this GDK module), but of course, maybe it was present during compile time but not packaged afterwards (no idea how AppImage building works).
Tell the package maintainer to package this if you want it to work.

I also see a bunch of other issues in this log. For instance it doesn’t find iso_639.xml so I guess localization support will be at least partially broken. Note that GIMP can be built without support, but if I see the error, it means that this file was present during build, but here again not packaged.
Warn the packager here too.

And why are all the RAW plug-ins (file-rawtherapee, file-darktable and third-party file-photoflow) crashing in your log when doing a g_spawn_sync()? That’s weird too.

(MareroQ) #13

There are 3 icons missing for windows (Page Setup,Help,Context Help).
Missing icons

(Carmelo Dr Raw) #14

It is a simple cat of the bundled loaders.cache file. By the way, the SVG loader seems to be there, at line 84 of the log file:


Good question… no idea for the moment, I am trying to find out. I do not get the same crash on other distros.

(Jehan) #15

Indeed. I apparently missed it.
Are the SVG icons properly bundled? Or did you bundle the symbolic icons as PNG icons instead (both options are possible)?

In any case, there is indeed a problem but I don’t think I would have the time to investigate this myself. I have just too many priority items which I have to handle. I can give input if you have any question while giving detailed info though.

(Carmelo Dr Raw) #16

Apparently yes, there are lots of svg files in the bundled


In any case I will continue my investigations after the Christmas break, and I will come back to you in case I have specific questions…


(Morgan Hardwood) #17

I appreciate your efforts!

(Carmelo Dr Raw) #18

Checking more carefully, I suspect it is a MIME detection problem… if I run the AppImage within a minimal Ubuntu Docker container, all icons are not recognized and generate a lot of GDK pixbuf errors, even if the corresponding loaders are available.

In principle I am bundling all the MIME types in the AppImage, and I set the XDG_DATA_DIRS environment variable to the bundled usr/share folder where the MIME database is also stored…
But apparently this is not enough.

Does anybody know how to set-up and use a MIME database located in a non-system folder?

(Carmelo Dr Raw) #19

I have just prepared an updated AppImage package, using GIMP git head from today and including a fix for the missing Symbolic icons.

Could you please test it whenever you have some time?

@Jehan the problem with icons turned out to be due to a corrupted icons.theme file in the AppImage bundle, while the gdk-pixbuf loaders are working properly…

(Morgan Hardwood) #20

The icons look fine now.

The text in the comboboxes in the grey, dark and darker themes is almost impossible to make out though:

Complete console log: