
La barre des menus en ordre : cacher ce qui gêne, l’afficher quand on en a besoin. Et ça tourne sous macOS 27.

Tourne sous macOS 27
Nouveau moteur pour la barre des menus refaite de macOS 27.
Cacher et afficher
Masquer les icônes et les montrer au survol, au clic ou au défilement.
Shelf pour l’encoche
Les icônes cachées dans une barre à part sous la barre des menus.
Par Homebrew
Une commande pour installer, une pour mettre à jour.
Version 0.0.6 — version sur GitHub. Les retours comptent sur le suivi des tickets. holzBar est un jeune fork d’Ice qui se développe activement, beaucoup de choses peuvent encore changer d’ici 1.0.
holzBar garde la barre des menus du Mac en ordre : ce dont on se sert peu disparaît et revient quand on l’appelle. S’y ajoutent une barre d’icônes sous l’encoche, une disposition par glisser-déposer, une recherche et des réglages pour l’apparence de la barre.
Fonctions
Caché jusqu’à ce qu’on en ait besoin
Dans la barre des menus, seul le point de holzBar reste visible ; ce dont on se sert peu est replié. Un clic, un survol ou un défilement ouvre le holzBar Shelf avec les icônes cachées juste sous la barre des menus — avec de vraies images d’icônes, aussi sur les écrans à encoche.





L’essentiel sous General
holzBar se lance à l’ouverture de session si on le souhaite et affiche dans la barre des menus un point ou une autre icône. Le holzBar Shelf choisit sa place de façon dynamique, les icônes cachées apparaissent au clic, au survol ou au défilement — et disparaissent ensuite automatiquement.

Tout au clic droit
Un clic droit sur le point ouvre le menu de holzBar : les réglages, la recherche d’icônes, la zone cachée et le mode Zen. La recherche retrouve et ouvre n’importe quelle icône de la barre, même cachée.

Afficher, puis cacher à nouveau
Les icônes cachées apparaissent au clic, au survol ou au défilement — au trackpad comme à la molette. holzBar les masque ensuite automatiquement, si on le souhaite avec la stratégie Smart. L’espacement des icônes existe en bêta.

Disposition par glisser-déposer
Les icônes s’attribuent aux zones visible et cachée par glisser-déposer. Des profils comme « Travail » ou « Maison » enregistrent une disposition, des groupes réunissent plusieurs icônes derrière une icône propre, et des espaceurs donnent de l’air.

Une barre à son goût
Teinte unie ou en dégradé, ombre, bordure et formes arrondies ou séparées. S’y ajoutent une barre des menus noire qui fait disparaître l’encoche et des coins d’écran arrondis.

Un raccourci pour chaque action fréquente
Basculer les zones, ouvrir la recherche, activer ou désactiver le holzBar Shelf, basculer les menus d’app et piloter le masquage automatique — chaque action a son propre raccourci.

Les finitions sous Advanced
On y trouve la zone toujours cachée, la place des nouvelles icônes, les activités en direct, le masquage des menus d’app et les délais pour le survol et les icônes affichées temporairement.

Synchronisation et autorisations
Plus bas sous Advanced, on exporte et importe les réglages ou on les synchronise entre ses Mac par n’importe quel dossier que les Mac synchronisent, comme iCloud Drive, Nextcloud, Dropbox, OneDrive, Syncthing ou un partage réseau. En dessous, holzBar montre l’état de chaque autorisation.

L’enregistrement de l’écran, seulement au besoin
La section Layout montre des images des icônes de la barre des menus, que macOS ne laisse prendre à une app qu’avec l’Enregistrement de l’écran. holzBar ne le demande que lorsqu’une fonction en a besoin, et explique pourquoi.

Construit sur Ice
La section About indique la version et remercie Ice de Jordan Baird. La mise à jour passe par Homebrew avec brew update && brew upgrade --cask holzbar, et les versions sont à un clic.
Tout en un coup d’œil
Cacher les icônes
Une zone pour les icônes dont on n’a pas besoin, et une zone « toujours cachée ». Affichage au survol, au clic ou au défilement, masquage automatique, et menus d’app masqués quand ils se chevauchent.
holzBar Shelf
Les icônes cachées dans une barre sous la barre des menus, avec de vraies images d’icônes et des écarts réguliers — pratique avec l’encoche.
Disposition par glisser-déposer
Attribuer les icônes aux zones. L’ancienne disposition est reprise au premier lancement.
Recherche
Retrouver et ouvrir n’importe quelle icône de la barre, même cachée.
Apparence
Teinte unie ou en dégradé, ombre et bordure, formes arrondies et séparées. L’espacement des icônes existe en bêta.
Raccourcis clavier
Basculer les zones, ouvrir la recherche, activer le holzBar Shelf et basculer les menus d’app.
Profils, groupes, espaceurs
Enregistrer des dispositions « Travail » ou « Maison » et basculer, regrouper plusieurs icônes derrière une icône propre et insérer jusqu’à dix espaceurs vides. Nouveau en 0.0.2.
Barre noire, coins arrondis
Une barre des menus noire qui fait disparaître l’encoche, et des coins d’écran arrondis au rayon réglable. Nouveau en 0.0.2.
Automatisation et synchro
Commandes holzbar:// et scripts Raycast prêts à l’emploi qui demandent avant de changer quoi que ce soit de durable, mode Zen et actions Raccourcis, éléments masqués affichés automatiquement quand la batterie faiblit ou que le réseau tombe, réglages exportés ou synchronisés entre Mac via iCloud Drive ou n’importe quel dossier que vos Mac synchronisent.
Système
macOS 14 à 27
Licence
GPL-3.0, comme Ice
Base
Ice de Jordan Baird
Installation
Homebrew ou depuis les sources
Signature
Certificat propre, sans Apple Developer ID ; attestation de provenance du build
Mises à jour
Par Homebrew
Installation
holzBar tourne sous macOS 14 Sonoma à 27 et est vérifié dans la CI sur macOS 14, 15, 26 et 27.
Nouvelle installation
Le plus simple, par Homebrew :
brew tap holzcloud/holzbar https://github.com/holzcloud/holzBar
brew trust --cask holzcloud/holzbar/holzbar
brew install --cask holzbar
brew trust ne sert qu’une fois : Homebrew n’installe les casks de taps tiers qu’une fois qu’on leur fait confiance.
holzBar remplace l’Ice d’origine. Si vous l’avez installé, retirez-le d’abord avec brew uninstall --cask jordanbaird-ice. L’app est signée avec son propre certificat, pas avec un Apple Developer ID ; le cask enlève la quarantaine pour qu’elle s’ouvre normalement. Les mises à jour passent par Homebrew ; holzBar lui-même ne cherche jamais de mises à jour.
On peut aussi compiler soi-même avec Xcode 27 (SDK de macOS 27), comme la CI ; holzBar lui-même tourne dès macOS 14 :
git clone https://github.com/holzcloud/holzBar
cd holzBar
Scripts/install.sh
L’app arrive dans ~/Applications.
L’archive holzBar-0.0.6.zip est aussi disponible directement dans la version.
Les versions sont signées avec le certificat propre de holzBar (SHA-256 e55f0df15060b8c06c6842ccee85e6bc9f86cbbda3bd408abf991457840b1d95) et portent une attestation de provenance du build ; on la vérifie avec gh attestation verify sur l’archive téléchargée.
Mettre à jour depuis 0.0.6 bêta 1 ou 2
brew update && brew upgrade --cask holzbar
L’autorisation Accessibilité est conservée.
Mettre à jour depuis 0.0.5
La 0.0.5 a été publiée sous l’ancien nom de l’app, comme un autre cask et une autre app : brew upgrade ne la remplace donc pas et holzBar ne reprend pas ses réglages. Pour garder disposition, raccourcis et apparence, exportez-les dans l’ancienne app (Settings → Advanced → Export…). Quittez-la et désinstallez son cask (brew list --cask affiche son nom), installez holzBar comme ci-dessus, accordez de nouveau l’Accessibilité, importez le fichier dans Settings → Advanced → Import… et réactivez « Launch at login ». Les réglages de l’Ice d’origine sont de toute façon importés au premier lancement.
Si macOS refuse d’ouvrir holzBar
holzBar est signé avec son propre certificat, pas avec un Apple Developer ID. Le cask Homebrew retire lui-même l’attribut de quarantaine. Si vous avez téléchargé l’archive à la main — ou si macOS bloque quand même l’app —, sortez-la de la quarantaine ainsi :
xattr -dr com.apple.quarantine /Applications/holzBar.app
Rouvrez ensuite holzBar. Sinon, ouvrez l’app une fois, puis cliquez sur Ouvrir quand même dans Réglages Système → Confidentialité et sécurité, à côté du message de holzBar.
Pourquoi holzBar ?
| 📦 Zéro dépendance | Aucun paquet tiers — chaque ligne exécutée se trouve dans le dépôt de holzBar. |
| 🦅 Swift 6 moderne | Compilé avec Swift 6.4 et Xcode 27, le dernier Swift stable et le SDK de macOS 27, en mode de langage Swift 6 où le compilateur exclut les accès concurrents aux données ; @Observable au lieu de Combine, un backend par génération de macOS. |
| 🔒 Jamais en ligne | Aucune vérification de mises à jour, aucune télémétrie, aucune analyse. Un contrôle de la CI prouve que l'app ne contient aucun code réseau. |
| 🛡️ Droits minimaux | Seulement l'Accessibilité au premier lancement ; l'Enregistrement de l'écran uniquement quand une fonction en a besoin. Runtime renforcé, journaux privés. |
| 🍃 Léger | Aucune interrogation périodique là où macOS envoie un événement, aucun suivi de la souris si vous ne l'utilisez pas, rien en mémoire que personne n'affiche. |
| 🪵 Compatible macOS 27 | Un backend dédié à la barre des menus repensée de macOS 27, dessinée par MenuBarAgent. |
| ✅ macOS 14 à 27, vérifié | Chaque pull request lance l'app sur macOS 14, 15, 26 et 27 et y exécute les 371 tests unitaires. |
| ✨ Plus de fonctions | Profils, dossiers, espaceurs, mode Zen, actions Raccourcis, barre des menus noire, commandes URL, synchronisation des réglages via n'importe quel dossier. |
| 🌍 Cinq langues | Anglais, allemand, français, italien et romanche. |
| 🍺 Homebrew d'abord | Installer et mettre à jour avec une seule commande. |
holzBar, Ice et Thaw comparés
Ce que font l'Ice 0.11.12 d'origine et l'autre fork actif Thaw 3.0 bêta, et ce qu'ajoute holzBar. — signifie non disponible ou non documenté.
| Ice 0.11.12 | Thaw 3.0 bêta | holzBar | |
|---|---|---|---|
| Compatibilité | |||
| macOS 14 – 26 | ✅ | macOS 26 seulement | ✅ |
macOS 27 (nouvelle barre des menus dessinée par MenuBarAgent) |
❌ | ✅ | ✅ |
| Lancé et testé dans la CI sur chaque macOS pris en charge | ❌ | — | ✅ 14, 15, 26 et 27 |
| Fonctions | |||
| Sections masquée et toujours masquée, Ice Bar / holzBar Shelf, recherche, apparence | ✅ | ✅ | ✅ |
| Profils de disposition | ❌ | ✅ | ✅ |
| Groupes et espaceurs | ❌ | ✅ | ✅ |
| Dossiers avec leur propre icône et couleur ; images d'éléments au choix | ❌ | ✅ | ✅ |
| Choisir où apparaissent les nouveaux éléments | ❌ | — | ✅ |
| Barre sur certains écrans seulement, débordement de l'encoche | ❌ | — | ✅ |
| Barre des menus noire, coins d'écran arrondis | ❌ | coins seulement | ✅ |
| Bordures en tirets et en pointillés, teintes du fond d'écran, de la couleur d'accentuation et du verre | ❌ | ✅ | ✅ |
| Afficher les éléments masqués quand la batterie est faible ou hors ligne | ❌ | — | ✅ |
| Commandes URL et Raycast | ❌ | ✅ | ✅ |
| Mode Zen (aussi pendant une présentation) | ❌ | ✅ | ✅ |
| Raccourcis clavier par profil et par élément | ❌ | ✅ | ✅ |
| Actions Raccourcis (App Intents) | ❌ | ✅ | ✅ |
| Profils liés à un écran ou à un Space | ❌ | ✅ | ✅ |
| Ouvrir un élément par une lettre | ❌ | ✅ | ✅ |
| Éditeur de disposition et Shelf au clavier, annulation, actions VoiceOver | ❌ | ✅ | ✅ |
| Les éléments ouverts restent jusqu'à 30 s, ou s'ouvrent sans être affichés | ❌ | ✅ | ✅ |
| Afficher brièvement un élément quand il change | ❌ | ✅ | ✅ à activer par élément |
| Exporter et importer les réglages | ❌ | ✅ | ✅ |
| Synchronisation des réglages : iCloud Drive ou n'importe quel dossier synchronisé | ❌ | ❌ | ✅ |
| Langues | anglais | nombreuses, via Crowdin | anglais, allemand, français, italien, romanche |
| Garder les Activités en direct visibles | ❌ | — | ✅ expérimental |
| Afficher en défilant avec une molette de souris | ❌ | — | ✅ |
| La recherche tolère les fautes de frappe et les abréviations | ✅ (bibliothèque) | ✅ | ✅ (intégrée) |
| Refuse les raccourcis que macOS ne peut pas enregistrer, et dit pourquoi | ❌ | — | ✅ |
| La saisie ne se bloque jamais quand une app ne répond plus | ❌ | ✅ | ✅ |
| Les éléments gardent leur section quand une app change son titre | ❌ | ✅ | ✅ |
| En pause quand l'écran est verrouillé, se stabilise après la sortie de veille | ❌ | ✅ | ✅ |
| Apparence sur chaque bureau, suit les icônes, s'efface en plein écran | ❌ | ✅ | ✅ |
| Pas d'indicateur d'enregistrement de l'écran en affichant ou en masquant (macOS 27) | — | ✅ | ✅ |
| Survol et clic sur un deuxième écran (macOS 27) | — | ✅ | ✅ |
| Les commandes URL demandent avant de changer quoi que ce soit de durable ; aucune URL ne met fin au mode Zen pendant un partage d'écran | — | — | ✅ |
| Raccourcis, couleurs et nombres vérifiés dans les réglages importés et synchronisés (pas de plantage en boucle dû à de mauvais réglages) | ❌ | — | ✅ |
| Confidentialité et autorisations | |||
| Connexions réseau (mises à jour, télémétrie, analyse) | vérifications Sparkle | vérifications Sparkle | aucune — imposé par la CI |
| Données personnelles (noms d'apps, titres d'éléments, chemins) dans les journaux | en partie publiques | — | privées, imposé par la CI |
| Demande l'Enregistrement de l'écran seulement quand une fonction en a besoin | ❌ | — | ✅ |
| Runtime renforcé (aucun code ni bibliothèque injectés) | ✅ | ✅ | ✅ (vérifié par la CI) |
| L'import des réglages n'accepte que les clés connues, du bon type, dans les limites | — (pas d'import) | — | ✅ |
| L'import et la synchronisation ne peuvent pas activer la synchronisation ; le fichier de synchronisation ne contient pas le nom de l'ordinateur | — (pas de synchro) | — | ✅ |
| Le service des éléments de la barre des menus n'accepte que le code de holzBar | contrôle de l'équipe seulement | — | équipe ou empreinte exacte du code |
| Correction de la boucle d'autorisations | ❌ | — | ✅ |
| Code et ressources | |||
| Paquets Swift | 5 | 10 (Sparkle, AXSwift6, CompactSlider, Ifrit, LaunchAtLogin-Modern et 5 d'Apple) | aucun |
| Mode de langage Swift | Swift 5 | Swift 6 | Swift 6 (le compilateur exclut les accès concurrents aux données), compilé avec Swift 6.4 et Xcode 27 |
| Gestion de l'état | Combine | @Observable et Combine |
@Observable, sans Combine |
| Suivi des événements de la souris quand « Show on hover » est désactivé | toujours actif | — | désactivé |
| Minuteries et interrogations quand rien n'est affiché | oui | — | seulement si nécessaire |
| La synchronisation détecte les changements | — (pas de synchro) | — (pas de synchro) | quand le dossier synchronisé les livre, sans interrogation |
| Migration des réglages | 6 étapes de version à chaque lancement | — | une fois, lors de l'import des réglages d'Ice |
| Modification d'AppKit à l'exécution (method swizzling) | oui | oui | aucune |
| Images des éléments en mémoire | conservées | — | libérées si inutilisées |
| Tests unitaires à chaque changement | aucun | ✅ | ✅ 371 |
| Taille de l'app | — | — | 16,7 Mo |
| Distribution et maintenance | |||
| Installation et mises à jour avec Homebrew | ✅ | ✅ | ✅ |
| Mises à jour | Sparkle (le dialogue peut se bloquer sous macOS 26) | Sparkle | Homebrew |
| Chaque groupe de bogues des 282 rapports ouverts d'Ice résolu | — | — | ✅ confirmé sur un Mac dans la 0.0.6, voir la liste |
| Signé avec un Developer ID | ✅ | — | ❌ (certificat propre à la place) |
| Signature stable, pour que l'Accessibilité survive aux mises à jour | ✅ | — | ✅ (certificat propre, docs/signing.md) |
Attestation de provenance du build (gh attestation verify) |
❌ | — | ✅ |
macOS 27
macOS 27 ne dessine plus les icônes de la barre des menus comme des fenêtres séparées, mais toutes ensemble dans une seule barre. holzBar apporte son propre moteur : masquage par assertions en mode d’évaluation avec des zones par app, détection des icônes par l’accessibilité, et un éditeur qui attribue les apps aux zones.
Limites connues sous macOS 27
- Les icônes ne se réordonnent pas sur la barre elle-même, on les attribue seulement aux zones.
- Ouvrir une icône système (horloge, batterie, Wi-Fi) pendant que les icônes cachées sont masquées prend environ 150 ms de plus.
- En venant de la 0.0.5 ou d’une version plus ancienne, macOS redemande une fois l’accessibilité. Si holzBar reste bloqué sur la fenêtre des autorisations, Reset and Grant Again aide.
- « Masquer les menus d’app » est désactivé sous macOS 27, où macOS regroupe lui-même les icônes qui débordent.
- L'indicateur de confidentialité disparaît tant que des éléments sont masqués : quand holzBar masque un élément sous macOS 27, le Centre de contrôle n'affiche pas son indicateur pour la caméra, le micro et l'enregistrement de l'écran ; le petit point vert à côté de l'horloge signale toujours la caméra. L'indicateur revient dès que holzBar ne masque plus aucun élément.
Un fork d’Ice — merci à Jordan Baird
holzBar est un fork d’Ice de Jordan Baird. Ice est l’un des meilleurs gestionnaires de barre des menus pour Mac, et presque tout ce qu’on voit ici est son travail. holzBar ne fait que le poursuivre sous macOS 27 tant que le développement de l’original avance plus lentement.
Le moteur pour macOS 27 vient de RabenkoYevhenii (pull request n° 995 chez Ice). Si vous aimez Ice : mettez-lui une étoile et soutenez Jordan Baird. holzBar est indépendant et n’est ni affilié au projet Ice ni recommandé par lui.