Sobre o projeto

swift-adwaita é uma biblioteca wrapper imperativa Swift 6 para GTK4 e libadwaita, projetada para construir aplicativos nativos de desktop GNOME. Ela fornece 178 wrappers de widgets—74 widgets Adwaita gerados automaticamente e 104 widgets GTK escritos à mão—junto com um wrapper WebView para WebKitGTK 6.0 (opt-in via o produto separado AdwaitaWebKit). A biblioteca segue uma arquitetura de três camadas: CAdwaita (bindings de bibliotecas do sistema), GObjectSupport (gerenciamento de ciclo de vida GObject com ARC, sinais, Variant e GValue), e Adwaita (wrappers de widgets). Todos os ponteiros brutos estão ocultos atrás de tipos Swift, e a API pública usa enums type-safe para SignalName, PropertyName, CSSClass e IconName em vez de strings brutas. Os principais recursos incluem encadeamento de métodos fluente para configuração de widgets, manipulação de sinais type-safe com closures @MainActor, suporte async/await para diálogos de arquivo e operações de área de transferência, atalhos de teclado com Key e KeyModifiers baseados em enum, bindings de propriedades via GObjectRef.bind(), um protocolo Container unificado para operações de anexar/remover, e inicializadores convenientes para widgets comuns como SwitchRow e PreferencesGroup. A biblioteca suporta menus e ações através de GMenuRef e SimpleAction, arrastar e soltar via DragSource e DropTarget, estilização CSS com CSSProvider e enums CSSClass type-safe, animações com TimedAnimation e SpringAnimation, desenho com DrawingArea e CairoContext, atributos de texto para estilizar rótulos e entradas, reprodução de mídia com MediaStream e Video, e suporte completo de localização incluindo configuração gettext, consultas plurais e de contexto, troca de idioma em tempo de execução e layout da direita para a esquerda. Ela também fornece um wrapper de propriedade @Setting para binding GSettings type-safe, auxiliares de layout adaptativo com Breakpoint.minWidth() e Breakpoint.maxWidth(), e suporte completo de concorrência Swift 6 com isolamento @MainActor e tipos Sendable. O projeto inclui 1194 testes no Linux e 1181 no macOS, 78 exemplos de demonstração e CI no Ubuntu e macOS. Requer Swift 6.2+, cabeçalhos de desenvolvimento libadwaita 1.5+ e cabeçalhos de desenvolvimento GtkSourceView 5, e suporta Linux ou macOS 13+ (Apple Silicon recomendado). A distribuição no Linux é recomendada via Flatpak, que usa o runtime GNOME para GTK4 e libadwaita e a extensão Swift SDK para o compilador. A biblioteca é lançada sob a Licença MIT.