Vagalume : contrôler la luminosité de tous vos écrans sur macOS (open source)

Neto Pompeu —

La luminosité sur Mac est plus compliquée qu'il n'y paraît

Sur macOS, contrôler la luminosité semble trivial : deux touches au clavier et c'est réglé. En réalité, dès qu'on branche un écran externe ou qu'on possède un MacBook Pro à dalle XDR, l'expérience se fissure.

  • Les touches F1/F2 ne pilotent que l'écran intégré. Branchez un moniteur externe : elles ne font plus rien dessus.
  • Les écrans externes n'ont aucun contrôle de luminosité natif sous macOS. Il faut farfouiller dans les boutons physiques (OSD) du moniteur.
  • Sur les MacBook Pro à écran Liquid Retina XDR, macOS plafonne la luminosité SDR à ~500 nits, alors que la dalle peut monter bien plus haut.

Pour résoudre ça sans usine à gaz (pas de profils, pas de compte cloud, pas d'abonnement), nous avons développé Vagalume — une petite app gratuite et open source, posée dans la barre des menus.

Ce que fait Vagalume

  • Un curseur global pour tous les écrans, plus un curseur par écran.
  • Contrôle matériel DDC/CI des moniteurs externes : Vagalume parle directement au moniteur via le bus I2C pour régler sa vraie luminosité.
  • Dimming logiciel de secours quand le DDC n'est pas disponible (docks, adaptateurs, certains moniteurs).
  • Mode sub-zero : descendre sous le minimum matériel pour les sessions nocturnes, sans écran tout noir.
  • Boost XDR (expérimental) : dépasser le plafond des ~500 nits d'Apple sur les dalles XDR, via un overlay EDR en compositing multiply qui préserve les couleurs (les noirs restent noirs, les ratios de couleur sont conservés).
  • Prise en charge des touches soleil / F1-F2, avec repli Option + flèches.
  • Estimation des nits par écran, détection à chaud des écrans branchés/débranchés, et mises à jour automatiques.

La stack technique

Vagalume est une app 100 % native, pensée pour être légère (~80 Mo en RAM, 0 % CPU au repos) :

  • Swift + SwiftUI avec MenuBarExtra pour l'interface barre des menus, sans icône dans le Dock.
  • IOKit / I2C pour envoyer les commandes DDC/CI aux moniteurs externes (lecture et écriture du VCP de luminosité, à la vraie échelle du moniteur — pas une échelle 0–100 figée).
  • AppleSiliconDDC pour la détection DDC fiable sur puces Apple Silicon.
  • Metal + EDR (CAMetalLayer, wantsExtendedDynamicRangeContent, compositing multiply) pour le Boost XDR : c'est la même technique que Lunar ou Vivid, mais en préservant la justesse colorimétrique.
  • DisplayServices (framework privé) pour piloter l'écran intégré en continu, sans le palier disgracieux à 20 %.
  • Sparkle pour les mises à jour automatiques signées, distribuées via les GitHub Releases.
  • Build signé Developer ID + notarisé par Apple, donc il s'ouvre sans avertissement Gatekeeper.

L'ensemble est couvert par des tests unitaires sur la logique de luminosité (clamp, courbes de dimming, estimation des nits, échelle DDC) pour éviter les régressions visuelles.

Pourquoi open source

Vagalume ne collecte aucune donnée : pas d'analytics, pas de télémétrie, pas de compte. Le code est ouvert (licence MIT) parce qu'une app qui touche au pilotage bas niveau de votre écran mérite d'être auditable. C'est aussi notre manière, chez Primo Studio, de rendre un peu à la communauté des outils qu'on utilise au quotidien depuis l'Amazonie.

Télécharger

Vagalume est gratuite, signée et notarisée. Téléchargez la dernière version, dézippez, glissez Vagalume.app dans /Applications, et lancez-la.

Requiert macOS 14 (Sonoma) ou plus récent, sur Mac Apple Silicon.