Marquee English

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.

Apple silicon (arm64) · éprouvé
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
Intel (amd64) · pas encore éprouvé
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.

Apple silicon (arm64)
mkdir -p ~/bin
install -m 755 ecran-agent-darwin-arm64 ~/bin/ecran-agent
Intel (amd64)
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 :

~/Library/Application Support/ecran-agent/config.json
{
  "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_MACHINES sur 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.

Dessin de la fenêtre de macOS : « Autoriser « ecran-agent » à rechercher des appareils sur les réseaux locaux ? Ceci permettra à l’app de détecter les appareils de vos réseaux, de s’y connecter et d’obtenir des données sur ces derniers. » Deux boutons : Ne pas autoriser, et Autoriser, cerclé.
Un dessin, pas une capture : les mots sont ceux de macOS 26.

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.