Introduction

Ca fait maintenant 2 bonnes années que j'utilise Tmux à la place du viellissant Screen.

Tmux est un multiplexeur de terminal configurable qui gère aussi bien les raccourcis clavier que les interactions de la souris.

Raccourci dans Tmux

  • killer la fenêtre courante et tous les panes qu'elle contient :

Ctrl + a puis &

  • Sélectionner du texte :

Shift + sélection

Tmuxp

Cette lib python permet de configurer facilement des espaces de travail pour Tmux.

Configurer son .zshrc ou .bashrc

Ajouter ceci pour avoir l'autocompletion

eval "$(_TMUXP_COMPLETE=source tmuxp)"

Tmuxp Load

Un simple :

cd ~/.tmuxp && tmuxp load

va me proposer l'autocompletion et me donner ma liste de fichiers yaml d'espace de travail :

tmuxp load

Par exemple, pour manager ce site, j'utilise cette config :

session_name: labodunerd website
windows:

- window_name: labodunerd
  layout:  main-vertical
  shell_command_before:
  - workon labodunerd
  panes:
    - pelican content
    - shell_command:
      - cd output
      - python -m http.server

- window_name: labodunerd (git)
  layout:  main-vertical
  shell_command_before:
    - workon labodunerd
  panes:
    - git st
    - shell_command:
      - cd output
      - git st

- window_name: ace_editor plugin (git)
  layout:  main-vertical
  shell_command_before:
    - workon labodunerd
  panes:
    - shell_command:
      - cd pelican-plugins/ace_editor
      - git st
    - shell_command:
      - cd themes/lab
      - git st

et le résultat de son chargement :

tmuxp load

Si vous voulez concatener plusieurs espaces de travail en un, c'est possible.

Tmuxp freeze

Permet de faire un snapshot de votre tmux.

Tmuxp import

Il existe 2 gros concurrent à tmuxp :

  • teamocil
  • tmuxinator

Les fichiers de configuration sont sensiblement différents mais les fonctionnalités restent les mêmes. Cet outil en cli permet de les convertir en un format lisible pour Tmuxp.

Tmuxp convert

On peut actuellement utiliser 3 types de fichiers de config différents :

  • du python pure
  • du yaml
  • du json

Si l'on veut passer de l'un à l'autre, cet outil en cli est juste indispensable

Remarques

Il manque sans doute le support de Toml : le meilleur format de conf de tout les temps!

Etendre vos super-pouvoirs avec Tmux

une ligne de commande permettant de supprimer l'ensemble des sessions Tmux

Rajouter ceci dans votre .zshrc ou votre .bashrc :

function tmux_kill_all_sessions() {
    tmux ls;
    local tmux_session=`tmux ls | grep --color=never : | cut -d. -f1 | awk '{print substr($1, 0, length($1))}' | awk -F: '{print $2}'`;
    # "awk -F: '{print $2}'" => permet de supprimer le numéro de ligne
    # préfixé par grep (dût à GREP_OPTIONS='-n')
    tmux kill-session -t "$tmux_session";
}
alias tmuxkillallsessions='tmux_kill_all_sessions'

Comments

comments powered by Disqus