fix: icône de barre de menu absente sur macOS Tahoe

setActivationPolicy_(Accessory) appelé avant rumps.run() empêche la
création du NSStatusItem sur Tahoe (vérifié par test A/B). Retiré :
LSUIElement dans l'Info.plist suffit pour masquer l'icône Dock.
Le lanceur redirige aussi stdout/stderr vers ~/Library/Logs/Zonza.log.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Ralph Mayola 2026-06-13 00:14:15 +02:00
parent 22080eb997
commit 2b0d81796b
2 changed files with 6 additions and 8 deletions

12
app.py
View File

@ -3,13 +3,12 @@
Possède la boucle d'événements Cocoa. Enregistre la hotkey globale, gère l'état du menu,
lance le warmup du modèle en fond, et instancie le contrôleur + la fenêtre de pulsation.
La politique d'activation est forcée en « accessory » : Zonza vit dans la barre de menu,
jamais dans le Dock même quand la fenêtre de pulsation Cocoa s'affiche.
Zonza vit dans la barre de menu, jamais dans le Dock : c'est le LSUIElement de
l'Info.plist (posé par build_app.sh) qui s'en charge.
"""
import threading
import rumps
from AppKit import NSApplication, NSApplicationActivationPolicyAccessory
from PyObjCTools import AppHelper
from pynput import keyboard
@ -76,10 +75,9 @@ class ZonzaApp(rumps.App):
def main():
validate_config(CONFIG)
# barre de menu uniquement, jamais d'icône Dock — même en lançant depuis les sources
NSApplication.sharedApplication().setActivationPolicy_(
NSApplicationActivationPolicyAccessory
)
# PAS de setActivationPolicy_ ici : sur macOS Tahoe, forcer la politique avant
# run() empêche rumps de créer l'icône de barre de menu. Le LSUIElement de
# l'Info.plist suffit à masquer l'icône Dock pour l'app installée.
ZonzaApp().run()

View File

@ -33,7 +33,7 @@ mkdir -p "$CONTENTS/MacOS" "$CONTENTS/Resources"
cat > "$CONTENTS/MacOS/zonza" <<LAUNCHER
#!/bin/bash
cd "$HERE"
exec "$PYBIN" "$HERE/app.py"
exec "$PYBIN" "$HERE/app.py" >> "\$HOME/Library/Logs/Zonza.log" 2>&1
LAUNCHER
chmod +x "$CONTENTS/MacOS/zonza"