A small, focused image editor for Windows: layers, masks, selections, brushes, adjustments and filters, with Photoshop-style tools and shortcuts and none of the bloat.
It is a Windows port of compositor-linux,
which is itself a Qt 6 / C++20 port of the macOS app
Compositor by Wonder Assembly
LLC. All three share one document model and open the same .comp projects, so
files move between them freely. The Mac sources under Compositor/ and
Compositor.xcodeproj are kept in this tree as the reference the port is built
against.
Filter > G'MIC: over 700 filters with their own controls and a live preview.
There is no prebuilt Windows installer yet: build from source in an MSYS2
MINGW64 shell, as below, and run build-win/src/app/compositor-linux.exe.
On Linux and macOS the upstream compositor-linux releases carry a self-contained AppImage and an Apple Silicon app bundle; the same sources build here unchanged.
Open an image with File > Open or drop it on the window, and go.
- Layers, folders, blend modes, opacity, and layer masks
- Move, scale, rotate and distort without losing pixels
- Marquee, lasso and magic wand selections; content-aware fill
- Brush, eraser, spot healing, clone stamp, smudge, gradient and shape tools
- Levels, curves, hue/saturation, exposure, gradient map, grain, blurs, noise
- Remove Background with a local model, if you turn it on in Preferences
- Text layers in any installed font, editable until painted on
- Opens Photoshop PSD files with their layers, folders, masks and blend modes
- The G'MIC filter library (700+ filters) through Filter > G'MIC, when
gmicis installed - Multiple projects in tabs; PNG and JPEG export
- The keyboard shortcuts you already know
The full list is in docs/features.md.
The Windows port keeps the whole editor and its automation surface, and adds a few things the platform needs:
- HEIC/HEIF import. Qt ships no HEIC plugin on Windows, so HEIC/HEIF files
are decoded through libheif when it
is installed (
-DCOMPOSITOR_WITH_LIBHEIF, on by default), falling back to a Qt plugin when the distribution provides one. Seesrc/app/Heif.cpp. - Automation over a named pipe.
--rpc-socket namelistens on\\.\pipe\name; the Python tools (tools/rpc_smoke.py,mcp/compositor_mcp.py) open the pipe directly, because CPython on Windows has noAF_UNIX.--headlessstill works, so the whole automation surface is available. - No DBus autolaunch hang. Qt6DBus is linked in for the XDG portal colour
scheme; on Windows,
main()setsDBUS_SESSION_BUS_ADDRESS=disabled:when no bus is configured, so libdbus never spawns adbus-daemonthat outlives the process and holds a caller's stdout pipe open.
Off by default. Edit > Preferences > AI background removal downloads a segmentation model (from the rembg project) into your data folder and runs it on your machine. Nothing is uploaded anywhere.
The editor can be driven by Claude Code or any MCP client: open files, inspect and edit layers, run adjustments and filters, and look at the result.
claude mcp add compositor -- uv run /path/to/compositor-windows/mcp/compositor_mcp.pyThen ask for things like "open photo.jpg, remove the background, add a dark gradient behind it and export result.png". Details, the protocol and the full method list are in docs/automation.md.
In an "MSYS2 MINGW64" shell:
pacman -S mingw-w64-x86_64-{gcc,cmake,ninja,qt6-base,qt6-svg,qt6-imageformats,libpng,opencv,libheif}
cmake -S . -B build-win -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build build-win -j
ctest --test-dir build-win --output-on-failure
./build-win/src/app/compositor-linux.exeThe root CMakeLists.txt sets _USE_MATH_DEFINES, NOMINMAX and
WIN32_LEAN_AND_MEAN for MinGW (its <math.h> hides M_PI otherwise, and
<windows.h> defines min/max as macros). OpenCV comes from MSYS2
(mingw-w64-x86_64-opencv) and supplies the DNN module Remove Background
needs.
Arch / Manjaro:
sudo pacman -S cmake ninja qt6-base qt6-svg qt6-wayland qt6-imageformats libpng opencvUbuntu 24.04:
sudo apt install cmake ninja-build qt6-base-dev qt6-svg-dev qt6-wayland qt6-image-formats-plugins libpng-dev libgl1-mesa-dev libopencv-devmacOS (Homebrew), where the build produces an app bundle instead:
brew install cmake ninja qt libpng opencv pkg-config
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$(brew --prefix qt)"
cmake --build build -j && open build/src/app/compositor-linux.appThen, on Linux:
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
./build/src/app/compositor-linuxdocs/linux-port.md has the build options, command-line flags, the source
layout, how releases are made and the keyboard shortcuts.
docs/linux-port-architecture.md explains how the port relates to the Mac
sources, which stay in this tree untouched.
This project stands on two open-source projects, and could not exist without them:
- Compositor — the original
macOS image editor by Wonder Assembly LLC, whose document model, compositor,
pixel routines and
.compformat this port reproduces. Its README is kept atdocs/upstream-README.md. - compositor-linux — the Qt 6 port this Windows port is built on; the portable C++ core, the Qt front end and the build system all come from there.
Both are MIT licensed. This project is MIT as well, see LICENSE. It also bundles nlohmann/json (MIT) and the Lucide icons (ISC).
