usando múltiples terminales x-windows con una sesión tmux

19

Por lo general, trabajo con 2 monitores que no están alineados verticalmente (tengo una fuente de alimentación de sobremesa debajo de mi monitor izquierdo), pero quiero tener 4 ventanas de terminal una al lado de la otra en mis pantallas, que puedo recorrer fácilmente, de esta manera:

ingrese la descripción de la imagen aquí

Esta disposición me entristece mucho porque no puedo pasar fácilmente por los 4 de una manera sensata usando solo mi teclado (alt-tab no es suficiente para mí porque no mantiene el "orden" de las 4 ventanas, si Presiono repetidamente alt-tab, simplemente rebota entre mis 2 ventanas menos utilizadas recientemente)

¿Hay alguna manera de hacer que tmux genere una segunda ventana x para que pueda tener 2 ventanas x, cada una con 2 paneles tmux dentro de ella?

johnny_boy
fuente
Entonces, ¿su problema es (era) que tiene sus ventanas en mosaico en dos monitores y alt + tab ciclos entre las dos ventanas más recientes en lugar de las cuatro? Esto parece un trabajo para un tiling window manager. ¿Has probado alguna? Hay un montón de ellos. awesome, i3, wmii, xmonad, Y dwmestán entre los mejores. Aunque para sus propósitos, sugeriría i3(1), ya que es fácil de leer (leer el archivo de configuración le enseña tanto los controles como los conceptos básicos de configuración) y está diseñado para configuraciones de monitores múltiples (xinerama / xrandr).
Braden Best
Probé i3 y me encantó, pero causó fallas en mi configuración de ubuntu aproximadamente una vez por hora :( Por alguna razón
tampoco funcionó
¿De Verdad? ¿Qué hay de los otros? wmii y xmonad serían los siguientes en mi lista de sugerencias, ya que también son wms "sofisticados", seguidos de dwm (mi favorito personal). Si bien no son tan ampliamente presentados como i3, manejan múltiples monitores de manera bastante elegante.
Braden Best

Respuestas:

15

tmux le permite crear "grupos de sesiones": varias sesiones que pueden unirse al mismo conjunto de ventanas.

(Con agradecimiento a https://gist.github.com/chakrit/5004006 :)

En el terminal izquierdo, cree una nueva sesión + grupo de ventanas.

tmux new-session -s left

Divídalo en paneles como de costumbre.

:split-window -v

En la otra terminal (derecha), conéctese a ese grupo de ventanas existente. Tendrá que darle el nombre antiguo para conectarse y su propio nombre de sesión para distinguirlo.

tmux new-session -t left -s right

En esa sesión, cree otra ventana y divida

:new-window
:split-window -h

Ahora puede ver todas las tmuxventanas ( ) en cada ventana (terminal), pero la vista en cada una es independiente de la otra.

Para cambiar de uno a otro (sin usar los accesos directos del administrador de ventanas), puede usar, por ejemplo. xdotool .

xdotool search --name 'left:0:' windowactivate
xdotool search --name 'right:1:' windowactivate

Asumen que ha habilitado tmuxla set-titlesopción, para darle al terminal un nombre de búsqueda; y que solo estás usando una tmuxventana (conjunto de paneles) en cada una.

JigglyNaga
fuente
Para completar esto, necesito un script que consulte de manera confiable el panel actual y avance al "siguiente", utilizando el comando "activar ventana" cuando sea apropiado. Pero todavía no he descubierto cómo hacerlo, creo que necesitará un almacén de datos adicional fuera de lo que está disponible tmux.
JigglyNaga
Nota puede que tenga que activar el cambio de tamaño agresiva (setw -g-agresiva de cambio de tamaño sucesivamente), de lo contrario las ventanas no se ajuste a la pantalla completa
dgmora
0

¿No puede hacer el método de baja tecnología de cambiar el tamaño de un terminal (arrastrando los bordes) para cubrir ambos monitores, de modo que el divisor central esté en el límite de los dos monitores?

Walf
fuente
1
Esto no funciona si ambos monitores tienen alturas diferentes, o si está utilizando OS X.
James
0

Deberá iniciar una tmuxsesión separada en cada terminal y luego dividir la tmuxventana única de cada sesión en dos paneles verticalmente.

Entonces, en cada terminal:

$ tmux new-session \; split-window -h

O más corto, en cada terminal:

$ tmux new \; splitw -h

Necesita dos sesiones, porque con una sesión, los dos terminales siempre se sincronizarían y mostrarían la misma tmuxventana.

Luego use los atajos de su escritorio para intercambiar entre los dos terminales.

En lo personal, me habría ido con un solo monitor, una tmuxsesión y dos (o sin embargo muchos) Dividir tmuxventanas "detrás" entre sí, y de intercambio entre ellos con Ctrlb- n, pero eso es una cuestión de gusto.

$ tmux new \; splitw -h \; neww \; splitw -h
Kusalananda
fuente