Sections

Guide utilisateur

Guide de la barre de menus

Comment chaque type d'outil s'affiche dans le menu Runyard, et ce que fait chaque action.

Toute l'interface de Runyard réside dans la barre de menus. Cette page décrit ce que vous voyez et comment interagir avec chaque élément.

L'icône Runyard

Cliquez sur l'icône Runyard dans la barre de menus pour ouvrir le menu déroulant. Le clic droit (ou clic avec Contrôle) équivaut au clic gauche — il n'existe pas de menu contextuel caché.

À côté de l'icône, selon vos réglages, vous pourrez voir :

Pour tout ce qui précède, voyez le guide de la fenêtre Réglages. Le statut par outil s'affiche à l'intérieur du menu — les quatre états sont listés ci-dessous.

Les quatre types d'outils

Runyard propose quatre types d'outils. Ils s'affichent différemment dans le menu.

Service

Un service est un processus géré — un backend, un serveur de développement, une pile Docker. C'est le type le plus courant.

Un service s'affiche ainsi :

Indicateurs d'état :

Raccourci

Un raccourci (shortcut) est une liste d'actions à plat sous un en-tête en gras. Aucune gestion de processus, aucun démarrage/arrêt, aucun état. Utilisez-le pour des liens rapides (Grafana, Jira, tableaux de bord internes) ou des scripts ponctuels.

{
  "name": "Raccourcis",
  "type": "shortcut",
  "actions": [
    { "label": "Ouvrir Grafana", "url": "https://grafana.example.com" },
    { "label": "Ouvrir Jira", "url": "https://jira.example.com" }
  ]
}

Groupe

Un groupe (group) est un sous-menu. Le nom de l'outil devient un élément parent ; le survol déploie un sous-menu contenant les actions propres au groupe ainsi que tous les services et raccourcis imbriqués.

Utilisez un groupe pour regrouper des outils apparentés — par exemple, toutes les composantes d'une même pile applicative.

{
  "name": "QA Stack",
  "type": "group",
  "actions": [
    { "label": "Ouvrir le tableau de bord", "url": "https://qa.example.com" }
  ],
  "tools": [
    { "name": "API Server", "type": "service", "...": "..." },
    { "name": "Liens", "type": "shortcut", "...": "..." }
  ]
}

Les services imbriqués fonctionnent exactement comme les services de premier niveau — ils ont leur propre indicateur d'état, leur bouton Start/Stop et leurs journaux. Les groupes ne peuvent pas être imbriqués dans d'autres groupes.

Vérification d'état (sonde)

Une sonde (probe) interroge un point d'accès HTTP ou TCP à intervalle fixe et affiche son état en direct dans le menu. Utilisez-la pour surveiller un service tiers, une API interne ou toute autre cible que vous ne gérez pas comme un processus.

Une sonde s'affiche sur une seule ligne avec :

Les sondes n'ont ni Start/Stop ni actions propres. Leur failureThreshold (nombre d'échecs consécutifs avant le passage au rouge) et leur interval se règlent dans Réglages → Tools ou directement dans config.json. Voir Référence config.json → Vérifications d'état pour le schéma complet.

{
  "name": "Apple Status",
  "type": "probe",
  "interval": 60,
  "failureThreshold": 2,
  "http": { "url": "https://www.apple.com/support/systemstatus/" }
}

Lorsqu'une sonde est en échec, un triangle rouge ⚠︎ apparaît également à côté de l'icône Runyard dans la barre de menus.

Actions

Les actions ajoutent des éléments de menu personnalisés à un outil. Chaque action possède un label et exactement un type :

Type Champ Ce qu'il fait
Ouvrir URL url Ouvre l'URL dans votre navigateur par défaut. Prend en charge les espaces réservés {{port}}.
Exécuter commande command + args Exécute une commande shell (dans le dossier de l'outil par défaut). La sortie est écrite dans un journal d'action.
Afficher dans le Finder reveal Ouvre un dossier dans le Finder. Les chemins relatifs partent du directory de l'outil.
AppleScript inline applescript Exécute un extrait AppleScript.
Fichier AppleScript applescriptFile Exécute un fichier .applescript.
Vérification d'état healthCheck Lance une sonde HTTP ou TCP ponctuelle et affiche le résultat sur l'élément de menu pendant ~3 secondes. Voir Référence config.json → Vérifications d'état.

Espaces réservés de port dans les URL

Les URL d'action peuvent inclure les espaces réservés {{port}} et {{port:Label}} :

{ "label": "Ouvrir le frontend", "url": "http://localhost:{{port}}/" }
{ "label": "API Docs", "url": "http://localhost:{{port:Backend}}/swagger" }

Si l'outil n'est pas en cours d'exécution (aucun port encore détecté), l'espace réservé reste inchangé et le lien ne s'ouvre pas.

Contrôler quand les actions apparaissent

Pour les outils de type service, chaque action dispose d'un champ showWhen :

Cela permet de garder le menu ordonné : placez « Ouvrir dans le navigateur » sous running et « Amorcer la base de données » sous stopped, par exemple.

showWhen est ignoré pour les actions de shortcut et de group — elles sont toujours visibles.

Garder le menu ouvert

Par défaut, cliquer sur un élément du menu le referme. Si vous voulez observer le démarrage d'un outil sans que le menu se ferme, définissez keepMenuOpen: true :

Le menu reste alors ouvert jusqu'à ce que vous cliquiez ailleurs ou appuyiez sur Échap.

Détection du port

Runyard utilise lsof pour surveiller l'arborescence de PID de chaque processus lancé et relève le premier port TCP sur lequel il commence à écouter. Le port détecté :

  1. S'affiche à côté du nom de l'outil dans le menu (par exemple Mon app • :3001).
  2. Est injecté automatiquement dans les URL startupCheck qui n'incluent pas de port explicite (par exemple http://localhost/api/health devient http://localhost:3001/api/health).
  3. Remplace les espaces réservés {{port}} dans les URL d'action.

Si votre serveur de développement choisit des ports différents à chaque lancement, vous n'avez rien à faire — Runyard s'adapte.

Repli : si la détection automatique échoue (cas rare — certains outils forkent de manière inhabituelle), définissez startupFallbackPort sur le processus. Runyard l'utilise comme indice.

Start, Stop et Logs

Start

L'action Start effectue :

  1. L'exécution de installCommand si le fichier de marquage (par défaut : node_modules) n'existe pas.
  2. Le lancement de chaque startCommand dans l'ordre. Les commandes avec waitFor: "AutreLabel" patientent jusqu'à ce que l'autre processus ait passé sa vérification d'état.
  3. L'interrogation de la vérification d'état (si elle est configurée).

L'outil passe de starting à running une fois tous les processus en bon état.

Stop

L'action Stop :

View Logs

Chaque processus écrit dans son propre fichier journal sous ~/Library/Logs/Runyard/. Le sous-menu View Logs répertorie chacun d'eux ; un clic ouvre le fichier dans Console. Consultez Dépannage → Journaux pour la convention complète des chemins.

Éléments de menu globaux

Au bas du menu déroulant :