Gagner en productivité avec Tmuxinator

Posté le 16 février 2020 · 8 minutes de lecture

Dans le monde de l’informatique, il y a une chose qui m’effraie depuis de longues années; avoir trop d’onglets. Tu sais, quand tu te perds dans les onglets de ton terminal là, ça:

Capture d'écran avec un terminal ayant trop d'onglets

N’est-ce pas l’enfer sur Terre ? Quand je développe quelque chose, j’ai souvent plusieurs terminaux comme ça, à la louche:

  • La commande pour lancer le back
  • La commande pour lancer le front
  • Quand j’utilise les queues avec Laravel
  • Les logs
  • Git pour le back
  • Git pour le front
  • Etc…

Bref: l’enfer.

Les gens normaux utiliseraient Terminator. Les true sisters savent que ce n’est qu’un prototype du T-800, parce qu’il existe un logiciel qui fait ça tellement mieux: Tmux. De plus, c’est un émulateur de terminal qui est quand même assez lent, même s’il permet de faire la même chose que ce que nous allons voir aujourd’hui: splitter le terminal en plusieurs « panels » pour afficher tout un tas d’informations en une seule fenêtre.

En plus d’être lent, on va dire que ça n’en jette pas assez. Le clavier, il n’y a que ça de vrai.

Capture d'écran de Terminator J’avoue, j’ai piqué l’image sur Duckduckgo.

Ça fait le taf, si vous êtes flemmard·e·s, vous pouvez juste faire un dnf install terminator sur Fedora, sinon utilisez votre gestionnaire de paquet habituel (apt, pacman, etc…). Et si on transformait notre terminal en T-800 ?

Tmux

C’est un multiplexeur de terminal. Quand vous avez votre terminal, vous avez juste à exécuter tmux dessus, vous quitterez votre shell (bash, zsh, etc) et vous atteririez sur une session Tmux. Vous pouvez quitter la session pour y retourner plus tard, exactement comme ce qu’on peut faire avec screen.

Pour que Tmux comprenne qu’il doit exécuter une commande, il faut la précéder de CTRL+b et ensuite la commande de votre choix. Par exemple CTRL-b et ensuite " pour ajouter un nouvel onglet de manière horizontalement. CTRL-b puis % pour le diviser verticalement. Il existe plein de raccourcis pour Tmux, vous pouvez consulter une cheatsheet ici.

Du coup, on obtient très facilement ceci:

Capture d'écran d'un Tmux de base

Ça a déjà plus de gueule qu’un vulgaire Terminator. On l’a, notre T-800 !

Maintenant que t’as les bases, on peut s’attaquer au sujet de l’article: Tmuxinator.

Skynet, on te fait la peau !

Alors on va me dire “Oui mais tu peux configurer un script sh pour quand tu lances tmux toussa toussa”. Oui, j’ai pas ton temps, frère. Je suis là pour être productive et botter des culs avec mes nouvelles Doc Martens. D’ailleurs, ne sont-elles pas super cool ?

Des Docs pour mieux botter des culs Comme Tmuxinator, elles sont là pour botter des culs, ma gueule.

Alors on va commencer par installer Ruby et rbenv si tu n’as pas ça sur ton système (profites-en pour apprendre le langage, il est au top 💖).

Pour installer rbenv (qui permet d’installer plusieurs versions de Ruby sur ta machine), tu peux suivre ce petit tutoriel (la première partie suffit). Petite info: dans le tutoriel, iels utilisent bash. Si tu as un autre émulateur de terminal, fais toi plaisir, on est là pour ça.

Une fois que tu as bien tout fait, tu dois juste lancer un petit gem install tmuxinator. Bon là par contre, prépare vim tu vas devoir configurer des choses.

Tmuxinator utilise un système de projets; c’est-à-dire que tu peux avoir plusieurs configurations selon ton occupation du moment. Sauf si tu traînes encore sur Reddit. On te voit. 😁 Par exemple, tu peux avoir un template pour quand tu fais du php, pour quand tu écris un article tranquillement sur ton blog. Et c’est ce qu’on va faire, tiens. J’écris actuellement ce billet sur Codium mais ça consomme un peu trop de mémoire vive à mon goût. Vim c’est très bien donc ça sera mon éditeur à partir de maintenant.

Créons le projets: tmuxinator new redaction. Si le logiciel te dis de configurer les variables $EDITOR, tu peux faire export EDITOR="vim" ou echo EDITOR="vim" >> .zshrc && source ~/.zshrc. Tranquille. Vim parce qu’ici, on est des power users Si vim se lance, c’est normal. Tu peux configurer ton projet de suite.

La configuration d’un projet se fait au format YAML. Petites explications:

  • name: nom de ton projet (par défaut, ce que tu as entré après tmuxinator new).
  • root: le path de ton travail, en partant du répertoire de ton utilisateur.
  • windows: liste des fenêtres sur l’instance tmux. Par défaut il y a editor, server et logs.

Dans la première fenêtre, il y a ceci:

  • layout: c’est le layout utilisé, il y en a 5 de bases mais tu peux en faire toi même, c’est écrit dans la doc ici ou man tmux.
  • panes: liste d’onglets qui seront ouverts dans chaque fenêtre.

Pour ma part, j’ai supprimé les fenêtres server et logs, elles ne sont pas utiles dans mon cas d’utilisation.

Pour information, voici ma configuration (avec les commentaires supprimés):

1
2
3
4
5
6
7
8
9
10
name: redaction
root: blog

windows:
  - editor:
      layout: main-vertical
      panes:
        - vim
        - bundle exec jekyll serve
        - gst

Une fois que tu as sauvegardé ta configuration (!wq pour sauvegarder et quitter ou :q! pour partir sans sauvegarder, au cas où tu serais perdu·e 😆) puis tu peux exécuter tmuxinator redaction, tu as alors une session tmux qui se lance avec vim au centre, Jekyll en localhost et le petit git à droite. Que demande le peuple ?

C’est un outil extrêmement puissant, je l’utilise tout les jours au travail depuis que Aeris me l’a fait découvrir parce que je n’avais pas le temps de configurer un tmux aux petits oignons.

Une fois que c’est configuré, vous pouvez lancer tmuxinator redaction et profiter de ce manifique assemblage de fenêtre parfaitement organisé, parfait pour travailler en toute quiètude en fullscreen avec tout ce qu’il nous faut. 😊

Capture d'écran de tmuxinator