Nucleus
OS integration

Intégration OS

Atteins chaque API d'OS dont un dev desktop a besoin — notifications, tray, dock, mode sombre, raccourcis globaux, contrôles média, couleur d'accent — depuis du Kotlin idiomatique.

Une app desktop se distingue par la finesse de son intégration au système. Nucleus expose la surface native de macOS, Windows et Linux sous forme de petits modules Kotlin ciblés — sans JNI à écrire, sans pont FFI à assembler, sans pièges JNA. On choisit ce qu'on utilise, le reste reste sur l'étagère.

En bref

  • Une API Kotlin par fonctionnalité OS — même forme sur macOS, Windows, Linux.
  • Backends natifs : AppKit, WinRT, FreeDesktop / D-Bus, MPRIS, SMTC, AppIndicator, NSUserNotificationCenter — chacun emballé par un pont JNI fourni et chargé par Nucleus.
  • À la carte. Chaque module est un artefact Gradle indépendant.
  • Réactif là où il faut : le mode sombre, la couleur d'accent et les menus du tray participent à la recomposition Compose.

Matrice de couverture

FonctionnalitéModulemacOSWindowsLinux
Notifications cross-plateformenotification-commonouiouioui
Notifications natives (par OS)notification-macos / -windows / -linuxouiouioui
System tray + apps ancrées au traycomposenativetrayouiouioui
Raccourcis globauxglobal-hotkeyouiouioui
Contrôles média (Now Playing / SMTC / MPRIS)media-controlouiouioui
Mode sombre (réactif)darkmode-detectorouiouioui
Couleur d'accent et contraste élevésystem-colorouiouioui
Infos matériel / OSsystem-infoouiouioui
Barre de menus macOSmenu-macosoui
Noms d'icônes FreeDesktopfreedesktop-iconsoui

Philosophie

Toutes les pages de cette section suivent la même règle : si l'OS expose une capacité dont une app desktop sérieuse a besoin, Nucleus la rend disponible en Kotlin — typée, idiomatique, prête à livrer. Pas de repli Swing bancal, pas de cross-plateforme "à peu près" qui se fait passer pour natif.

Les façades cross-plateformes (notification-common, media-control, darkmode-detector) couvrent l'intersection des capacités. Quand on veut la longue traîne — barres de progression toast Windows, niveaux d'interruption macOS, volume MPRIS sous Linux — on descend au module spécifique sans réécrire le app.

Pour continuer