Skip to content

Backends and Platform Notes

Vinícius Costa edited this page Apr 12, 2026 · 2 revisions

This page explains how Aparoksha maps to each platform backend and what to expect.

Backend overview

Aparoksha acts as an umbrella layer over platform-specific implementations.

Current backend mapping:

  • ADWAITA → Linux / libadwaita
  • APPKIT → macOS
  • WINUI → Windows

Linux

The Linux backend is centered around libadwaita / GTK.

Best fit

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

Recommended setup

  • Swift toolchain
  • GTK 4 development packages
  • libadwaita development packages

Notes

If Linux is your main target, this is likely the most comfortable place to explore the ecosystem.

macOS

The macOS backend is exposed through APPKIT.

Best fit

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

Important note

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.

Windows

The Windows backend is exposed through WINUI.

Best fit

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

Requirements

  • Swift for Windows
  • Windows App SDK

Choosing the right target strategy

Best first platform

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

Shared app strategy

Once the base app works:

  1. keep navigation simple
  2. keep window structure predictable
  3. avoid over-optimizing layout assumptions too early
  4. test dialogs and menu behavior per platform
  5. expect some visual differences

Manual backend forcing

When needed:

macOS / Linux

APAROKSHA_FRAMEWORK=APPKIT swift run
APAROKSHA_FRAMEWORK=ADWAITA swift run
APAROKSHA_FRAMEWORK=WINUI swift run

Windows

$env:APAROKSHA_FRAMEWORK = "WINUI"
swift run

This is useful for experimentation, but the preferred everyday path is still using the native default backend first.