Use GIMP for Photo Editing
Learn to edit photos in GIMP on Linux: layers, layer masks, RAW handoff via darktable, exporting to JPEG/PNG, and key plugins like G'MIC and Resynthesizer.
Before you start
- ▸A working desktop environment (GNOME, KDE, XFCE, or similar)
- ▸sudo or root access to install packages
- ▸darktable installed if you plan to edit RAW camera files
- ▸At least one sample photo (JPEG, PNG, or RAW) to work with
GIMP (GNU Image Manipulation Program) is a fully capable photo editor that ships in every major distribution's repositories. It handles layers, non-destructive masks, colour correction, retouching, and batch export. It is not Photoshop, but for most editing tasks it is more than enough — and it is free, scriptable, and actively maintained. This guide walks through the core photo-editing workflow: opening an image, working with layers and masks, handing off RAW files to darktable, exporting finished work, and extending GIMP with useful plugins.
Installing GIMP
Debian / Ubuntu
sudo apt update && sudo apt install gimp gimp-plugin-registry gimp-gmic
Fedora / RHEL (EPEL) / Rocky
sudo dnf install gimp gimp-devel
The gimp-plugin-registry equivalent on Fedora is bundled differently; extra plugins are installed individually or via Flatpak (see the Plugins section below).
Arch Linux
sudo pacman -S gimp
Flatpak (distro-agnostic, always latest stable)
flatpak install flathub org.gimp.GIMP
The Flatpak build runs well under both X11 and Wayland. If you see HiDPI scaling issues on Wayland, set Edit → Preferences → Interface → Icon Theme to a larger size, or launch with GDK_SCALE=2 gimp until GIMP 3.x (GTK4) lands.
Understanding the GIMP Workspace
GIMP defaults to multi-window mode. If you prefer a single application window (closer to Photoshop), go to Windows → Single-Window Mode. The three essential docks are the Toolbox (left), the Tool Options (below toolbox), and the Layers / Channels / Paths panel (right). Get comfortable with those three before changing anything else.
Working with Layers
Every non-trivial edit should use layers so you can adjust or discard changes without touching the original pixels.
Creating and organising layers
- Open a photo: File → Open (or drag a JPEG/PNG onto the canvas).
- Duplicate the background so you always have a clean copy: right-click the layer in the Layers panel → Duplicate Layer, or press Shift+Ctrl+D.
- Rename layers by double-clicking the name in the panel. Use meaningful names like dodge-burn or colour-grade.
- Change a layer's blending mode via the drop-down at the top of the Layers panel (Normal, Multiply, Screen, Soft Light, etc.). Soft Light at reduced opacity is a fast contrast boost.
- Merge visible layers before export: Image → Flatten Image. If you want to keep editability, save as
.xcffirst.
Adjustment layers via Script-Fu
GIMP lacks native adjustment layers, but you can approximate them. Create a new transparent layer, set the mode to Hue-Saturation or Color, and paint on it. For true non-destructive colour grading, use a Curves tool on a duplicate layer and reduce opacity. Alternatively, the GIMP-Paint-Studio and G'MIC plugins add richer non-destructive workflows.
Layer Masks
Masks let you hide or reveal parts of a layer without erasing pixels — the fundamental non-destructive technique.
- Select the layer you want to mask in the Layers panel.
- Right-click → Add Layer Mask. Choose White (full opacity) to start with the layer fully visible.
- Make sure the mask thumbnail (not the layer thumbnail) is selected — it gets a white border when active.
- Paint with black to hide, white to reveal, grey for partial transparency. Use a soft-edge brush at reduced opacity for natural blending.
- To apply a selection as a mask: make a selection first (e.g., with the Free Select or Fuzzy Select tool), then Add Layer Mask → Initialize from Selection.
A common use: brighten a sky on one layer, add a mask, and paint out the brightening from the foreground. Zero destructive edits to either region.
RAW Files: Handing Off to darktable
GIMP does not natively edit RAW files (CR2, NEF, ARW, DNG, etc.) with full demosaicing control. The standard Linux workflow is to develop RAW files in darktable first, then open the result in GIMP for compositing or retouching.
Install darktable
# Debian/Ubuntu
sudo apt install darktable
# Fedora
sudo dnf install darktable
# Arch
sudo pacman -S darktable
The darktable → GIMP handoff
- Import your RAW files into darktable's Lighttable view.
- Develop the image in darktable's Darkroom (exposure, white balance, noise reduction, lens correction).
- Right-click the developed image in Lighttable → Export selected → choose 16-bit TIFF at full resolution. TIFFs preserve more bit depth than JPEG for further editing.
- Open the exported TIFF in GIMP for compositing, retouching, or text work.
Alternatively, configure darktable's Send to application export option to pass the file directly to GIMP. In darktable: Export → Storage: send to and point it at gimp %f.
GIMP 2.10+ also includes a basic darktable RAW loader that auto-invokes darktable as a RAW importer when you open a RAW file directly. This works if darktable is installed; GIMP calls it silently and opens the result.
Colour Correction and Retouching
- Curves (Ctrl+M): the most powerful tone tool. Drag the RGB composite curve or individual channels. Pull the bottom-left point right to crush shadows; pull the top-right point left to lift highlights.
- Levels (Ctrl+L): simpler histogram-based correction. Use the eyedropper to set black and white points from the image.
- Hue-Saturation (Shift+Ctrl+H): selectively shift colour ranges without affecting others.
- Heal / Clone: the Heal tool (H) is the right choice for skin retouching and removing blemishes — it blends texture automatically. Clone (C) copies pixels literally and is better for edges.
- Dodge / Burn: use the Dodge tool (Shift+D) to lighten, Burn to darken. Keep exposure below 10% for realistic results.
Exporting Your Work
GIMP's File → Export As (Shift+Ctrl+E) handles all output formats. File → Save always writes .xcf (GIMP's native layered format). Never confuse the two when you want a JPEG or PNG.
JPEG export
# You can also batch-export from the command line:
gimp -i -b '(let* ((image (car (gimp-file-load RUN-NONINTERACTIVE "/path/to/input.tif" "input.tif"))) (drawable (car (gimp-image-get-active-drawable image)))) (file-jpeg-save RUN-NONINTERACTIVE image drawable "/path/to/output.jpg" "output.jpg" 0.90 0 0 0 "" 0 1 0 2 0) (gimp-quit 0))'
In the GUI, quality 88–92 is a good balance for web and print. Enable Progressive for web images. Disable Save EXIF data if you need to strip metadata before publishing.
PNG export
Use PNG for anything with transparency or text. In the export dialog, compression 6 is the default and fine for most uses; higher values shrink the file slightly but take longer to write.
Useful Plugins
G'MIC
G'MIC (GREYC's Magic for Image Computing) is the single most useful GIMP extension. It adds hundreds of filters: film grain simulation, inpainting, tonal effects, and a proper frequency separation workflow for portrait retouching.
# Debian/Ubuntu
sudo apt install gimp-gmic
# Arch (AUR)
paru -S gmic-gimp
Access it via Filters → G'MIC-Qt.
Resynthesizer
Resynthesizer is GIMP's equivalent of Photoshop's Content-Aware Fill. Select an object, then run Filters → Enhance → Heal selection.
# Debian/Ubuntu
sudo apt install gimp-plugin-registry
On Arch, install gimp-resynthesizer from the AUR. On Fedora, download the plugin binary from the project's GitHub releases and place it in ~/.config/GIMP/2.10/plug-ins/, then make it executable.
GIMP Flatpak plugins
If you use the Flatpak build, install plugins into ~/.var/app/org.gimp.GIMP/config/GIMP/2.10/plug-ins/. The Flatpak sandbox blocks system-installed plugins.
Verifying Your Setup
After installing, confirm GIMP can see its plugins:
gimp --version
gimp -i -b '(gimp-version)' -b '(gimp-quit 0)'
Inside GIMP, go to Filters → Script-Fu → Console and run (cadr (gimp-version)) to confirm the running version. Check Filters → G'MIC-Qt and Filters → Enhance → Heal selection appear if you installed those packages.
Troubleshooting
- GIMP crashes on launch with Wayland/NVIDIA: force X11 with
GDK_BACKEND=x11 gimp. GIMP 2.10 uses GTK3 with incomplete Wayland support on some proprietary drivers. - Plugins not visible after install: go to Edit → Preferences → Folders → Plug-ins and confirm the path. Restart GIMP; plug-in files must be executable (
chmod +x ~/.config/GIMP/2.10/plug-ins/resynthesizer). - RAW files open as grey blobs: install darktable or
ufraw(sudo apt install ufraw-gimp). GIMP needs an external RAW loader; it does not decode RAW internally. - Exported JPEG looks more saturated than the canvas: go to Edit → Preferences → Color Management and ensure the display profile and export profile match (sRGB for web).
- Script-Fu batch command exits immediately without processing: check that the input path is absolute, not relative. GIMP's batch mode does not inherit a working directory reliably.
Frequently asked questions
- Can GIMP open RAW files directly without darktable?
- Yes, if you install ufraw-gimp (apt install ufraw-gimp) or have darktable installed. GIMP 2.10+ calls darktable automatically as a RAW loader when available, but the development controls are limited compared to working in darktable's Darkroom directly.
- How do I save a file with layers intact so I can edit it later?
- Use File → Save (Ctrl+S), which always writes the native .xcf format and preserves all layers, masks, and paths. File → Export As writes flattened output formats like JPEG and PNG.
- Does GIMP work properly on Wayland?
- GIMP 2.10 (GTK3) has partial Wayland support. It generally works but some users see scaling or input issues on certain compositors or with proprietary GPU drivers. Force X11 mode with GDK_BACKEND=x11 gimp as a workaround. GIMP 3.x with GTK4 will have full Wayland support.
- What is the difference between G'MIC and the built-in GIMP filters?
- GIMP's built-in filters cover basics like blur, sharpen, and distortion. G'MIC is a separate image processing framework with over 500 additional filters including advanced retouching, simulation effects, and inpainting — far beyond what the built-in set offers.
- How can I batch-resize or batch-export many images at once?
- Use GIMP's Script-Fu batch mode from the command line with gimp -i -b, or install the 'Batch Image Manipulation' plugin (BIMP) which adds a graphical batch processor under Filters → Batch Image Manipulation.
Related guides
Linux Clipboards Explained (+ Clipboard Managers)
Learn the difference between Linux's PRIMARY and CLIPBOARD selections, use xclip, xsel, and wl-clipboard from the terminal, and manage history with GPaste or Klipper.
Configure LibreOffice for Daily Use
Configure LibreOffice for daily use: set default save formats for MS Office interop, tune autosave, install fonts, and add productivity extensions.
Configure the Touchpad and Multitouch Gestures
Configure Linux touchpad behavior and multitouch gestures using libinput, libinput-gestures, and native GNOME and KDE Plasma settings on both Wayland and X11.
Wayland vs X11: How to Choose and Configure Each
Know when to run Wayland or X11, how to check your current session, switch at login with GDM/SDDM/LightDM, and handle NVIDIA and XWayland edge cases.