Créer des configurations tmux lancables?

24

Je me retrouve souvent à faire la même chose avec tmux:

  1. cd dans un répertoire donné.
  2. tmux
  3. Renommez la fenêtre de ce que je fais.
  4. Divisez la fenêtre verticalement de 50%.
  5. Démarrez un processus dans la fenêtre de gauche.
  6. Démarrez un autre processus dans la fenêtre de droite.
  7. Profit.

Existe-t-il un moyen d'automatiser le lancement de tout cela afin que je puisse exécuter une seule commande et obtenir la fenêtre que je recherche?

Naftuli Kay
la source
Et un alias shell?
Marco

Réponses:

22

Archwiki sauve la journée! L'initialisation de session sur la page tmux donne un exemple.

Cela dit, au lieu de démarrer tmux as tmux, tmux new -s namenommera la session au démarrage au lieu de lui donner un numéro.

Initialisation de session


Vous pouvez demander à tmux d'ouvrir une session avec des fenêtres préchargées en incluant ces détails dans votre ~ / .tmux.conf:

new  -n WindowName Command
neww -n WindowName Command
neww -n WindowName Command

Pour démarrer une session avec des fenêtres fractionnées (plusieurs volets), incluez la commande splitw sous la nouvelle fenêtre que vous souhaitez fractionner; Ainsi:

new  -s SessionName -n WindowName Command
neww -n foo/bar foo
splitw -v -p 50 -t 0 bar
selectw -t 1 
selectp -t 0

ouvrirait 2 fenêtres, la seconde serait nommée foo / bar et serait divisée verticalement en deux (50%) avec foo au-dessus de la barre. Le focus serait dans la fenêtre 2 (foo / bar), volet supérieur (foo).

Remarque: la numérotation des sessions, des fenêtres et des volets commence à zéro, sauf si vous avez spécifié un index de base de 1 dans votre .conf

Pour gérer plusieurs sessions, sourcez des fichiers de session distincts à partir de votre fichier conf:

# initialize sessions
bind F source-file ~/.tmux/foo
bind B source-file ~/.tmux/bar
Rob
la source
6

La réponse de Rob est excellente et explique exactement comment gérer les sessions depuis tmux lui-même. Maintenant, si cela ne vous dérange pas d'utiliser un outil tiers, tmuxinator est un excellent projet qui permet de créer et de gérer facilement des sessions .

Chaque session est contrôlée par un fichier de configuration qui vous permet de définir toutes vos fenêtres et volets ainsi que leurs dispositions et commandes par défaut à exécuter en leur sein. Il vous permet également de définir un répertoire de projet par défaut, un socket spécifique et des démons qui doivent être exécutés (par exemple mysql). Pour couronner le tout, il fournit également une méthode simple pour les attacher: exécutez simplement mux [session-name]et il démarrera la session ou s'y attachera s'il est déjà en cours d'exécution. Je l'utilise depuis un petit moment maintenant et je l'adore (merci aziz !).

https://github.com/aziz/tmuxinator

JC Yamokoski
la source