Documentation: A project Wiki is available with setup guides, examples, architecture notes, and platform-specific details: https://github.com/loosebird/aparoksha-template/wiki
Minimal starter template for an Aparoksha app targeting:
- Windows via WinUI
- macOS via AppKit
- Linux via libadwaita / GTK
This template is intentionally small so you can publish it to GitHub and start customizing immediately.
It makes sense to keep GitHub Actions in the template.
Aparoksha is a cross-platform desktop framework, so architecture and OS regressions are easy to miss if you only build locally. Shipping the template with CI gives you a ready-to-use baseline for:
- Linux
x86_64 - Linux
arm64 - Windows
x86_64 - Windows
arm64 - macOS
arm64 - macOS
x86_64 - an extra macOS universal binary build
You can always simplify the workflow later if your app becomes platform-specific.
- Swift Package project
- Minimal multi-window app
- Sidebar navigation with
FlatNavigation - Sample carousel view
- Sample alert with text input
- Helper run scripts for macOS, Linux, and Windows
- Helper build scripts for macOS, Linux, and Windows
- GitHub Actions workflow with cross-platform runner matrix
- SwiftFormat configuration and helper script
- SwiftLint configuration and helper script
AparokshaStarter/
├── .github/
│ └── workflows/
│ └── ci.yml
├── Package.swift
├── README.md
├── .gitignore
├── .swiftformat
├── .swiftlint.yml
├── scripts/
│ ├── build-linux.sh
│ ├── build-macos.sh
│ ├── build-windows.ps1
│ ├── format.sh
│ ├── lint.sh
│ ├── run-linux.sh
│ ├── run-macos.sh
│ └── run-windows.ps1
└── Sources/
└── AparokshaStarter/
└── main.swift
- Swift 6 toolchain
- Internet access the first time Swift Package Manager resolves dependencies
Install GTK 4 and libadwaita development packages.
Examples:
# Fedora
sudo dnf install gtk4-devel libadwaita-devel
# Ubuntu / Debian
sudo apt install libgtk-4-dev libadwaita-1-devThe default backend on macOS is APPKIT, so you can usually start there.
If you want to test the ADWAITA backend on macOS too:
brew install libadwaitaInstall the Swift toolchain and Visual Studio components required by Swift on Windows.
swift run AparokshaStarter# macOS native backend
APAROKSHA_FRAMEWORK=APPKIT swift run AparokshaStarter
# Linux / libadwaita backend
APAROKSHA_FRAMEWORK=ADWAITA swift run AparokshaStarter
# Windows / WinUI backend
APAROKSHA_FRAMEWORK=WINUI swift run AparokshaStarterchmod +x scripts/run-macos.sh
./scripts/run-macos.shchmod +x scripts/run-linux.sh
./scripts/run-linux.sh./scripts/run-windows.ps1chmod +x scripts/build-macos.sh
./scripts/build-macos.shThis script builds the macOS binary once for arm64 and once for x86_64, then merges both outputs into a universal binary with lipo.
chmod +x scripts/build-linux.sh
./scripts/build-linux.shThe output is copied to dist/linux/<arch>/AparokshaStarter.
./scripts/build-windows.ps1The output is copied to dist/windows/<arch>/AparokshaStarter.exe.
This template includes:
.swiftformatfor SwiftFormat.swiftlint.ymlfor SwiftLintscripts/format.shto format the projectscripts/lint.shto run formatting checks and lint checks
Official project: https://github.com/nicklockwood/SwiftFormat
brew install swiftformator with Mint:
mint install nicklockwood/SwiftFormatOfficial project: https://github.com/realm/SwiftLint
brew install swiftlintor with Mint:
mint install realm/SwiftLintFormat the code:
chmod +x scripts/format.sh
./scripts/format.shLint the code:
chmod +x scripts/lint.sh
./scripts/lint.shThe helper scripts add /opt/homebrew/bin and /usr/local/bin to PATH, which helps on Apple Silicon Macs when the tools were installed with Homebrew.
The included workflow now does three things:
- runs SwiftFormat and SwiftLint on macOS
- native release builds on GitHub-hosted runners for the main architecture and OS combinations
- an extra universal macOS build on
macos-latest
Current runner matrix in the template:
ubuntu-latestubuntu-24.04-armwindows-latestwindows-11-armmacos-latestmacos-15-intel
You can trim this list if your repository does not need all architectures.
Start by editing these values in Sources/AparokshaStarter/main.swift:
- app id
- app name
- website URL
- issues URL
- developer name
- version
- pages and views
- The upstream Aparoksha project is still evolving, so APIs may change.
- This template uses the upstream
mainbranch because that is how the current umbrella package is wired. - On each platform, prefer the native default backend first.
- The workflow uses Homebrew to install SwiftLint for the quality job and a third-party Swift setup action so the same template can cover Linux, macOS, and Windows runners in one place.
- If you want stricter control, pin the action to a commit SHA and/or replace GitHub-hosted runners with self-hosted runners later.