mit mehreren terminal x-windows mit einer tmux-sitzung

19

Normalerweise arbeite ich mit 2 Monitoren, die nicht ganz vertikal ausgerichtet sind (ich habe ein Tischnetzteil unter meinem linken Monitor), aber ich möchte 4 Terminalfenster nebeneinander auf meinen Bildschirmen haben, die ich einfach durchlaufen kann, wie folgt:

Bildbeschreibung hier eingeben

Diese Anordnung macht mich sehr traurig, weil ich mit meiner Tastatur nicht alle 4 auf vernünftige Weise durchlaufen kann (Alt-Tab schneidet es für mich nicht aus, weil es nicht die "Reihenfolge" aller 4 Fenster einhält - wenn Ich drücke wiederholt Alt-Tab, es springt nur zwischen meinen 2 zuletzt verwendeten Fenstern)

Gibt es eine Möglichkeit, mit tmux ein zweites x-Fenster zu generieren, sodass ich 2 x-Fenster mit jeweils 2 tmux-Fenstern darin haben kann?

johnny_boy
quelle
Ihr Problem ist (war) also, dass Sie Ihre Fenster auf zwei Monitore verteilt haben und Alt + Tab zwischen den beiden zuletzt geöffneten statt allen vier Fenstern wechseln? Dies scheint ein Job für eine tiling window manager. Hast du es schon probiert? Davon gibt es viele. awesome, i3, wmii, xmonad, Und dwmgehören zu den besten. Allerdings würde ich für Ihre Zwecke vorschlagen i3(1), da es einfach zu erlernen ist (Lesen der Konfigurationsdatei lehrt Sie sowohl die Steuerelemente als auch die Konfigurationsgrundlagen) und auf Multi-Monitor-Setups (xinerama / xrandr) zugeschnitten ist.
Braden Best
Ich habe i3 ausprobiert und es hat mir sehr gut gefallen, aber es hat ungefähr einmal pro Stunde zu Abstürzen bei meinem Ubuntu-Setup geführt :( Aus irgendeinem Grund hat es auch nicht gut mit meinen Monitoren gespielt.
johnny_boy
Ja wirklich? Wie wäre es mit den anderen? wmii und xmonad wären die nächsten in der Warteschlange meiner Vorschläge, da sie auch "schicke" Kacheln für wms sind, gefolgt von dwm (meinem persönlichen Favoriten). Obwohl sie nicht so umfangreich sind wie i3, können sie mehrere Monitore elegant bedienen, IMO.
Braden Best

Antworten:

15

tmux Ermöglicht das Erstellen von "Sitzungsgruppen" - mehrere Sitzungen, die alle mit demselben Satz von Fenstern verbunden werden können.

(Mit Dank an https://gist.github.com/chakrit/5004006 :)

Erstellen Sie im linken Terminal eine neue Sitzung + Fenstergruppe.

tmux new-session -s left

Teilen Sie es wie gewohnt in Scheiben auf.

:split-window -v

Stellen Sie im anderen (rechten) Terminal eine Verbindung zu dieser vorhandenen Fenstergruppe her. Sie müssen ihm den alten Namen für die Verbindung und einen eigenen Sitzungsnamen geben, um ihn zu unterscheiden.

tmux new-session -t left -s right

Erstellen Sie in dieser Sitzung ein weiteres Fenster und teilen Sie es

:new-window
:split-window -h

Sie können jetzt alle ( tmux) Fenster in jedem (Terminal-) Fenster sehen, aber die Ansicht in jedem ist unabhängig von den anderen.

Um von einem zum anderen zu wechseln (ohne die eigenen Verknüpfungen Ihres Fenstermanagers zu verwenden), können Sie z. xdotool .

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

Diese gehen davon aus, dass Sie aktiviert haben tmux‚s - set-titlesOption, um das Terminal einen durchsuchbaren Namen zu geben; und dass Sie tmuxin jedem Fenster nur ein Fenster (mehrere Fenster) verwenden.

JigglyNaga
quelle
Um dies abzuschließen, benötige ich ein Skript, das den aktuellen Bereich zuverlässig abfragt und mit dem Befehl "Fenster aktivieren" zum "nächsten" übergeht. Aber ich habe noch nicht herausgefunden, wie das geht - ich denke, es wird einen zusätzlichen Datenspeicher benötigen, der nicht zur Verfügung steht tmux.
JigglyNaga
Beachten Sie, dass Sie möglicherweise die aggressive Größenänderung aktivieren müssen (setw -g aggressive-resize on), da sonst die Fenster nicht auf den gesamten Bildschirm passen
dgmora
0

Können Sie nicht die Low-Tech-Methode ausführen, bei der die Größe eines Terminals geändert wird (indem Sie die Kanten ziehen), um beide Monitore abzudecken, sodass sich der mittlere Teiler an der Grenze der beiden Monitore befindet?

Walf
quelle
1
Dies funktioniert nicht, wenn beide Monitore unterschiedlich hoch sind oder wenn Sie OS X verwenden.
James
0

Sie möchten tmuxin jedem Terminal eine separate Sitzung starten und dann das einzelne tmuxFenster jeder Sitzung vertikal in zwei Bereiche aufteilen .

Also, in jedem Terminal:

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

Oder kürzer in jedem Terminal:

$ tmux new \; splitw -h

Sie benötigen zwei Sitzungen, da bei einer Sitzung die beiden Terminals immer synchronisiert sind und dasselbe tmuxFenster anzeigen.

Verwenden Sie dann die Verknüpfungen Ihres Desktops, um zwischen den beiden Terminals zu wechseln.

Persönlich wäre ich mit einem einzigen Monitor, einer tmuxSitzung und zwei (oder so vielen) geteilten tmuxFenstern "hintereinander" gegangen und hätte zwischen ihnen gewechselt mit Ctrlb- n, aber das ist Geschmackssache.

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