Files
OmaPhoto/README.md
T
雷电芽衣andClaude 8881bfead1 dev.sh run: home folder, render nodes, build first
Issue #1: run mounts the home folder at its own path with HOME there,
so the app reads the user's files and theme. Issue #2: each render
node passes with its group, which Mesa's EGL needs. run builds before
it starts the app.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-26 14:29:56 -04:00

72 lines
3.7 KiB
Markdown

# 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/<tag>`, 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.