One-command installer for the complete GIMP ecosystem on Linux: Flatpak GIMP 3, plug-ins, brushes, presets and extra features such as Photoshop-style shortcuts and AI tools.
Companion project of linux-mint-setup, which runs this setup automatically as part of a full machine install. It also works standalone on any distribution with Flatpak.
Run everything with a single command:
git clone https://github.com/diegochagas/gimp-setup.git && cd gimp-setup && ./setup.shTo preview the actions without changing anything:
./setup.sh --dry-runThe script is idempotent: run it again at any time to add what is missing.
Each run writes a log to logs/.
curl, unzip, jq, git, flatpak and python3 must be available.
No sudo is required — everything installs to Flatpak and the user home.
Optional. Copy the example file and fill in your values:
cp config.sh.example config.sh| Variable | Purpose |
|---|---|
GEMINI_API_KEY |
Free key for the Gemini provider — saved to the shared key files |
OPENAI_API_KEY |
Paid key for the OpenAI provider — saved to the shared key files |
WITHOUTBG_SERVER_URL |
WithoutBG server used by the background removal plug-in (default: local) |
They are written to ~/.config/PhotoGIMP/{gemini,openai}-api-key and
~/.config/PhotoGIMP/withoutbg-server-url on the host and inside the
GIMP Flatpak sandbox, where every AI plug-in finds them (see
docs/AI_PLUGINS.md).
config.sh is gitignored. Every variable also falls back to an environment
variable of the same name, so a parent script can export GEMINI_API_KEY=...
and run ./setup.sh without creating a config.sh.
The script stops if an unhandled command fails. It checks the dependencies,
the internet connection and the Flathub remote, then installs all the
features found in features/, in priority order. Everything the setup
does — including the GIMP install itself — is a feature file.
Every features/*.sh file is a self-contained part of the GIMP ecosystem:
the GIMP install, plug-ins, resources, shortcuts, menu options. New features
are added by dropping a new file into features/, without touching
setup.sh.
A feature file defines:
FEATURE_NAME="My Feature" # Display name for logs and summary
FEATURE_PRIORITY=65 # Execution order (lower runs first;
# optional, default 50)
feature_install() { # The work, using setup.sh helpers:
... # run, print_info, file_exists,
} # install_flatpak_package,
# gimp_profile_dirs, SUMMARY, DRY_RUN...Features must be idempotent and honor --dry-run (use the run helper for
commands and guard direct file writes with DRY_RUN).
| Priority | Feature | What it installs | Docs |
|---|---|---|---|
| 10 | gimp.sh |
Flatpak GIMP + G'MIC + Resynthesizer | GIMP.md |
| 30 | photogimp.sh |
Photoshop-inspired interface and configuration | PHOTOGIMP.md |
| 40 | photoshop-keymap.sh |
Photoshop keyboard shortcuts (shortcutsrc + controllerrc) | PHOTOSHOP_KEYMAP.md |
| 40 | slos-gimpainter.sh |
Painting brushes, dynamics and tool presets | SLOS_GIMPAINTER.md |
| 50 | linuxbeaver.sh |
LinuxBeaver GEGL effect plug-ins | LINUXBEAVER.md |
| 60 | ai-plugins.sh |
The three AI plug-ins + shared API keys | AI_PLUGINS.md |
The order matters: GIMP is installed first; PhotoGIMP layers its configuration on top; the Photoshop keymap runs after PhotoGIMP on purpose so its shortcuts win; the AI plug-ins run last so their files survive the configuration overwrites.
GIMP from Flathub with the G'MIC and Resynthesizer plug-ins. The plug-in
branches follow the installed GIMP's major version (Flathub publishes
them as branch 3, not stable). Resynthesizer adds
Filters > Enhance > Heal Selection. See docs/GIMP.md.
PhotoGIMP 3.0: a Photoshop-inspired interface and configuration for Flatpak GIMP. An existing GIMP 3.0 configuration is backed up to a timestamped folder first. See docs/PHOTOGIMP.md.
The SLOS-GIMPainter brush,
dynamics and tool-preset package, registered in GIMP's gimprc. See
docs/SLOS_GIMPAINTER.md.
The LinuxBeaver GEGL effect
collection (Filters > Text Styling, Filters > Render > Fun, ...), with a
manifest so reruns replace stale binaries cleanly. See
docs/LINUXBEAVER.md.
Two layers, installed into every GIMP 3.x profile with timestamped backups (details and customization in docs/PHOTOSHOP_KEYMAP.md):
- Photoshop keymap for GIMP — the community
photoshop-keymap-for-gimp
(
shortcutsrc+controllerrc, pinned to a commit and sanitized of a malformed upstream line). GIMP's shortcuts follow Photoshop's and show next to the menu entries like in Photoshop:Ctrl+Alt+IImage Size,Ctrl+Alt+CCanvas Size,Ctrl+LLevels,Ctrl+EMerge Down... - Keymap Extras — extra bindings for GIMP-only actions, layered on
top through the
PHOTOSHOP_KEYMAP_EXTRASarray on shortcuts nothing else uses:Ctrl+Alt+EFile > Overwrite andCtrl+Alt+Shift+WFile > Export As.
GIMP must be closed while this feature runs.
The three AI plug-ins, installed as one feature (details and API key setup in docs/AI_PLUGINS.md):
- WithoutBG —
Tools > WithoutBG > Remove Background…. Cuts out the subject via the WithoutBG server set inWITHOUTBG_SERVER_URLand adds the matte as an unapplied layer mask. No key needed. - Generative Fill —
Filters > AI > Generative Fill…. Fills the selection from a text prompt; also Image Generator and Layer Composite. Vendored patched GIMP AI Plugin with a provider switch: OpenAI (default), Gemini or SD WebUI. - AI Remove Selection —
Filters > AI > Remove Selection (AI)…. Photoshop-style Remove tool from PhotoGIMP: Quick Mask-paint the object, run, gone. Backends: Gemini, IOPaint (local), SD WebUI (local).
Shared settings from config.sh (API keys and the WithoutBG server URL)
are written for all of them, host and Flatpak sandbox alike.
- If GIMP has not been opened before the setup runs, the features that need
an existing GIMP profile are skipped with a warning. Open GIMP once, close
it, and re-run
./setup.sh. - The GEGL plug-in directory must contain only
.sofiles at its top level. Subdirectories or other file types may prevent GIMP from starting. - The script downloads software from third-party projects, so review the feature files before running it.