À propos du projet

swift-adwaita est une bibliothèque Swift 6 impérative enveloppant GTK4 et libadwaita, conçue pour créer des applications de bureau GNOME natives. Elle fournit 178 wrappers de widgets—74 widgets Adwaita générés automatiquement et 104 widgets GTK écrits à la main—ainsi qu'un wrapper WebView pour WebKitGTK 6.0 (activé en option via le produit séparé AdwaitaWebKit). La bibliothèque suit une architecture en trois couches : CAdwaita (liaisons des bibliothèques système), GObjectSupport (gestion du cycle de vie GObject avec ARC, signaux, Variant et GValue), et Adwaita (wrappers de widgets). Tous les pointeurs bruts sont cachés derrière des types Swift, et l'API publique utilise des enums typés pour SignalName, PropertyName, CSSClass et IconName au lieu de chaînes brutes. Les fonctionnalités clés incluent le chaînage fluide de méthodes pour la configuration des widgets, la gestion typée des signaux avec des closures @MainActor, le support async/await pour les dialogues de fichiers et les opérations de presse-papiers, les raccourcis clavier avec Key et KeyModifiers basés sur des enums, les liaisons de propriétés via GObjectRef.bind(), un protocole unifié Container pour les opérations d'ajout/suppression, et des initialiseurs pratiques pour des widgets courants comme SwitchRow et PreferencesGroup. La bibliothèque prend en charge les menus et actions via GMenuRef et SimpleAction, le glisser-déposer via DragSource et DropTarget, le style CSS avec CSSProvider et des enums CSSClass typés, les animations avec TimedAnimation et SpringAnimation, le dessin avec DrawingArea et CairoContext, les attributs de texte pour styliser les étiquettes et les champs, la lecture multimédia avec MediaStream et Video, et une localisation complète incluant la configuration gettext, les recherches de pluriels et de contextes, le changement de langue à l'exécution et la mise en page de droite à gauche. Elle fournit également un wrapper de propriété @Setting pour une liaison GSettings typée, des aides de mise en page adaptative avec Breakpoint.minWidth() et Breakpoint.maxWidth(), et un support complet de la concurrence Swift 6 avec isolation @MainActor et types Sendable. Le projet comprend 1194 tests sur Linux et 1181 sur macOS, 78 exemples de démonstration, et une CI sur Ubuntu et macOS. Il nécessite Swift 6.2+, les en-têtes de développement libadwaita 1.5+, et les en-têtes de développement GtkSourceView 5, et prend en charge Linux ou macOS 13+ (Apple Silicon recommandé). La distribution sur Linux est recommandée via Flatpak, qui utilise le runtime GNOME pour GTK4 et libadwaita et l'extension SDK Swift pour le compilateur. La bibliothèque est publiée sous la licence MIT.