utilizzando più terminali x-windows con una sessione tmux


19

Di solito lavoro con 2 monitor che non sono perfettamente allineati verticalmente (ho un alimentatore da banco sotto il mio monitor sinistro), ma voglio avere 4 finestre terminali affiancate sui miei schermi che posso scorrere facilmente, in questo modo:

inserisci qui la descrizione dell'immagine

Questa disposizione mi rende molto triste perché non riesco facilmente a scorrere tutti e 4 in modo sano usando solo la mia tastiera (alt-tab non lo taglia perché non mantiene l '"ordinamento" di tutte e 4 le finestre - se Premo ripetutamente alt-tab, rimbalza tra le mie 2 finestre usate meno di recente)

C'è un modo per far sì che tmux generi una seconda finestra x in modo che io possa avere 2 finestre x, ognuna con 2 riquadri tmux al suo interno?


Quindi il tuo problema è (era) che hai le tue finestre affiancate su due monitor e i cicli alt + tab tra le due finestre più recenti anziché tutte e quattro? Sembra un lavoro per a tiling window manager. Ne hai provato qualcuno? Ce ne sono molti. awesome, i3, wmii, xmonad, E dwmsono tra i migliori. Anche se per i tuoi scopi, suggerirei i3(1), poiché è semplice da prendere (leggere il file di configurazione ti insegna sia i controlli che le basi della configurazione) ed è su misura per configurazioni multi-monitor (xinerama / xrandr).
Braden Best

Ho provato i3 e l'ho adorato, ma ha causato arresti anomali della mia installazione di Ubuntu circa una volta all'ora :( Per qualche motivo non ha funzionato bene con i miei monitor.
johnny_boy

veramente? E gli altri? wmii e xmonad sarebbero i prossimi nella coda dei miei suggerimenti, dal momento che sono anche "fantasiosi" wms di piastrellatura, seguiti da dwm (il mio preferito). Sebbene non siano ampiamente presenti come i3, gestiscono più monitor in modo abbastanza elegante IMO.
Braden Best

Risposte:


15

tmux ti permette di creare "gruppi di sessioni" - più sessioni che possono essere collegate allo stesso set di finestre.

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

Nel terminale di sinistra, crea una nuova sessione + gruppo di finestre.

tmux new-session -s left

Dividilo in riquadri come al solito.

:split-window -v

Nell'altro terminale (a destra), connettersi a quel gruppo di finestre esistente. Dovrai dargli il vecchio nome a cui connettersi e il suo nome di sessione per distinguerlo.

tmux new-session -t left -s right

In quella sessione, crea un'altra finestra e dividi

:new-window
:split-window -h

Ora puoi vedere tutte le tmuxfinestre ( ) in ciascuna finestra (terminale), ma la vista in ciascuna è indipendente dall'altra.

Per passare dall'una all'altra (senza usare le scorciatoie del tuo gestore di finestre), puoi usare ad es. xdotool .

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

Questi presuppongono che tu abbia abilitato tmuxl' set-titlesopzione, al fine di dare al terminale un nome ricercabile; e che stai usando solo una tmuxfinestra (set di riquadri) in ciascuno.


Per completare questo, ho bisogno di uno script che interroghi in modo affidabile il riquadro corrente e passi a quello "successivo", usando il comando "attiva finestra" quando appropriato. Ma non ho ancora capito come farlo - penso che avrà bisogno di un archivio dati aggiuntivo al di fuori di ciò che è disponibile per tmux.
JigglyNaga,

Nota che potresti dover attivare il ridimensionamento aggressivo (setw -g aggressivo-ridimensionamento attivato), altrimenti le finestre non si adatteranno allo schermo intero
dgmora,

0

Non riesci a fare il metodo a bassa tecnologia di ridimensionare un terminale (trascinando i bordi) per coprire entrambi i monitor, in modo che il divisore centrale si trovi al limite dei due monitor?


1
Questo non funziona se entrambi i monitor hanno altezze diverse o se stai utilizzando OS X.
James

0

Si consiglia di avviare una tmuxsessione separata in ciascun terminale, quindi dividere tmuxverticalmente la finestra singola di ciascuna sessione in due riquadri.

Quindi, in ciascun terminale:

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

O più breve, in ciascun terminale:

$ tmux new \; splitw -h

Sono necessarie due sessioni, poiché con una sessione i due terminali sarebbero sempre sincronizzati e mostrerebbero la stessa tmuxfinestra.

Quindi utilizzare i collegamenti sul desktop per scambiare tra i due terminali.

Personalmente, sarei andato con un singolo monitor, una tmuxsessione e due (o comunque molte) tmuxfinestre divise "dietro" l'una all'altra, e scambiare tra loro con Ctrlb- n, ma è una questione di gusti.

$ tmux new \; splitw -h \; neww \; splitw -h
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.