Couleur d'accent système
Lis la couleur d'accent OS choisie par l'utilisateur et le flag haut contraste — réactif, natif, prêt à brancher sur une color scheme Compose.
L'utilisateur a choisi une couleur dans les réglages de son OS. Honore-la. system-color expose l'accent et le flag haut contraste en état Compose réactif — pas de polling, pas de refresh manuel.
En bref
systemAccentColor(): Color?—nullquand la plateforme ne supporte pas.isSystemInHighContrast(): Boolean— bascule quand l'utilisateur active le haut contraste.- Ponts natifs : NSColor KVO sur macOS, watch registry sur Windows, GSettings sous Linux.
Installation
dependencies {
implementation("dev.nucleusframework:nucleus.system-color:<version>")
}Démarrage rapide
import dev.nucleusframework.systemcolor.*
import androidx.compose.material3.*
@Composable
fun App() {
val accent = systemAccentColor()
val highContrast = isSystemInHighContrast()
val scheme = when {
accent != null -> darkColorScheme(primary = accent)
else -> darkColorScheme()
}
MaterialTheme(colorScheme = scheme) {
// L'UI recompose quand l'accent ou le contraste change.
}
}Fonctionnement
Chaque backend branche la notification native de l'OS sur un StateFlow<Color?> lu par Compose. Le composable renvoie null quand la plateforme ne peut pas fournir de valeur cohérente — notamment sur macOS quand l'utilisateur sélectionne Multicolore dans Réglages Système → Apparence, signal documenté de "utilise la propre couleur de marque".
Mode Multicolore macOS
Quand l'utilisateur choisit Multicolore pour l'accent, chaque app est censée utiliser sa propre palette. systemAccentColor() renvoie null pour qu'on retombe proprement sur la couleur de marque.
Référence
fun isSystemAccentColorSupported(): Boolean // garde l'UI avant la composition
@Composable fun systemAccentColor(): Color? // réactif
@Composable fun isSystemInHighContrast(): BooleanNotes
- Combine avec
darkmode-detectorpour un thème entièrement piloté par l'OS. - Utilise
isSystemAccentColorSupported()hors Compose (ex. un écran de réglages) pour griser un toggle "Utiliser l'accent système" sur les plateformes non supportées.
Détecteur de mode sombre
Un composable isSystemInDarkMode() réactif plus une API à base de Flow — le thème système en état live, pas une lecture unique.
Infos système
Inventaire read-only de la machine — OS, CPU, mémoire, disques, GPUs, batteries, réseau, processus, utilisateurs — par une seule API Kotlin.