Contributing
Thank you for contributing to tuna-installer-niri! This document provides instructions for building, testing, and developing both the Go backend and QML frontend.
Prerequisitesβ
- Go: 1.24+ (for building and testing the installer backend; follow the
version declared in
installer/go.mod. The Flatpak build uses its own pinned toolchain.) - Quickshell: Required for running the QML UI directly on Niri/Wayland
- Python 3 & PyQt6: (Optional) Required for running headless UI tests and screenshot generation
Building & Testingβ
Go Backendβ
To run backend tests:
cd installer
go test ./...
To build the backend binary:
cd installer
go build -o tuna-installer-backend .
QML Frontend & Headless Testingβ
To launch the QML frontend directly using Quickshell:
cd installer && go build -o tuna-installer-backend .
TUNA_BACKEND=$PWD/tuna-installer-backend quickshell -p ../ui/installer.qml
To run headless UI tests and capture screen walkthroughs (without Quickshell/Wayland):
pip install PyQt6
python3 tests/gui/capture-screens.py /tmp/screenshots
Flatpak Packagingβ
To build and test the Flatpak package locally:
flatpak-builder --user --install --force-clean build flatpak/org.tunaos.InstallerNiri.json
flatpak run org.tunaos.InstallerNiri
Pull Request Guidelinesβ
- Ensure
go test ./...passes cleanly ininstaller/. - Verify code readability and adhere to standard Go/QML formatting patterns.
- All commits must include DCO sign-off (
git commit -s).