PhotoTux is free software under the GNU GPL v3 or later, and the source is at github.com/PerkyZZ999/Phototux.
These documentation pages are for people using the editor. The developer documentation lives in the repository:
| What | Where |
|---|---|
| How to get started contributing | CONTRIBUTING.md |
| The engineering handbook — the authoritative description of the system | internal_docs/ |
| Why things are the way they are | Decision Register |
| Workflow, crate map, quality gate | Developer Guide |
| Reporting a vulnerability | SECURITY.md |
| Community expectations | Code of Conduct |
The short version
git clone https://github.com/PerkyZZ999/Phototux.git
cd Phototux
export PATH=/usr/lib/qt6/bin:$PATH
export QMAKE=/usr/lib/qt6/bin/qmake
./scripts/install-git-hooks.sh
cargo run -p phototux
Before pushing, rust-tc quick. Before opening a pull request,
rust-tc doctor — the full local gate: formatting, clippy, tests, doctests,
licence and advisory checks, unused-dependency checks and feature-combination
checks. Everything required runs on your own machine; there is no CI vendor to
wait on.
How it is put together
Six crates, with boundaries that are enforced by test rather than by convention:
| Crate | Owns | Stays free of |
|---|---|---|
phototux_engine |
Document, commands, history, session semantics | Qt, wgpu |
phototux_ui |
The qtbridge QObjects the QML shell binds to | wgpu |
phototux_canvas |
Qt ↔ wgpu interop and the thin C++ shim | Handwritten C++ beyond that shim |
phototux_gpu |
wgpu pipelines, shaders, compositing | Qt |
phototux_io |
.ptx, raster codecs, the PSD subset |
Qt, wgpu |
phototux |
The binary and the ahead-of-time compiled QML module | Business logic |
The core is headless by design, which is why the document, the command spine and the history can be tested without a GPU or a window.
Design direction
Two rules settle most interface questions.
Photoshop decides where. Panels, tools and menu entries go where Adobe Photoshop puts them, so that someone moving across does not have to relearn placements.
KDE Plasma 6 decides how it looks. Spacing, control shapes, focus and hover treatment follow Plasma, drawn from one token file.
Surfaces open on the controls most people need and reveal depth on demand.
Out of scope
So nobody spends a weekend on a patch that cannot be merged:
- Cloud storage, accounts, remote services, telemetry
- AI or generative features
- Multiple windows — documents are tabs
- A command-line or terminal interface
- A Windows or macOS port, for version 1
- Replacing the UI toolkit, the FFI, or the zero-copy present path — each needs a Decision Register entry before any code
Helping without writing code
- Report bugs, with the environment detail listed under troubleshooting. A well-described bug is worth more than a guess at a fix.
- Improve these pages. They live in
web/docs/in the same repository. Anything wrong, missing or unclear is an issue worth opening. - Say what you tried to do and could not. A description of the task tells us more than a description of the feature.