# OmaPhoto OmaPhoto is a layered image editor for Linux, made first for [Omarchy](https://omarchy.org). It follows your Omarchy theme and switches with it. It is a Linux port of [Compositor](https://github.com/robbietilton/Compositor) by Wonder Assembly, a macOS app written in Swift. Compositor's source is the specification: OmaPhoto keeps its tools, its menus and its shortcuts (Ctrl for ⌘, Alt for ⌥). It reads and writes Compositor's `.comp` projects, so a project moves between the two apps. OmaPhoto is independent of Wonder Assembly. ## What it does - Layers, folders, masks, clipping masks, blend modes and opacity - Selections: marquee, lasso, magic wand, load from a layer, expand and contract - Brush, eraser, spot healing, clone stamp, smudge, blur and liquify, gradient, shapes, type - Move, transform and distort layers and selections - Levels, Curves, Hue/Saturation, Exposure, Gradient Map and Grain, as edits or as adjustment layers - Layer effects: stroke, drop shadow, color overlay, inner shadow - Filters: Gaussian and motion blur, noise, lens correction, Content-Aware Fill and Remove Background (U²-Net on ONNX Runtime, offline) - Crop, canvas size, image size; PNG and JPEG export - Imports JPEG, PNG, TIFF and HEIC ## Install Each script installs the newest release. The Arch, Ubuntu and Fedora scripts download its package, check it against the release's `SHA256SUMS` and install it with your system's package manager; the NixOS script builds the release's flake. Packages are built for x86_64. Arch and Omarchy: ```sh curl -fsSLO https://raw.githubusercontent.com/ZacharyZhang-NY/OmaPhoto/main/scripts/install/arch.sh && bash arch.sh ``` Ubuntu 24.04 or 26.04 LTS and systems built on them (Linux Mint 22, Pop!_OS 24.04): ```sh curl -fsSLO https://raw.githubusercontent.com/ZacharyZhang-NY/OmaPhoto/main/scripts/install/ubuntu.sh && bash ubuntu.sh ``` Each DEB names its Ubuntu release's libraries, so other Ubuntu releases and Debian build from source (below). Fedora: ```sh curl -fsSLO https://raw.githubusercontent.com/ZacharyZhang-NY/OmaPhoto/main/scripts/install/fedora.sh && bash fedora.sh ``` Fedora's own libheif decodes no HEVC. For HEIC import, add [RPM Fusion](https://rpmfusion.org/Configuration) and install `libheif-freeworld`; the script reminds you. NixOS installs the release's flake into your profile: ```sh curl -fsSLO https://raw.githubusercontent.com/ZacharyZhang-NY/OmaPhoto/main/scripts/install/nixos.sh && bash nixos.sh ``` Or add `github:ZacharyZhang-NY/OmaPhoto/`, a release tag, as a flake input and put its `packages.x86_64-linux.default` in your configuration. The packages themselves sit on the [releases page](https://github.com/ZacharyZhang-NY/OmaPhoto/releases). ## Build from source The build runs in Docker, so the host needs only Docker: ```sh scripts/dev.sh build # configure and build in Ubuntu 24.04 scripts/dev.sh test # every test, headless scripts/dev.sh run # build, then the app on your Wayland display ``` `run` gives the container your home folder at its own path, so the app opens and saves your files and reads your Omarchy theme, and the GPU's render nodes (`/dev/dri/renderD*`), which Mesa's EGL wants. Files outside your home folder stay out of reach. By hand: C++20, Qt 6.4 or later (Widgets, Concurrent, image formats), CMake, Ninja, libheif, fontconfig and ONNX Runtime. `-DOMAPHOTO_MODEL=path/to/u2net.onnx` installs Remove Background's model. `scripts/distro-check.sh arch|fedora|nixos|resolute` builds and tests on those systems (`resolute` is Ubuntu 26.04). ## Licence MIT, as Compositor is; see `LICENSE`. Remove Background uses U²-Net (Apache-2.0, `licenses/U-2-Net.txt`) through ONNX Runtime (MIT). Every package carries ONNX Runtime with its notices.