mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-11 17:26:57 +02:00
Windows : sous-systeme console, pour qu'ajean se comporte en vraie commande
Dans un terminal, cmd rendait la main avant qu'ajean n'ait rien ecrit : l'invite se reaffichait puis la sortie arrivait par-dessus. Windows n'attend jamais la fin d'un programme en sous-systeme graphique. La meme cause empechait les redirections et les tubes, et rendait 'ajean chat' inutilisable (le shell et ajean se disputaient l'entree). Le binaire passe donc en sous-systeme console. La fenetre noire au double-clic, que le sous-systeme graphique evitait, est traitee autrement : quand aucun autre processus ne partage notre console, c'est que Windows l'a creee pour nous, donc que personne ne nous a lances depuis un terminal. On la masque et on la libere. Les raccourcis demandent en plus un demarrage minimise. La relance interne (apres mise a jour) passe desormais 'app' explicitement : la detection ne repond qu'a la question du double-clic, et un processus sans console du tout ne doit pas avoir a y repondre. Verifie : ordre d'affichage correct en session cmd, redirection et tube fonctionnels, 'ajean' sans argument affiche l'aide, et aucune fenetre console visible au lancement facon double-clic.
This commit is contained in:
1 parent
922b7a6862
commit
aa965227fc
4 files changed
+68
-85
No files matched your search
@@ -107,9 +107,10 @@ jobs:
|
||||
windows/amd64:ajean-windows.exe windows/arm64:ajean-windows-arm.exe; do
|
||||
target=${t%%:*}; name=${t#*:}
|
||||
os=${target%/*}; arch=${target#*/}; ldflags="-s -w"
|
||||
# Windows : sous-système GUI → aucune console noire au double-clic
|
||||
# (l'app se rattache à la console du terminal parent si lancée en CLI).
|
||||
[ "$os" = windows ] && ldflags="$ldflags -H=windowsgui"
|
||||
# Windows : sous-système CONSOLE, pour que `cmd` attende la fin du
|
||||
# programme et que redirections, tubes et commandes interactives
|
||||
# fonctionnent. La console créée au double-clic est refermée par le
|
||||
# programme lui-même (voir setupConsole, sys_console_windows.go).
|
||||
GOOS=$os GOARCH=$arch CGO_ENABLED=0 \
|
||||
go build -trimpath -ldflags="$ldflags" -o "dist/$name" ./cmd/ajean
|
||||
done
|
||||
|
||||
Reference in new issue
Block a user