Comment configurer tmux pour qu'il démarre avec les fenêtres spécifiées ouvertes?
shell
production-environment
tmux
satoru
la source
la source
bash --rcfile
pour obtenir un joli shell sur Linux scientifique avec une version spécifique de devtools activée. Laissera cela ici si quelqu'un essaie de faire de même.tmux new-window -n "git lg" "scl enable devtoolset-3 'bash --rcfile <(echo \"source \"$HOME/.bashrc\";cd ~/workspace/coolproject/;git lg\")'"
vim
représente la commande qui doit être exécutée dans le premier volet (et à ce moment uniquement) de la fenêtre. Si vous voulez plutôt nommer la session 'vim' alors oui, vous avez raison, vous devez utiliser le-s
drapeau. Syntaxe entière:tmux new-session -d -s SessionName -n WindowName Command
J'essayais de créer une grille complexe de volets et j'ai dû faire face à la commutation et au fractionnement des volets encore et encore. Voici mes apprentissages:
Vous permet de démarrer avec une nouvelle session. Pour le diviser horizontalement ou verticalement, utilisez-le
split-window -h
ou-v
par la suite, comme ça:Crée 3 volets, comme ceci:
Pour exécuter des commandes dans ces volets, ajoutez-les simplement avec la
send-keys 'my-command'
commande etC-m
qui l'exécute:Et la session résultante devrait ressembler à ça.
Maintenant, j'ai essayé de sous-diviser à nouveau le volet inférieur gauche, afin de revenir soit en utilisant
last-pane
, soit dans des fenêtres plus complexes,select-pane -t 1
où1
est le numéro du volet dans l'ordre créé en commençant par0
.Est-ce que. Fondamentalement, connaître votre chemin
split-window
etselect-pane
c'est tout ce dont vous avez besoin. Il est également pratique de passer avec-p 75
un pourcentage de taille du volet créé parsplit-window
pour avoir plus de contrôle sur la taille des volets.Ce qui donne une session ressemblant à ça
J'espère que cela aidera les
tmux
passionnés à l'avenir.la source
-h -p 30
crée un panneau horizontal avec 30% de la hauteur disponible;-v -p 75
idem pour vertical avec 75% de largeur.\:
? J'ai vu des scripts fonctionner avec et sans cela.\;
passe le point-virgule à tmux au lieu de bash, permettant aux commandes d'être envoyées avec un seul appel à tmux. stackoverflow.com/questions/20913198/…Vous pouvez vous procurer différentes sessions à partir de votre
.tmux.conf
comme:Et puis formatez les sessions selon vos besoins:
Cela 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).
Vous pouvez ensuite démarrer votre session tmux préférée (dans ce cas, session1) avec PrefixShifts
la source
Prefix Shift S
je dois être dans tmux et l'approvisionnement de votre fichier essaie de démarrer une nouvelle session que tmux n'aime pas et ne fera pas à moins que vous ne le forciez.Utilisez tmuxinator - il vous permet d'avoir plusieurs sessions configurées, et vous pouvez choisir celle à lancer à tout moment. Vous pouvez lancer des commandes dans des fenêtres ou des volets particuliers et donner des titres aux fenêtres. Voici un exemple d'utilisation avec le développement d'applications Django .
Exemple de fichier de configuration:
Voir le fichier README sur le lien ci-dessus pour une explication complète.
la source
jetez un oeil à https://github.com/remiprev/teamocil
vous pouvez spécifier votre structure en utilisant YAML
la source
Session 1
créer un alias dans .bashrc
la source
neww
? Je ne trouve cette commande nulle part. ~ On dirait que c'est le casnew-window
, même si je ne comprends pas pourquoi vous utilisez à la fois la forme longue et la forme courte.J'ai d'abord eu l'approche de @jasonwryan mais si vous avez plus de 2 configurations, cela peut devenir déroutant.
J'ai donc créé une fonction d'alias:
Dans
~/.tmux/
j'ai plusieurs sessions pour de nombreuses utilisations. Par exemple, je travaille pour différentes entreprises qui ont un environnement de développement différent. Donc, avec la fonction d'alias ci-dessus, je peux simplement appeler:tmx company1
et charger la configuration dont j'ai besoin.Mise à jour: Le but de "$ 2" après la
tmux
commande est que vous puissiez passer des arguments tmux supplémentaires.la source
no server running on /tmp/tmux-1000/default
). C'est pourquoi j'avais besoin de patcher la commande avectmux new-session
. Ref github.com/fatso83/dotfiles/commit/…A partir de mon script "get.all", que j'invoque chaque matin pour exécuter un tas de jobs "get.XXX" ultérieurs pour rafraîchir le logiciel que je surveille. Certains d'entre eux s'arrêtent automatiquement. D'autres nécessitent plus d'interaction une fois le get terminé (comme demander de construire emacs).
la source
Si vous voulez juste diviser l'écran sur 2 volets (par exemple horizontalement), vous pouvez exécuter cette commande (aucun script tmux ou shell requis):
Votre écran ressemblera à ceci:
la source
Et voici comment je le fais:
J'ai un fichier pour chacun de mes projets. Vous pouvez également les regrouper pour en avoir pour le travail, pour des projets de loisirs.
Vous pouvez également le déplacer dans un
~/bin
dossier, l'ajouterPATH
et donner untmux_my_awesome_project
nom. Ensuite, vous pourrez l'exécuter à partir de chaque endroit.la source
Cela fonctionne pour moi. Création de 5 fenêtres avec les noms donnés et sélection automatique de la
home
fenêtre.la source
Essayez bro , c'est un bootstrapper de projet.
Il fournit des API faciles à interagir avec
tmux
.Cela ressemble à ceci:
Pour lancer un projet, il suffit d'exécuter la commande suivante -
bro start <project_name>
Découvrez le screencast ci-dessous, il montre comment commencer
bro
et utiliser sontmux
api.https://user-images.githubusercontent.com/8296449/50532502-2cf3e400-0b6e-11e9-84af-c5f77a04e5cc.gif
la source
Le plugin tmux-continuum enregistrera automatiquement votre session tmux et la chargera au prochain démarrage de tmux, devrait être plus facile à configurer que certaines des solutions de script personnalisées ici.
Pour enregistrer votre session à la demande, vous pouvez utiliser le plugin tmux-resurrect . tmux-resurrect est également requis pour exécuter tmux-continuum
la source
Il existe un plugin tmux pour cela.
Découvrez tmux-resurrect
Ou tmux-continuum
la source
Vous pouvez utiliser des hooks tmux pour exécuter des commandes lorsqu'une nouvelle session est créée. Plus précisément, cela est réalisé en utilisant le
session-created
crochet.Par exemple, pour diviser l'écran de trois manières avec htop exécuté en bas à droite, vous pouvez ajouter la ligne suivante à votre
~/.tmux.conf
fichier:L'avantage de cette méthode est que vous n'avez pas besoin d'exécuter tmux d'une manière spéciale (c'est-à-dire un script shell ou un alias) pour obtenir le résultat souhaité. Vous pouvez également combiner cela avec celui
tmux new-session -A -s mysession
décrit dans cette autre réponse de sorte que les commandes de raccordement ne soient exécutées que lorsque vous créez la session pour la première fois et non sur les pièces jointes suivantes.Cette fonctionnalité a été ajoutée par d15d54c2c en 2016. La première version à l'inclure est la 2.4.
la source
Vous devez le spécifier dans votre fichier de configuration tmux (
~/.tmux.conf
), par exemple:(ouvre une session avec 2 fenêtres avec mocp lancé en premier et mutt en deuxième, et une autre session détachée avec 3 fenêtres vides).
la source
J'ai créé ce script . Il n'a pas besoin de tmuxinator, rubis ou autres. C'est juste un script bash, configurable:
Un fichier nommé config devrait contenir quelque chose comme ceci:
et le code bash devrait être:
la source
tmux start_server
ne démarre pas un serveur tout seul. Voir github.com/tmux/tmux/issues/182J'ai juste essayé d'utiliser toutes les idées de cette page et je n'en ai aimé aucune. Je voulais juste une solution qui a démarré tmux avec un ensemble spécifique de fenêtres lorsque mon terminal s'est ouvert. Je voulais aussi qu'elle soit idempotente, c'est-à-dire que l'ouverture d'une nouvelle fenêtre de terminal reprend la session tmux de la précédente.
Les solutions ci-dessus ont souvent tendance à ouvrir plusieurs sessions tmux et je n'en veux qu'une. Tout d'abord, j'ai ajouté ceci à mon
~/.bash_profile
:puis j'ai ajouté ce qui suit à mon
~/.tmux.conf
:maintenant, chaque fois que je démarre un terminal ou que je démarre tmux ou quoi que ce soit, je me reconnecte à la configuration désirée existante (la session nommée
default
) ou crée une nouvelle session avec cette configuration.la source
tmux start_server
ne démarre pas un serveur seul. Voir github.com/tmux/tmux/issues/182tmuxp prend en charge la configuration de session JSON ou YAML et une API python. Un simple fichier de configuration tmuxp pour créer une nouvelle session dans la syntaxe YAML est:
la source
Ce script démarre une session avec le nom "e" et trois fenêtres
la source