¿Cómo configurar tmux para que se inicie con ventanas específicas abiertas?
shell
production-environment
tmux
satoru
fuente
fuente
bash --rcfile
para obtener un buen shell en Linux científico con una versión específica de devtools habilitada. Dejaré esto aquí si alguien intenta hacer lo mismo.tmux new-window -n "git lg" "scl enable devtoolset-3 'bash --rcfile <(echo \"source \"$HOME/.bashrc\";cd ~/workspace/coolproject/;git lg\")'"
vim
allí representa el comando que se ejecutará en el primer panel (y en ese momento solamente) de la ventana. Si en su lugar desea nombrar la sesión 'vim', entonces sí, tiene razón, debe usar la-s
bandera. Toda la sintaxis:tmux new-session -d -s SessionName -n WindowName Command
Estaba tratando de crear una cuadrícula compleja de paneles y tuve que lidiar con cambiar y dividir paneles una y otra vez. Aquí están mis aprendizajes:
Comienza con una nueva sesión. Para dividirlo en uso horizontal o vertical
split-window -h
o-v
posteriormente, así:Crea 3 paneles, así:
Para ejecutar comandos en esos paneles, simplemente agréguelos con el
send-keys 'my-command'
comando y elC-m
que lo ejecuta:Y la sesión resultante debería verse así.
Ahora traté de subdividir nuevamente el panel inferior izquierdo, por lo que volví a usar usando
last-pane
, o en ventanas más complejas, conselect-pane -t 1
dónde1
está el número del panel en orden creado a partir de0
.Hace eso. Básicamente, conocer su camino
split-window
yselect-pane
es todo lo que necesita. También es útil pasar con-p 75
un tamaño porcentual del panel creadosplit-window
para tener más control sobre el tamaño de los paneles.Lo que resulta en una sesión así
Espero que ayude a los
tmux
entusiastas en el futuro.fuente
-h -p 30
crea un panel horizontal con el 30% de la altura disponible;-v -p 75
lo mismo para vertical con 75% de ancho.\:
? He visto guiones que funcionan con y sin esto.\;
pasa el punto y coma a tmux en lugar de bash, permitiendo que los comandos se envíen con una llamada a tmux. stackoverflow.com/questions/20913198/…Puede obtener diferentes sesiones de su
.tmux.conf
gusto, así:Y luego formatee las sesiones según lo requiera:
Esto abriría 2 ventanas, la segunda de las cuales se llamaría foo / bar y se dividiría verticalmente por la mitad (50%) con foo corriendo por encima de la barra. El foco estaría en la ventana 2 (foo / bar), panel superior (foo).
Luego puede iniciar su sesión tmux preferida (en este caso, session1) con PrefixShifts
fuente
Prefix Shift S
tengo que estar en tmux y el origen de su archivo intenta iniciar una nueva sesión que tmux no le gusta y no hará a menos que lo fuerce.Use tmuxinator : le permite tener múltiples sesiones configuradas y puede elegir cuál iniciar en cualquier momento. Puede ejecutar comandos en ventanas o paneles particulares y asignar títulos a las ventanas. Aquí hay un ejemplo de uso con el desarrollo de aplicaciones Django .
Archivo de configuración de muestra:
Consulte el archivo README en el enlace anterior para obtener una explicación completa.
fuente
echar un vistazo @ https://github.com/remiprev/teamocil
puedes especificar tu estructura usando YAML
fuente
Sesión 1
crear un alias en .bashrc
fuente
neww
? No puedo encontrar ese comando en ningún lado. ~ Parece que lo esnew-window
, aunque no puedo entender por qué usas tanto la forma larga como la corta.Primero tuve el enfoque de @jasonwryan pero si tienes más de 2 configuraciones, puede ser confuso.
Entonces creé una función de alias:
En
~/.tmux/
tengo varias sesiones para muchos usos. Por ejemplo, trabajo para diferentes compañías que tienen un entorno de desarrollo mutuo. Entonces, con la función de alias anterior, simplemente puedo llamar:tmx company1
y cargar la configuración que necesito.Actualización: El propósito de "$ 2" después del
tmux
comando es que puede pasar argumentos tmux adicionales.fuente
no server running on /tmp/tmux-1000/default
). Es por eso que necesitaba parchear el comandotmux new-session
. Ref github.com/fatso83/dotfiles/commit/…Desde mi script "get.all", que invoco cada mañana para ejecutar un montón de trabajos posteriores "get.XXX" para actualizar el software que sigo. Algunos de ellos son auto-dejar de fumar. Otros requieren más interacción una vez que get ha finalizado (como pedir construir emacs).
fuente
Si solo desea dividir la pantalla en 2 paneles (digamos horizontalmente), puede ejecutar este comando (no se requieren tmux ni scripts de shell):
Su pantalla se verá así:
fuente
Y así es como lo hago:
Tengo un archivo para cada uno de mi proyecto. También puedes agruparlos para tener algunos para trabajar y otros para proyectos de pasatiempo.
También puede moverlo a la
~/bin
carpeta, agregarloPATH
y asignarle untmux_my_awesome_project
nombre. Entonces podrás ejecutarlo desde cada lugar.fuente
Esto funciona para mi. Creación de 5 ventanas con los nombres de pila y selección automática a la
home
ventana.fuente
Prueba hermano , es un programa de arranque.
Proporciona apis fáciles para interactuar
tmux
.Se parece a esto:
Para iniciar un proyecto, todo lo que hay que hacer es ejecutar el siguiente comando:
bro start <project_name>
Vea el screencast a continuación, muestra cómo comenzar
bro
y usar sutmux
API.https://user-images.githubusercontent.com/8296449/50532502-2cf3e400-0b6e-11e9-84af-c5f77a04e5cc.gif
fuente
El complemento tmux-continuum guardará automáticamente su sesión de tmux y la cargará la próxima vez que se inicie tmux, debería ser más fácil de configurar que algunas de las soluciones de script personalizadas aquí.
Para guardar su sesión a pedido, puede usar el complemento tmux-resurrect . tmux-resurrect también es necesario para ejecutar tmux-continuum
fuente
Hay un complemento tmux para esto.
Echa un vistazo a tmux-resurrect
O tmux-continuum
fuente
Puede usar tmux hooks para ejecutar comandos cuando se crea una nueva sesión. Específicamente, esto se logra usando el
session-created
gancho.Por ejemplo, para dividir la pantalla de tres maneras con htop ejecutándose en la esquina inferior derecha, puede agregar la siguiente línea a su
~/.tmux.conf
archivo:La ventaja de este método es que no tiene que ejecutar tmux de ninguna manera especial (es decir, script de alias o alias) para obtener el resultado deseado. También puede combinar esto con lo
tmux new-session -A -s mysession
descrito en esta otra respuesta, de modo que los comandos de enlace solo se ejecutan cuando crea la sesión por primera vez y no en archivos adjuntos posteriores.D15d54c2c agregó esta característica en 2016. La primera versión que la incluye es la 2.4.
fuente
Debe especificarlo en su archivo de configuración de tmux (
~/.tmux.conf
), por ejemplo:(abre una sesión con 2 ventanas con mocp lanzado en primer lugar y mutt en segundo, y otra sesión separada con 3 ventanas vacías).
fuente
He creado este script . No necesita tmuxinator, ruby u otros. Es solo un script bash, configurable:
Un archivo llamado config debería contener algo como esto:
y el código bash debería ser:
fuente
tmux start_server
no inicia un servidor por sí solo. Ver github.com/tmux/tmux/issues/182Intenté usar todas las ideas de esta página y no me gustaron. Solo quería una solución que comenzara tmux con un conjunto específico de ventanas cuando se abrió mi terminal. También quería que fuera idempotente, es decir, abrir una nueva ventana de terminal toma el control de la sesión tmux de la anterior.
Las soluciones anteriores a menudo tienden a abrir múltiples sesiones tmux y solo quiero una. Primero, agregué esto a mi
~/.bash_profile
:luego agregué lo siguiente a mi
~/.tmux.conf
:ahora, cada vez que inicio un terminal o inicio tmux o lo que sea, vuelvo a conectar mi configuración deseada actual (la sesión nombrada
default
) o creo una nueva sesión con esa configuración.fuente
tmux start_server
no inicia un servidor por sí solo. Ver github.com/tmux/tmux/issues/182tmuxp admite la configuración de sesión JSON o YAML y una API de Python. Un archivo de configuración simple de tmuxp para crear una nueva sesión en sintaxis YAML es:
fuente
Este script inicia una sesión con el nombre "e" y tres ventanas
fuente