Ich benutze Screen schon seit langem, aber ich verwende eine Version, die ich 2002 modifiziert habe. Hauptsächlich, weil ich in der Lage sein wollte, die “next/prev”-Navigationsreihenfolge der Reihenfolge anzupassen, in der neue Fenster erstellt wurden, ähnlich wie bei einem Kachel-Fenstermanager wie i3 oder Ion . Das Standardverhalten des Bildschirms ist, dass “next” und “prev” nach der Fensternummer gehen, so dass normalerweise ein “neues” Fenster (das die kleinste verfügbare Nummer nimmt) an einer anderen Stelle als das “nächste” Fenster liegt - verwirrend, wenn man sich die Nummern nicht merken kann. Mein bevorzugtes Verhalten wurde inzwischen in Tmux implementiert als ein Flag zum new-window-Befehl in 2010 , und die renumber-windows-Option in 2012 . Mein Screen-Patch, den ich versucht habe, so akzeptabel wie möglich zu machen, einschließlich Ergänzungen der Dokumentation und so weiter, hat im Juli 2002 keine Diskussion auf der Screen-Liste ausgelöst (damals “screen@informatik.uni-erlangen.de”, kann keine Archive finden). Tatsächlich wurde es nicht einmal zur Kenntnis genommen, selbst als ich es ein Jahr später erneut schickte.
Seit 2002 habe ich meinen Patch ein paar Mal “rebasiert”, um ihn auf neuere Versionen von Screen anzuwenden. Als ich jedoch zu Version 4.3 (2015) kam, bemerkte ich eine undokumentierte Änderung, die eine meiner Anwendungen von Screen kaputt machte - nämlich dass ‘stuff’ nun Umgebungsvariablen interpoliert . Ich brauchte diese Funktion nicht, und ich konnte nicht herausfinden, wie ich das Argument für ‘stuff’ einfach entschlüsseln konnte (so dass ich Text mit Dollarzeichen senden konnte), also habe ich einfach Version 4.0 (von 2004) weiter verwendet.
Ich verwende ‘stuff’ von Screen (‘send-keys’ in Tmux) in einer Emacs-Funktion, die den Inhalt der aktuellen Emacs-Region an eine bestimmte Fensternummer sendet. Auf diese Weise kann ich, wenn ich Code in einer Skriptsprache schreibe, einen Interpreter öffnen, dem Interpreter-Fenster eine spezielle Nummer geben, und dann kann ich mit dieser Emacs-Bindung Codezeilen aus meinem Editor-Fenster direkt an das Interpreter-Fenster senden. Es ist hacky, aber ich mag es besser als die reine Emacs-Lösung , da ich auch mit dem Interpreter in seinem Screen-Fenster mit Standard-Tastenanschlägen interagieren kann. Es ist ein bisschen wie eine GUI-IDE, aber ich muss nicht die Maus benutzen oder auf einen blinkenden Cursor starren.
Eine weitere Funktion, die ich in meinem Patch implementiert habe, ist die Möglichkeit, ein Fenster zu “markieren” und dann das markierte Fenster so zu positionieren, dass es nach dem aktuellen Fenster “das nächste” ist. Für mich ist dies ein viel natürlicherer Weg, Fenster neu zu ordnen als eine neue Nummerierung; es ist wie das Kopieren/Einfügen-Paradigma oder “Drag-and-Drop”. (Ich habe kürzlich herausgefunden, wie man das auch in i3 machen kann.)
Es sollte möglich sein, dasselbe in Tmux zu tun, zum Beispiel ab 2015 gibt es eine Möglichkeit, ein Fenster zu “markieren”. Oder vielleicht könnte eine elementarere Lösung mit zustandsabhängigen Shell-Skripten erarbeitet werden. Ich habe ein kurzes Skript und Keybindings implementiert, um die “marked pane”-Methode auszuprobieren, und es hat ein paar Mal funktioniert, aber dann ist Tmux mit “[lost server]” abgestürzt. Dann stürzte Tmux auch ab, ohne dass ich irgendetwas Kompliziertes versucht habe. Anscheinend stürzt es für einige Benutzer schon seit mindestens ein paar Jahren ab. Manchmal stürzt der Server ab, manchmal fängt er an, 100 % der CPU zu verbrauchen und wird reaktionslos. Ich habe noch nie gesehen, dass Screen eines von beidem macht.
Theoretisch ist Tmux Screen in mehrfacher Hinsicht überlegen. Es hat eine viel bessere Skriptfähigkeit, was bedeutet, dass Sie Dinge wie die Abfrage der Liste der Fenster in der aktuellen Sitzung von der Kommandozeile aus tun können, was mit Screen unmöglich ist. Zum Beispiel hat Screen 2015 einen Befehl zum “Sortieren von Fenstern nach Titel” hinzugefügt. Ich bin mir nicht sicher, wann ein solcher spezialisierter Befehl nützlich wäre, aber diese und praktischere Variationen (z. B. Fenster nach CPU-Auslastung sortieren) könnten relativ einfach von einem Shell-Skript in Tmux erledigt werden. Mir scheint es schwierig, so etwas Kreatives in Screen zu machen, zumindest ohne den C-Code zu modifizieren.
Wie schon von anderen Postern erwähnt, hat Tmux ein Single-Server-Modell, was ich als den Hauptnachteil sehe, besonders wenn der Server abstürzt. Es ist möglich, dies zu umgehen, indem man einen separaten Socket für jede “Sitzung” angibt. Trotzdem bevorzuge ich Screen’s Ein-Server-pro-Sitzung-Standard, der etwas eleganter erscheint.
Die Arbeit mit dem Screen-Code war für mich damals im Jahr 2002 lehrreich und unterhaltsam. Seltsamerweise hat Tmux trotz all seiner zusätzlichen Funktionen etwa 25% weniger Codezeilen als Screen (30k gegenüber 40k). Mir ist aufgefallen, dass Tmux viele Baum- und Listendatenstrukturen verwendet, die für mich etwas schwierig zu verstehen waren. Screen schien Arrays zu bevorzugen.
So wie ich es verstehe, gibt es, weil die Unix-Terminalschnittstelle so stabil ist, wenig Notwendigkeit für den Code von Screen oder Tmux, sich an Änderungen im zugrunde liegenden Betriebssystem anzupassen. Diese Programme haben keine wirklichen Sicherheits-Updates wie Web-Browser oder Web-Server oder sogar die Shell. Ich habe keine Probleme beim Betrieb meiner benutzerdefinierten Version von Screen bemerkt, die zuletzt 2004 aktualisiert wurde (außer dass ich einige Konfigurationsdateien hinzufügen musste, um zu verhindern, dass Systemd den Socket löscht; diese Dateien sind in der Regel ohnehin Teil des Distributionspakets). Vielleicht könnte ich die Probleme, die ich in Tmux hatte, einfach umgehen, indem ich eine Tmux-Version von vor dem Absturz laufen lasse. Natürlich ist es für neue Benutzer nicht sehr gut, wenn genug Benutzer dies tun, da es bedeutet, dass weniger Experten nach Fehlern in den letzten offiziellen Versionen dieser Programme suchen werden. Allerdings ist es schwer, mich zu motivieren, auf ein Produkt umzusteigen, das für mich instabil ist (aktuelles Tmux) oder dem bestimmte Funktionen fehlen, die ich haben möchte (Standard Screen).
Ich weiß, dass dies keine einfache Antwort auf die Frage des OPs ist, aber ich hoffe, dass meine Sichtweise nützlich war.