-
Notifications
You must be signed in to change notification settings - Fork 0
Backends and Platform Notes
This page explains how Aparoksha maps to each platform backend and what to expect.
Aparoksha acts as an umbrella layer over platform-specific implementations.
Current backend mapping:
-
ADWAITA→ Linux / libadwaita -
APPKIT→ macOS -
WINUI→ Windows
The Linux backend is centered around libadwaita / GTK.
Linux is a natural fit if you want:
- GNOME-style native apps
- deeper alignment with the Adwaita side of the ecosystem
- a platform that appears to be closer to the original design focus
- Swift toolchain
- GTK 4 development packages
- libadwaita development packages
If Linux is your main target, this is likely the most comfortable place to explore the ecosystem.
The macOS backend is exposed through APPKIT.
macOS is a good target if you want:
- a native Mac app feel
- a Swift-native toolchain
- to prototype and test quickly on Apple hardware
If your app is only for macOS, it may still make more sense to use pure SwiftUI directly. Aparoksha is more interesting when you explicitly want the cross-platform experiment.
The Windows backend is exposed through WINUI.
Windows matters if you want:
- native Windows-style desktop UI
- to explore Swift beyond Apple platforms
- a single conceptual app architecture across multiple operating systems
- Swift for Windows
- Windows App SDK
Choose one platform as your anchor first:
- Linux if you care most about Adwaita and GNOME
- macOS if you want the smoothest Swift-native local workflow
- Windows if WinUI is a first-class target for your app
Once the base app works:
- keep navigation simple
- keep window structure predictable
- avoid over-optimizing layout assumptions too early
- test dialogs and menu behavior per platform
- expect some visual differences
When needed:
APAROKSHA_FRAMEWORK=APPKIT swift run
APAROKSHA_FRAMEWORK=ADWAITA swift run
APAROKSHA_FRAMEWORK=WINUI swift run$env:APAROKSHA_FRAMEWORK = "WINUI"
swift runThis is useful for experimentation, but the preferred everyday path is still using the native default backend first.