Skip to content

Repository files navigation

Omapixel logo

Omapixel

A fast, simple, non-destructive layered image editor for Omarchy.

Every adjustment, effect, and style stays re-editable forever — with machine-learning tools for the things that should take one click.

License: GPL-3.0-or-later Qt6 GEGL Platform

Omapixel editing a layered document

Qt6 Widgets on a GEGL operation graph, following your Omarchy theme's accent colour live. One binary. No Electron, no Java, no Python runtime.

A full-featured editor with the interface of a simple one: four columns, a thin tool rail, and an inspector where density is bounded by named sections — not by a wall of sliders.

Warning

Omapixel is in active development. It works — you can open a photo, edit it non-destructively, and export it — but there are still bugs, rough edges, inconsistencies, and missing features. Expect the document format to change without migration. Try it, break it, and please report what you find.

Why

Nothing on Linux fills this niche. GIMP 3 finally has non-destructive editing, but its interface is the opposite of simple. Krita is excellent — and is a painting app. Darktable and RawTherapee are raw developers. Photopea is a web Photoshop clone.

"Simple, fast, non-destructive layered photo editor" has no Linux answer. Omapixel wants to be it.

What it does

omapixel               # the welcome screen
omapixel photo.jpg     # press A, switch on Basic, drag Exposure
                       # press F and pick an effect from the browser
                       # press T and click the picture to caption it
                       # press B and drag to paint, E to erase, R to repair
                       # or press M, drag a selection, and adjust only that
                       # or Shift+Backspace to remove the background

🎛️ Non-destructive everything

The layer stack is the document. There is no "apply" that bakes pixels, no flatten ritual, no "duplicate the layer first" superstition.

  • Twelve adjustments — White Balance, Basic, Hue & Saturation, Levels, Color Balance, Curves, Channel Mixer, Monochrome, Sharpen, Grain, Vignette and Replace Color — each a toggleable section that stays re-editable forever, with a live histogram above them.
  • Thirty-six effects across ten categories — blurs, distortions, halftone, tiles, generators — picked from a popover of live thumbnails and stacked in any order you like.
  • Four layer styles on every layer — Fill, Stroke, Inner Shadow, Shadow. A shadow is aimed with an angle and a distance; a stroke follows the layer as you move and scale it, and 10 px stays 10 px.
  • Hold </kbd> to see the original, Shift+</kbd> for a split before/after.

✂️ Selections that behave like selections

Seven selection tools — geometric, freehand, polygonal, magnetic, colour and quick — plus one-click Select Subject. A selection is a mask, so it feathers, refines, and survives a save, and every adjustment and effect stops at its edge.

🖌️ Text, vectors, paint

  • Text stays text forever. Caption a photo in two clicks; restyle a single word; set type along a curve. The attributes are the document, the pixels are a cache.
  • Shapes stay shapes. Six primitives, a full Pen tool with editable anchors, boolean combine with Shift/Alt, and a star whose point count you can still change tomorrow.
  • Six brushes, four knobs — size, softness, opacity, blend mode — plus repair, clone, and eleven retouch verbs. Select a mask in the layer list and the brush paints the mask, with the composite following live.

🤖 Machine learning, one click each

Feature What you get
Remove Background — Shift+Backspace A mask, not a cropped layer. A missed strand of hair is something you paint back in ten seconds.
Super Resolution — Alt+Ctrl+U 4× upscale of a layer, with exact undo.
Reduce Noise — Ctrl+Shift+D Denoising that doesn't smear detail.

Models (U2-Net, Real-ESRGAN, SCUNet — all permissively licensed) download on first use into ~/.cache/omapixel/models/, checksummed, cancellable with Esc. None of this is required: without ONNX Runtime installed, Omapixel starts, edits and saves exactly as before.

📂 Opens your files

  • Photoshop .psd — opens and saves back: groups, masks, 8/16-bit pixels, blend modes, opacity, clipping. What can't be carried is named in the info bar, never dropped in silence. There is no library behind this — none exists that writes a faithful .psd — so it is written here and verified against the flattened composite Photoshop embeds in every file it saves.
  • Pixelmator Pro .pxd — layers, groups, masks, editable text and shapes, both bit depths, blend modes. A document opened as .pxd saves back as .pxd, so the Mac on the other end of a Dropbox folder keeps working.
  • Drag a photo onto the canvas and it becomes a layer. Drop several; one Ctrl+Z undoes the lot.
  • Export with a measured, live file-size readout — PNG, JPEG, WebP (which keeps its colour profile, unlike the library underneath it), TIFF — plus quick re-export and named web slices.

🖥️ Made for Omarchy

  • Follows your live theme from colors.toml and re-themes instantly when you switch.
  • Ships a Hyprland rule that makes the window opaque — you cannot judge a colour or a mask edge through wallpaper translucency.
  • Never binds Super. That belongs to Hyprland.
  • Press ? for the keyboard sheet, generated from the app's own bindings, so it can never go stale.

Install

./install-omarchy   # dependencies, build, install to ~/.local, desktop entry

That installs the binary, the icon, the desktop entry, the .omapixel MIME type, and the Hyprland opacity rule — using Omarchy's own require_optional, so uninstalling can never break your window manager. pkgbuild/ builds the same thing as an Arch package.

Building from source

make check     # configure, build, run the headless suite, lint
make build     # build only
make install   # install to ~/.local
Packages (Arch)
Build qt6-base cmake gegl babl libzip
Runtime gegl babl libzip xdg-desktop-portal
Optional onnxruntime-cpu for the ML features

ONNX Runtime is opened with dlopen at runtime and is never a build dependency — the "no runtime" path is compiled and tested on every machine.

Design principles

  • The engine does the pixels. GEGL is a tiled, cached, non-destructive operation graph — the same engine behind GIMP. We never write a filter or a tile cache. The rare exceptions are measured, not assumed.
  • 60 fps is correctness. Pan, zoom and slider frame times are assertions in the test suite, not items in a backlog.
  • An option is a failure to decide. No preferences window. Every parameter has a default that is right for 90 % of photos.
  • Architecture deletes UI. When a screen feels complicated, fix the document model, not the screen. Non-destructive editing is why there is no flatten step and no destructive-action warning.

Current state & roadmap

Working today: layers, groups, masks and blend modes · the full adjustment, effect and style catalogues · selections · crop, transform, perspective · text and vector tools · painting and retouching · the three ML features · .psd and .pxd interop · export and slicing · welcome screen, presets, shortcut sheet.

Known rough edges: this is pre-1.0 software. Some tools are less polished than others, some interactions are inconsistent between panes, performance still has sharp corners on very large documents, and the native format will change without migration shims.

Explicitly not planned for v1: RAW pipeline, CMYK and prepress, video layers, AI image generation, a plugin API, batch processing, cloud sync.

License

GPL-3.0-or-later.

Omapixel's colour adjustments call four GEGL operations that GEGL ships under GPL3+ and refuses to instantiate unless the application declares a compatible licence, so the project declares one. See src/gegl/context.cpp.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages