Installer le Mac
ecran-agent est un petit service de ta session : il se connecte à l'écran, lui décrit tes touches, et exécute tes appuis. Un binaire, un fichier de config, une commande.
Toutes les commandes se tapent dans le Terminal de ton Mac, avec ton compte : rien ne demande sudo. Dans les exemples, l'écran a pour adresse 192.168.1.50, et ton dossier personnel est /Users/moi.
1Télécharger et vérifier
Apple silicon ou Intel ? Cette commande répond arm64 pour le premier, x86_64 pour le second :
uname -m
Récupère le binaire qui correspond et le fichier des empreintes, puis vérifie l'un par l'autre.
curl -fLO https://marquee.yg-devworks.com/telechargements/v1.0.0/ecran-agent-darwin-arm64
curl -fLO https://marquee.yg-devworks.com/telechargements/v1.0.0/SHA256SUMS
shasum -a 256 -c SHA256SUMS --ignore-missing
curl -fLO https://marquee.yg-devworks.com/telechargements/v1.0.0/ecran-agent-darwin-amd64
curl -fLO https://marquee.yg-devworks.com/telechargements/v1.0.0/SHA256SUMS
shasum -a 256 -c SHA256SUMS --ignore-missing
La dernière commande doit répondre ecran-agent-darwin-arm64: OK (ou amd64). Si elle dit autre chose, arrête-toi là : le fichier n'est pas celui qui a été publié.
2Installer le binaire
Installe-le là où il restera : le service retiendra ce chemin.
mkdir -p ~/bin
install -m 755 ecran-agent-darwin-arm64 ~/bin/ecran-agent
mkdir -p ~/bin
install -m 755 ecran-agent-darwin-amd64 ~/bin/ecran-agent
3La quarantaine
Téléchargé par curl, comme ci-dessus, le binaire n'est pas en quarantaine : passe à l'étape suivante.
Téléchargé par un navigateur, il l'est : macOS marque le fichier, et refuse de lancer un programme qui n'est pas signé par un Developer ID, ce qui est le cas d'ecran-agent. Une fois l'empreinte vérifiée, retire la marque :
xattr -d com.apple.quarantine ~/bin/ecran-agent
La marque suit le fichier quand install le copie : c'est donc sur ~/bin/ecran-agent qu'elle se retire. Sur un fichier qui n'en porte pas, la commande répond No such xattr : rien de grave.
4La config
La config vit dans ~/Library/Application Support/ecran-agent/config.json, en droits 600 : lisible par toi seul. Le jeton s'y trouve ; si d'autres peuvent la lire, le service refuse de démarrer, comme ssh.
mkdir -p ~/Library/Application\ Support/ecran-agent
touch ~/Library/Application\ Support/ecran-agent/config.json
chmod 600 ~/Library/Application\ Support/ecran-agent/config.json
Puis, avec ton éditeur de code, écris-y :
{
"ecran": "192.168.1.50:8098",
"machine": "MacBook Pro",
"jeton": "<le même que dans JETONS_MACHINES>",
"touches": [
{ "id": "terminal", "libelle": "Terminal", "application": "com.apple.Terminal" }
]
}
ecran- L'adresse de la machine hôte, et le port
8098. machine- Le nom de ce Mac, tel qu'il figure dans
JETONS_MACHINESsur l'écran. jeton- Celui que tu as tiré au chapitre Installer l'écran, le même des deux côtés.
touches- Tes touches : une première ici, toutes les autres au chapitre Créer ses touches.
Le fichier est relu dès qu'il change. Une faute de frappe dans un nom de champ est une erreur, pas un champ ignoré : le service garde alors la config précédente, et l'écran affiche l'erreur.
5Le service de session
~/bin/ecran-agent installer
Il écrit ~/Library/LaunchAgents/com.yg-devworks.ecran-agent.plist et le charge : le service démarre tout de suite, à chaque ouverture de ta session, et repart s'il tombe. Le LaunchAgent reprend le PATH de ton shell de connexion : sans lui, launchd n'en donne qu'un minimal, et une commande installée par Homebrew serait introuvable. La commande répond :
installé : /Users/moi/Library/LaunchAgents/com.yg-devworks.ecran-agent.plist — journal : /Users/moi/Library/Logs/ecran-agent.log
6La demande « Réseau local »
Lancé par launchd, le service n'hérite pas des droits du Terminal. Au premier lancement, macOS lui demande s'il peut accéder au réseau local, et le lui refuse tant que tu n'as pas cliqué Autoriser.
Tu as manqué la fenêtre, ou refusé ? Tout se rattrape dans Réglages Système → Confidentialité et sécurité → Réseau local, en activant ecran-agent.
Tant que ce n'est pas fait, le journal répète no route to host, alors que l'écran répond depuis le Terminal :
nc -vz 192.168.1.50 8098
Si cette commande dit succeeded!, ce n'est pas le réseau : c'est l'autorisation. Relevé au premier déploiement, le 2026-09-25 : après le remplacement du binaire, un seul essai refusé, puis la reconnexion une seconde plus tard, sans nouvelle demande.
7Le journal
tail -f ~/Library/Logs/ecran-agent.log
Une fois connecté, il écrit une ligne comme celle-ci, et la page Touches apparaît sur l'écran :
2026/09/25 21:42:03 écran 192.168.1.50:8098 : connecté comme "MacBook Pro"
Chaque modification de config.json y laisse config relue : 3 touches, ou l'erreur qui l'a fait refuser.
Ne lance pas ecran-agent à la main pendant que le service tourne. Deux instances sous le même nom se remplacent l'une l'autre à l'écran, sans fin : chaque connexion ferme la précédente, qui revient une seconde plus tard. Pour un essai à la main, arrête d'abord le service (voir Désinstaller, première commande).
8Mettre à jour
Télécharge et vérifie la nouvelle version comme à l'étape 1, installe-la comme à l'étape 2 : install remplace l'ancien binaire. Puis relance le service, pour qu'il la prenne :
launchctl kickstart -k gui/$(id -u)/com.yg-devworks.ecran-agent
9Désinstaller
Arrête le service, puis retire-le avec le binaire :
launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/com.yg-devworks.ecran-agent.plist
rm ~/Library/LaunchAgents/com.yg-devworks.ecran-agent.plist ~/bin/ecran-agent
La config et le journal restent en place. Pour les effacer aussi :
rm -r ~/Library/Application\ Support/ecran-agent ~/Library/Logs/ecran-agent.log
Sur l'écran, retire ce Mac de JETONS_MACHINES et relance le service : son jeton ne vaut plus rien.