tmux ändert die Größe nicht mit dem Terminalfenster

9

Wenn ich die Größe eines Terminalfensters mit einer tmux-Sitzung ändere, erkennt tmux diese Änderung nicht, funktioniert jedoch weiterhin normal innerhalb der alten Fenstergrenzen. tmux lszeigt keine anderen angehängten Clients an, bevor ich anhänge:

$ tmux ls
admin: 1 windows (created Mon Apr 27 15:12:58 2015) [272x75]
apt-runs: 3 windows (created Mon Apr 27 15:17:50 2015) [272x75]
lal-dev: 4 windows (created Tue Jun  9 12:24:25 2015) [238x73]

Dies geschieht nur mit einem bestimmten Host (unter tmux 1.9a), und das Trennen / erneutes Anhängen behebt das Problem (bis die Fenstergröße erneut geändert wird). Was könnte das verursachen?

Vor dem Ändern der Größe: Vor

Nach Größenänderung: Geben Sie hier die Bildbeschreibung ein

Will Vousden
quelle
3
Ist dieser Sitzung ein weiteres Terminalfenster zugeordnet, das die Größe begrenzt?
Anthon
@Anthon Nope - tmux lszeigt keine anderen Clients. Ich habe dies in der Frage geklärt.
Will Vousden
Ich habe dieses Problem. Bemerkenswert ist, dass wir beide unter OSX arbeiten, obwohl ich wahrscheinlich eine aktuellere Version verwende. Haben Sie eine Lösung gefunden, da keine akzeptierte Antwort vorliegt?
SidOfc
Ich sehe dies immer noch im Jahr 2020. Probleme resizein der Shell, die unter tmux ausgeführt wird, beheben das Problem, bis die Größe des Terminalfensters erneut geändert wird. Dies unterscheidet sich geringfügig von dem, was @saterHater unten gesagt hat. Er schien vorzuschlagen, dass Sie tmux trennen müssen, bevor Sie diesen Befehl ausgeben.
Tom Ellis
Dieses Problem scheint relevant zu sein: github.com/tmux/tmux/issues/359 . Außerdem sollte ich darauf hinweisen, dass ich xmonad verwende, das für tmux vielleicht ein ebenso unbekannter Fenstermanager ist wie MacOS.
Tom Ellis

Antworten:

7

Am einfachsten ist es, andere Clients von den Sitzungen zu trennen, wenn Sie Folgendes anhängen:

tmux attach -d

oder kurz

tmux a -d

Alternativ können Sie andere Clients in eine andere Sitzung verschieben, bevor Sie eine Verbindung zur Sitzung herstellen: https://stackoverflow.com/a/7819465/1069083

rubo77
quelle
Wie ich in der Frage sagte, gab es keine anderen Kunden. Im Gegensatz zu diesem Fall bleibt bei mehreren Clients mit unterschiedlichen Terminalgrößen die Statusleiste am unteren Bildschirmrand und der nicht verwendete Bereich wird mit Punkten ausgefüllt. Ich habe dieses Problem nie gelöst, arbeite aber nicht mehr an dem System, auf dem es aufgetreten ist.
Will Vousden
5

Ich bin nicht mit Terminal-Jargon vertraut, aber ich habe es geschafft, diesen Fehler durch die folgenden Schritte zu beseitigen:

  1. Verlassen Sie die Sitzung, indem Sie Ctrl+ drücken b d(keine Sorge, Sie können vollständig intakt zur Sitzung zurückkehren).

  2. Überprüfen Sie, ob Ihre Konsolenanwendung ausgeführt wird xterm. Wenn echo $TERMzurückgegeben xtermwird, funktioniert dieses Verfahren möglicherweise für Sie.

  3. Geben Sie resizein Ihr Terminal ein.

  4. Kehren Sie zu Ihrer Sitzung zurück, indem Sie sie erneut aufrufen tmux. Wie Sie sehen können, laufen alle Ihre Sitzungen so, als hätten Sie tmux nie verlassen.

Tmux verknüpft die Terminalgröße mit Ihrer xtermVariablen 'size'. Wenn Sie Ihre $TERMEinstellung auf haben screen, kann ich Ihnen nicht helfen, da ich nicht weiß, was die Befehle für diese TERM-Sitzung sind.

saterHater
quelle
1
Wenn Sie diesen Weg gehen, müssen Sie dies jedes Mal tun, wenn Sie die Größe des Fensters ändern. Genau das hat OP in der Frage angegeben.
Thomas Dickey
1
Das Aufrufenresize (nach apt install xterm) war der entscheidende Schritt, den ich vermisst habe.
Ulidtko