Un vrai shell de connexion,
un par onglet, qui sait quel fichier vous regardez.

Beaucoup d’éditeurs ont un panneau de terminal. Deux détails sont ici plus précis que cela : le shell démarre dans le dossier du fichier où vous êtes, et quand une commande réécrit le fichier au-dessus de lui, l’onglet sait déjà comment s’y prendre.

Studio 1.17.1 · macOS 14+8.5 MB à télécharger
Linelark Studio avec deux terminaux côte à côte sous l’éditeur, l’un lançant une compilation et l’autre listant le dossier du projet
Deux shells, liés au dossier du projetStudio 1.17.1 · macOS 14+

Ce que le panneau lance vraiment, et ce qui se passe ensuite.

Un pseudo-terminal exécutant votre shell de connexion, avec un environnement assemblé délibérément plutôt qu’hérité en bloc — et une réponse définie au moment où une commande qu’on y tape change le fichier au-dessus.

01

Il démarre dans le dossier du fichier

Le répertoire de travail est celui du fichier de l’onglet, pas la racine du projet. Si ce dossier a disparu, il se rabat sur le dossier ouvert, puis sur votre répertoire personnel. Deux onglets portant des fichiers dans des dossiers différents donnent deux shells à des endroits différents.

02

Ou il appartient à un dossier de l’espace de travail

Un terminal peut être lancé pour l’une des racines de l’espace de travail plutôt que pour un fichier, ce qui est le shell qu’on veut pour une compilation ou une série de tests. Le panneau demande ce que vous vouliez dire quand le choix est réel, et permet de passer d’un shell déjà lancé à l’autre.

03

L’épinglage garde un shell au-delà de son onglet

Un terminal de fichier se termine avec son onglet, sauf si vous l’épinglez. Un shell épinglé continue de tourner, et rouvrir ce fichier le récupère plutôt que d’en lancer un second. Un terminal de projet est épinglé par définition.

04

Le panneau se divise en trois shells au maximum

Terminal ▸ Diviser le terminal (⌃⇧5) divise le panneau en colonnes comme l’éditeur se divise en volets. Une division est un second shell sur le même lien — même fichier, même épinglage, terminé par le même onglet — lancé dans le répertoire où se trouve à cet instant le shell dont il est issu, c’est-à-dire en général le dossier où vous venez d’aller.

05

Un onglet propre se recharge, en silence

Lancez un formateur et l’onglet se met à jour. Il ne demande pas, délibérément : dès lors qu’un terminal peut écrire dans ces fichiers, une confirmation par fichier voudrait dire une avalanche de fenêtres pour une commande que vous venez de taper vous-même.

06

Un onglet avec des modifications non enregistrées n’est jamais écrasé

Il demande — « modifié sur le disque. Cet onglet a des modifications non enregistrées. Recharger et les abandonner ? » — avec Recharger et Garder les miennes. Choisir Garder les miennes avance la date de modification enregistrée, pour qu’il ne redemande pas au sujet du même changement.

07

Votre shell de connexion, avec -l

Le shell est lancé comme shell de connexion, pour que ~/.zprofile et consorts soient lus. Les outils installés par Homebrew ou un gestionnaire de versions sont dans le PATH parce que le shell l’a configuré comme il le fait toujours.

08

TERM et COLORTERM sont correctement posés

TERM vaut xterm-256color et COLORTERM vaut truecolor, pour que les programmes qui vérifient avant d’émettre de la couleur 24 bits en émettent réellement.

09

TERM_PROGRAM dit Linelark

C’est la variable que les outils lisent pour savoir dans quel terminal ils se trouvent, et y répondre honnêtement est la façon dont ils s’adaptent correctement.

10

Linelark_FILE nomme le fichier au premier plan

Le répertoire de travail n’a jamais dit que le dossier. Ceci dit quel fichier, ce qu’un outil en ligne de commande veut généralement savoir.

11

Elle est posée ou retirée, jamais héritée

L’app peut elle-même être lancée depuis un de ces shells. Sans l’effacer, un onglet sans titre hériterait d’une valeur périmée et se prétendrait le fichier de quelqu’un d’autre.

12

Les fuites de débogage sont retirées

OS_ACTIVITY_DT_MODE et consorts sont retirés de l’environnement de l’enfant, sans quoi les programmes lancés depuis une compilation de développement croient qu’on les débogue.

L’environnement avec lequel un shell Linelark démarre.

Tout ce que vous avez déjà, avec ceci forcé par-dessus.

VariableValeur et raison
TERMxterm-256color — la base que tout programme curses comprend.
COLORTERMtruecolor — ce que les programmes vérifient avant d’utiliser la couleur 24 bits.
TERM_PROGRAMLinelark — comment un outil identifie le terminal qui l’héberge.
Linelark_FILELe chemin absolu du fichier de l’onglet au-dessus, ou rien pour un onglet sans titre.
LANGFixée à en_US.UTF-8 seulement quand ni LANG ni LC_ALL n’est déjà définie.
Répertoire de travailLe dossier contenant le fichier de l’onglet, à défaut le dossier ouvert, puis le répertoire personnel.

Lu dans le code publié de Linelark Studio 1.17.1, et non dans sa documentation. Quand les deux divergent, c’est celui-ci qui est livré.

Avant d’en faire votre seul terminal.

C’est un vrai shell, mais c’est un shell dans un panneau latéral, et l’édition que vous installez décide s’il existe.

  • L’édition App Store n’a pas de terminalLes règles du bac à sable sous lesquelles cette édition est distribuée ne permettent pas de lancer un shell de connexion : il est donc entièrement exclu de cette compilation, avec git. Le terminal est une fonction de Studio, et Studio est le téléchargement direct.
  • Trois colonnes est le plafondLe panneau se divise en trois shells côte à côte au maximum. iTerm2 et Terminal.app restent de meilleurs terminaux ; celui-ci est mieux placé.
  • Les terminaux ne sont pas enregistrés avec la sessionUn redémarrage commence sans aucun shell, et une colonne divisée n’est pas restaurée du tout — fermer son volet y met fin. L’épinglage survit à un onglet, pas à une fermeture de l’app.
  • Un terminal de projet n’est pas fermé avec son dossierFermer un espace de travail laisse ses shells tourner jusqu’à ce qu’on les ferme à la main, parce qu’une commande en cours n’est pas quelque chose qu’on arrête à votre place.
  • Pas de profils, et pas d’autre shell que le vôtreIl y a un seul shell de connexion, celui pour lequel votre compte est configuré. Rien dans le panneau n’en choisit un autre ni ne conserve un jeu de configurations nommées.
  • Linelark_FILE est posée au lancementUn shell déjà en cours n’apprend rien d’un fichier que vous ouvrez ensuite — la variable a été posée à son démarrage.
  • Les changements extérieurs sont remarqués, pas surveillés en continuLes onglets propres sont rafraîchis pendant que le terminal est utilisé, et la question pour un onglet modifié arrive quand l’app revient au premier plan. Ce n’est pas un observateur de système de fichiers qui réagit en quelques millisecondes.
  • La détection se fait par date de modificationUn changement qui laisse la date de modification intacte n’est pas détecté. En pratique, cela veut dire que les outils ordinaires sont couverts et que la préservation délibérée des horodatages ne l’est pas.

Ouvrez-le sur
vos propres fichiers.

Notarisé par Apple, macOS 14 et versions ultérieures, Intel et Apple silicon.

Télécharger Studio 1.17.1 8.5 MB · toutes les versions, avec leurs empreintes