mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-24 15:38:12 +02:00
v0.5.4 : app macOS Jean.app (clic = UI web + icone barre de menus)
- Jean.app publie par la CI (zip par archi) : ouverture depuis le Finder -> mode application, comme le double-clic sur jean.exe sous Windows - icone dans la barre de menus macOS (systray/Cocoa) avec Ouvrir/Quitter, bundle marque LSUIElement (pas d'icone Dock) - builds darwin deplacees sur un runner macOS (CGO requis pour Cocoa) - signature ad-hoc du bundle + icone .icns
This commit is contained in:
1 parent
2f1f40c604
commit
ac171e5461
12 files changed
+261
-75
No files matched your search
@@ -0,0 +1,45 @@
|
||||
//go:build darwin
|
||||
|
||||
package jean
|
||||
|
||||
// sys_tray_darwin.go — icône de Jean dans la barre de menus macOS (en haut à
|
||||
// droite, à côté de l'horloge), pendant exact du system tray Windows : quand on
|
||||
// ouvre Jean.app, l'UI web s'ouvre dans le navigateur ET l'icône apparaît, avec
|
||||
// le menu « Ouvrir Jean » / « Quitter ».
|
||||
//
|
||||
// Contrairement à Windows, systray passe ici par Cocoa → CGO obligatoire : les
|
||||
// binaires macOS sont donc compilés sur un runner macOS (voir release.yml), et
|
||||
// le bundle est marqué LSUIElement (pas d'icône dans le Dock, uniquement la
|
||||
// barre de menus).
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"github.com/getlantern/systray"
|
||||
)
|
||||
|
||||
// runTray fait tourner l'icône de la barre de menus. Bloque jusqu'à « Quitter ».
|
||||
// À appeler depuis la goroutine principale : Cocoa exige le thread main.
|
||||
func runTray(url string) {
|
||||
systray.Run(func() {
|
||||
systray.SetIcon(trayIconPNG())
|
||||
systray.SetTooltip("Jean — votre IA locale")
|
||||
mOpen := systray.AddMenuItem("Ouvrir Jean", "Ouvrir l'interface")
|
||||
systray.AddSeparator()
|
||||
mQuit := systray.AddMenuItem("Quitter", "Arrêter Jean")
|
||||
|
||||
go func() {
|
||||
for {
|
||||
select {
|
||||
case <-mOpen.ClickedCh:
|
||||
_ = openBrowser(url)
|
||||
case <-mQuit.ClickedCh:
|
||||
systray.Quit()
|
||||
return
|
||||
}
|
||||
}
|
||||
}()
|
||||
}, func() {
|
||||
os.Exit(0) // « Quitter » → arrête tout le process (serveur inclus)
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user