- TypeScript 56.5%
- Rust 22.5%
- CSS 13.2%
- JavaScript 4.6%
- Shell 2.1%
- Other 1%
The Building section only described build-all.sh and implied it covered every platform. It does not: build-all.sh only builds on Linux and prints scaffolding elsewhere, and the Windows work now lives in build-win.ps1. - Platform table up front so it is obvious which script to run where - Windows section: build-win.ps1, the MSVC toolchain and WebView2 requirements, the inert mingw pin in .cargo/config.toml, and the untested cross-build path - Spell out that the two Windows artifacts are not interchangeable: dizako.exe is portable and GUI-only, the setup exe is an NSIS installer - Note NO_STRIP=1 for hand-built AppImages, since bundle.targets is now "all" and a bare `pnpm tauri build` on Linux otherwise dies on linuxdeploy with no usable error Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|---|---|---|
| .cargo | ||
| .github/workflows | ||
| assets | ||
| dither-wasm | ||
| docs | ||
| packaging | ||
| public | ||
| screenshots | ||
| src | ||
| src-tauri | ||
| templates | ||
| test | ||
| testdata | ||
| tools | ||
| .gitignore | ||
| build-all.sh | ||
| build-win.ps1 | ||
| eslint.config.js | ||
| index.html | ||
| LICENSE | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| THIRD-PARTY.md | ||
| tsconfig.json | ||
| vite.config.ts | ||
| vitest.config.ts | ||
Dizako
A dithering studio. Load an image, pick from 29 algorithms and 130 palettes, and decide which colours land in the shadows and which in the highlights.
Built with Tauri, React, and Material 3. Everything runs locally. No uploads, no tracking.
Algorithms |
Palettes |
Image |
What it does
Open an image, choose an algorithm and a palette, tune until it looks right, then export a PNG. Sliders re-render live. A compare wipe shows original vs dithered.
| Area | Includes |
|---|---|
| Error diffusion | Floyd-Steinberg, Jarvis, Stucki, Sierra, Atkinson, and friends |
| Ordered | Bayer, halftone screens, line screens, blue noise, checkerboard |
| Threshold / experimental | Hard threshold, random noise, Riemersma, dot diffusion, Omino-like |
| Palette layers | Colours stacked by tonal position, so you choose what goes where |
| Image controls | Exposure, contrast, gamma, saturation, hue, blur, sharpen (before dither) |
Building
Each platform has its own build script. Both compile the WebAssembly engine, build the frontend, and then bundle the app; neither cross-compiles, so run the one that matches the machine you are on.
| Platform | Script | Produces |
|---|---|---|
| Linux | ./build-all.sh |
.deb, .rpm, .AppImage, Arch .pkg.tar.zst |
| Windows | .\build-win.ps1 |
portable dizako.exe, NSIS installer |
| macOS | ./build-all.sh macos |
prints the steps only, see below |
Shared dependencies
Needed on every platform:
- Core build tools: Node 22+,
pnpm, Rust (cargo), andwasm-pack. - Rust Wasm target:
rustup target add wasm32-unknown-unknown, or therust-wasmpackage viapacman.
Linux
./build-all.sh
The script checks for missing dependencies, builds every bundle, and finally installs the Arch package it just produced via pkexec pacman -U. Each bundle is best effort, so one failing packager does not kill the rest.
Additional Tauri dependencies: webkit2gtk-4.1, base-devel, curl, wget, openssl, appmenu-gtk-module, gtk3, libvips, libayatana-appindicator. (On Arch, ./build-all.sh offers to install these for you via pkexec pacman.)
Windows
Run from PowerShell on a Windows machine:
.\build-win.ps1
The script validates its tools, compiles the WASM engine, installs dependencies, runs the Tauri build, then collects both binaries into a fresh release-win/ directory and prints their sizes. You get two artifacts, and they are not interchangeable:
| Artifact | What it is |
|---|---|
dizako.exe |
Portable standalone build. Launches straight into the GUI with no console window, needs no installation. |
Dizako_<version>_x64-setup.exe |
NSIS installer. Setup wizard, Start menu entry, uninstaller. |
Additional Windows requirements:
- Rust MSVC toolchain plus the Visual Studio Build Tools (C++ workload). Windows builds use MSVC by default.
- WebView2, which is preinstalled on Windows 11 and on current Windows 10.
.cargo/config.toml pins a mingw linker for x86_64-pc-windows-gnu. That only applies when you explicitly target the GNU toolchain and is ignored by the default MSVC build; delete that section if you want to build the GNU target without mingw present.
Cross-building Windows binaries from Linux needs the NSIS and mingw toolchains (pacman -S mingw-w64-gcc nsis or equivalent) and pnpm tauri build --runner cargo --target x86_64-pc-windows-gnu --bundles nsis. This is untested, which is why running the script on Windows is the supported path.
macOS
Scaffolding only, never exercised. ./build-all.sh macos prints the steps: install the Xcode command line tools, then pnpm tauri build --bundles dmg,app.
Manual build
If you prefer not to use the scripts:
# Compile the WebAssembly engine first
wasm-pack build dither-wasm --release --target web --out-dir pkg
# Install frontend dependencies
pnpm install
# Run the app
pnpm tauri dev # development mode
pnpm tauri build # bundle into src-tauri/target/release/bundle
Frontend only: pnpm dev / pnpm build.
Building the AppImage by hand? Set
NO_STRIP=1.bundle.targetsis"all", so a barepnpm tauri buildon Linux will try the AppImage, and linuxdeploy ships an oldstripthat chokes on the.relr.dynsections in current system libraries. Without it the bundle fails with an unhelpfulfailed to run linuxdeploy../build-all.shalready sets this for you.
Matugen theming
Dizako can take its accent colour from matugen:
- Copy
templates/matugen-template.jsoninto your matugen templates directory. - Point matugen at it:
[templates.dizako] input_path = "~/.config/matugen/templates/dizako-matugen.json" output_path = "~/.config/dizako/colors.json" - Run matugen, then pick Settings → Accent → Matugen in Dizako.
License
MIT.