Comment ça fonctionne, brique par brique
Une règle tient tout le programme ensemble : l'état de la fenêtre vit en mémoire et la configuration vit dans des fichiers. Tout ce qui suit en découle.
La règle qui sous-tend tout
Une fenêtre contient des onglets. Un onglet contient des blocs. Un bloc est un terminal, un fichier en cours d'édition, le panneau des fichiers, une page web, une image, un PDF, une page Markdown, un diff, le moniteur système, l'écran des réglages ou le panneau d'un greffon. Ils se scindent dans n'importe quelle direction, s'imbriquent, se déplacent, se redimensionnent et se ferment selon un seul jeu de règles plutôt qu'un nouveau jeu pour chaque fonctionnalité. Tout ce qui est trop volumineux pour appartenir à tout le monde est un greffon du catalogue de vobuda, Design et Director jusqu'ici, installé et retiré en entier d'un seul appui.
Rien de cette disposition n'est stocké dans une base de données, parce qu'il n'y a pas de base de données. Ce que fait la fenêtre vit en mémoire ; ce que vous avez décidé vit dans des fichiers. C'est pourquoi un bouton, une touche, la barre de menus, Cmd+K et la ligne de commande appellent tous la même action par son nom, et pourquoi lui faire adopter un autre comportement revient presque toujours à modifier du JSON.
C'est aussi pourquoi le meilleur émulateur de terminal pour Mac, pour le genre de travail auquel celui-ci est destiné, est celui que l'on peut inspecter. Si un réglage existe, il y a une ligne dans un fichier qui le contient. Si une action existe, il y a un nom pour l'appeler.
Cinq chemins vers une action, et c'est toujours la même action
Avec autant d'actions, l'essentiel d'un programme reste en pratique invisible. Cmd+K est la réponse à « que peut-il faire ? » plutôt qu'à « fais ceci ».
-
Elle enseigne les touches plutôt que de les remplacer
Chaque ligne affiche son propre raccourci. Quelqu'un qui ouvre la liste deux fois pour la même action en aura appris la touche à la troisième.
-
Ce n'est pas un cinquième dictionnaire
Chaque ligne exécute une action par son nom, exactement comme les quatre autres méthodes. Une vérification confronte la table qu'elle affiche à la liste du cœur des actions qu'une touche peut activer, dans les deux sens : une action qui existe mais n'y est pas proposée fait échouer la compilation.
-
La ligne de commande, c'est le même ensemble
vobuda do block.split-down, vobuda button files, vobuda theme catppuccin-mocha, vobuda send, vobuda signal, vobuda state, vobuda log, tapées dans n'importe quel bloc vobuda, et
vobuda mcpoffre les mêmes commandes à un agent sous forme d'outils MCP. Ce n'est pas une porte dérobée pour les scripts : les tests d'interface pilotent tout le programme à travers elle, c'est pourquoi on peut lui faire confiance, et c'est pourquoi un agent peut réorganiser votre fenêtre, et vous pouvez lire exactement ce qu'il a fait.
Les blocs, et ce qu'ils promettent
Un bloc change d'onglet sans interrompre son shell
Faites glisser un bloc par son en-tête sur un onglet de la barre, et il s'y installe : même identifiant, même shell, même dossier, toujours en train d'exécuter ce qu'il exécutait. L'onglet s'illumine de la couleur d'accent tant que le bloc le survole. Il existe aussi une action pour cela, block.to-tab:2, qui peut donc être associée à une touche, et un test sans souris peut l'activer.
Les tailles sont mémorisées, et il y a un minimum
Par bloc, et aucun bloc ne peut devenir si étroit qu'il en devient inutilisable. Un panneau de 200 points est un panneau que personne ne peut utiliser.
Rien de ce qui vous appartient ne part en silence
Fermer quelque chose qui tourne demande d'abord confirmation, par son nom, car perdre une seule fois le travail de quelqu'un coûte plus de confiance qu'une fonctionnalité entière n'en rapporte. Pour la même raison, le dossier du projet est photographié avant chaque tour d'un agent, avec un appui pour le remettre en place ; une clé collée à un agent est arrêtée avant que l'agent la voie ; et une barrière que vous pouvez activer refuse les écritures et suppressions d'un agent en dehors du projet.
Les sessions reviennent par défaut
Les onglets, les blocs et le dossier de travail de chaque bloc reviennent après un redémarrage, et cette option est activée par défaut ; un interrupteur dans la section Général la désactive. Une session arrivée d'une autre machine ouvre ce qu'elle peut et indique ce qu'elle n'a pas pu, plutôt que d'abandonner des blocs en silence.
Le dossier des réglages, fichier par fichier
Tout ce qui se trouve dans ~/.config/vobuda est du JSON lisible, surveillé pendant que le programme tourne. Enregistrez le fichier et la fenêtre se redessine.
| Fichier | Ce qu'il contient |
|---|---|
| settings.json | Thème, apparence, terminal, shell, fenêtre, signaux : chaque réglage des dix sections |
| themes/*.json | Couleurs du terminal et de la fenêtre. 25 palettes sont fournies, dont deux conçues pour les daltoniens |
| looks/*.json | La forme de la fenêtre : coins, ombres, couleurs des panneaux, transparence. 29 sont fournies |
| skins/*.json | Quels panneaux du moniteur sont affichés, et comment |
| buttons.json | Le dock : boutons, ordre, côté, forme, et une couleur pour les rares qui méritent d'être signalés |
| agents.json | Comment un agent est reconnu et ce qui lui est proposé |
| keys.json | Tous les raccourcis. Le menu natif de macOS est construit à partir de ce même fichier |
| workspaces/*.json | Projets : chacun une fenêtre avec ses propres onglets, dossier, thème et dock |
Les thèmes intégrés vivent dans le binaire et le dossier les remplace, si bien qu'une mise à jour apporte de nouvelles couleurs sans écraser ce que vous avez modifié. Le dossier entier s'enregistre en une seule archive et se restaure sur un autre Mac, et sur un Mac une copie vit dans iCloud Drive, par défaut, avec un interrupteur pour la désactiver.
Un moniteur système, organisé par un fichier
Douze types de panneaux, et ceux que vous voyez dépendent d'un skin plutôt que d'un écran conçu une fois pour toutes.
-
Les chiffres sont honnêtes sur eux-mêmes
Une valeur que le système estime plutôt qu'il ne mesure est affichée avec un tilde, et un matériel absent donne une valeur absente plutôt qu'un zéro. Une machine sans GPU dédié n'affiche pas un panneau GPU indiquant zéro pour cent.
-
Les deux adresses, chacune avec son bouton de copie
Le panneau d'adresses indique celle que voit d'abord internet, puis en dessous celle que cette machine possède sur son propre réseau. Il n'interroge que pendant que le panneau est à l'écran, environ une fois toutes les dix minutes, ou toutes les trente secondes tant qu'aucune adresse n'est connue, et la requête ne transporte aucune information sur la machine.
-
Réorganisé par glisser-déposer, comme tout le reste
Les panneaux du moniteur, les boutons du dock et les éléments de la barre d'agent se saisissent et se replacent tous avec le même geste. Une ligne de réglage se saisit par la poignée à sa gauche plutôt que n'importe où sur la ligne, de sorte qu'un glissement commencé sur un champ de texte ne vous empêche pas de sélectionner le mot que vous vouliez modifier.
Un fichier s'ouvre à côté du shell
Ce pour quoi un terminal vous envoie d'ordinaire ailleurs : un chemin apparaît dans la sortie, deux lignes doivent être changées, et jusqu'ici cela voulait dire partir vers un éditeur puis revenir en ayant perdu le contexte du shell.
-
Enregistrer est un acte délibéré
Rien n'est écrit avant Cmd+S. Un éditeur qui écrit au fil de la frappe est une bonne chose dans une application de notes, une mauvaise à côté d'un shell en cours d'exécution. C'est une action plutôt qu'une frappe, ce qui lui donne aussi un élément de menu, un raccourci et une entrée de ligne de commande, comme tout le reste ici.
-
Les refus comptent autant que l'écriture
Un fichier modifié sur le disque depuis son ouverture n'est pas écrasé. Un binaire n'est pas affiché comme du texte corrompu. Un dossier ne s'ouvre pas du tout. Les modifications non enregistrées portent une marque visible, et fermer un fichier édité demande confirmation.
-
Trouver un fichier
Le panneau des fichiers recherche par nom en dessous du dossier où vous vous trouvez, et chaque résultat indique dans quels deux dossiers il se trouve, car un nom seul ne permet pas de distinguer deux index.ts. Il ignore node_modules, .git, target et leurs semblables, s'arrête à huit niveaux ou deux cents résultats, et ne fait rien du tout en dessous de deux lettres.
Les réglages, en écran et en fichiers
Dix sections, de Général à Données et confidentialité, une recherche sur chaque réglage, et chacun d'eux est une ligne dans un fichier que vous pouvez aussi modifier à la main.
-
Les réglages viennent au bloc
Faire un clic droit sur un panneau signifie « ceci, ici, changez-le ». Ainsi, choisir une ligne de réglage dans le menu propre à un bloc ouvre cette section par-dessus la fenêtre, au coin du menu, plutôt que de vous conduire vers l'écran des réglages. C'est une action comme tout le reste : settings.here:themes, settings.here:monitor.
-
Un son que vous entendez au moment où vous le choisissez
Choisir un son de signal ou la sonnerie du terminal le fait jouer. Choisir un son dans une liste de noms qu'on ne peut pas entendre revient à choisir un nom.
-
Rien ne demande de redémarrage
Le dossier des réglages est surveillé, y compris les deux éléments que possède le cœur : la barre de menus macOS construite à partir de votre fichier de raccourcis, et la touche globale de la fenêtre déroulante, l'ancienne touche étant libérée avant que la nouvelle ne soit enregistrée pour qu'il n'y en ait jamais deux actives à la fois. Une vérification lit chaque indication de l'écran des réglages et échoue sur le mot redémarrage.
Parler et se faire lire
Les deux utilisent les fonctions vocales du système, exécutées sur l'appareil. L'audio ne quitte jamais l'ordinateur.
Dictée
Cmd+Shift+V tape ce que vous dites dans le bloc où vous travaillez, et la barre indique en deux lettres la langue qu'elle écoute. Une phrase dictée est tapée et jamais exécutée : la reconnaissance se trompe parfois, et une commande mal comprise qui s'exécute d'elle-même est un programme qui supprime des choses parce qu'une radio était allumée. À côté d'un agent, où une phrase est un message plutôt qu'une commande, elle peut s'envoyer d'elle-même, et c'est un réglage lu au moment où la phrase se termine.
Relire la réponse à voix haute
Cmd+Shift+R lit à voix haute la dernière réponse de l'agent ; appuyer à nouveau l'arrête. Ce qui est lu, c'est la réponse, pas l'écran. Une puce au début, des astérisques autour d'un mot mis en valeur, des apostrophes inverses autour d'un nom, un filet horizontal, un chemin complet là où le nom du fichier suffirait : tout cela disparaît, et les mots qu'ils contiennent restent. La lecture est délimitée par des formes plutôt que par des mots, en bas par la ligne de saisie de l'agent et en haut par son logo, parce que l'interface d'un agent change à chaque nouvelle version.
Les petits détails qui décident si vous le gardez
Le bouton droit nous appartient
Partout dans la fenêtre : le menu propre au bloc à l'intérieur d'un bloc, celui de la fenêtre à l'extérieur, la barre d'onglets, le dock, l'espace entre les tuiles. Chaque ligne est une action, et le menu a lui-même sa propre action, block.menu, de sorte qu'un geste que seule une main peut atteindre n'est pas un geste que rien ne peut vérifier. Le seul endroit qui conserve le menu du système est un champ de texte, où il propose couper, copier, coller et le dictionnaire.
Ouvrir un dossier depuis n'importe où
vobuda://open?path=/some/path ouvre un onglet dans ce dossier, depuis une action Finder, un script ou une autre application. macOS n'a pas de réglage système pour un terminal par défaut, donc c'est la version honnête de cette fonctionnalité plutôt qu'une promesse qu'il ne peut pas tenir.
Rechercher dans un bloc
Cmd+F. Le champ appartient au bloc dans lequel il cherche, et le fermer laisse la vue là où se trouvait la correspondance.
Emporter le bloc avec vous
Cmd+Shift+X copie le texte d'un bloc, demandé au terminal lui-même, ce qui le fait aussi fonctionner avec le rendu GPU activé, où il n'y a pas de texte sélectionnable dans la page. Une image du bloc, ce sont deux actions dans Cmd+K, Block snapshot to clipboard et Block snapshot to a file.
Des vérifications de mise à jour qui ne sont pas une corvée
Le cœur vérifie une fois par jour, dans son propre fil d'exécution, et ce que vous voyez est une bande au-dessus de la disposition plutôt que par-dessus, car une notification qui recouvre un terminal est de celles qu'on apprend à fermer sans les lire. Rien ne s'installe tant que vous n'appuyez pas : pour un agent, la mise à jour est une commande tapée dans le bloc actif où sa sortie reste visible, et pour Vobuda sur un Mac, le bouton installe la nouvelle version en arrière-plan, puis propose un redémarrage, qui se fait tout seul au bout de dix secondes quand rien n'est en cours.
Quarante langues, et un guide dans chacune
Y compris la barre de menus macOS, que le système construit dans le cœur. L'arabe et l'hébreu inversent toute la fenêtre sauf le terminal lui-même, où l'inversion rendrait la sortie et les chemins illisibles. Une clé de traduction est la chaîne anglaise elle-même, si bien qu'une chaîne non traduite retombe sur un anglais lisible plutôt que sur un champ vide ou un identifiant.
Essayez les fonctionnalités que vous venez de découvrir
Après deux courtes questions au premier lancement, il s'ouvre avec un seul bloc terminal et rien d'autre. Tout ce qui précède est quelque chose que vous activez quand vous en avez besoin.
curl -fsSL https://vobuda.com/install.sh | sh