Tilda beschwert sich beim Start über falsche Bildschirmgröße?

Tilda beschwert sich beim Start über falsche Bildschirmgröße?

Auf Ubuntu 14.04, MATE-Desktop. Ich habe gerade das Tilda-Terminal installiert und es zu den Startanwendungen hinzugefügt, genau wie /usr/bin/tilda. Neustart, Tilda-Start und dann Folgendes bemerkt:

Tilda

„Ihre Bildschirmgröße von 131072 x 1 ist falsch. Es muss mit Problemen gerechnet werden.“

Dann habe ich es versucht killall tilda, Tilda erneut gestartet, dieselbe Meldung.

Weiß jemand, wie ich dieses Problem mit der falschen Bildschirmgröße beheben kann?

Antwort1

Was erzeugt diese Nachricht

Dies wird nicht von der Bourne Again-Shell erzeugt. Dies wird nicht von Tilda erzeugt.

Dies wird durch den psBefehl von erzeugtdas Procps-ToolsetDurchführungdiese Überprüfung in ihrer set_screen_size()Funktion. Der psBefehl erfordert, dass Ihr Terminalgerät mindestens 9 Spalten mal 2 Zeilen hat, damit es Dinge vernünftig anzeigen kann. Irgendwo, möglicherweise ohne Ihr Wissen, rufen Sie auf ps.

Der psBefehl ermittelt Ihre Terminalgröße direkt aus (der Zeilendisziplin) des Terminalgeräts, das an seine Standard-E/A-Dateideskriptoren angeschlossen ist, und ermöglicht die Überschreibung durch COLUMNSUmgebungsvariablen LINES, wenn deren Werte korrekt numerisch sind. Sie können sehen, was Ihr psBefehl sieht, um seine Bestimmung vorzunehmen, indem Sie Folgendes ausführen:

stty-Größe; printenv SPALTEN ZEILEN
Sie können mit dem Aufziehen experimentieren, psindem Sie beispielsweise Folgendes ausführen:

SPALTEN=65535 ZEILEN=1 ps

Wenn Sie die Umgebungsvariablen COLUMNSund auf die blöden Werte 131072×1 gesetzt haben, wie in der Ausgabe von gezeigt , dann tun Sie das einfach nicht. ☺ Es ist jedoch wahrscheinlicher, dass das Terminalgerät selbst diese Größe meldet, was Sie an der Ausgabe von sehen werden . (Beachten Sie, dass die Bourne Again-Shell nur die Werte dieser Shell-Variablen setzt, die, wenn sie nicht exportiert werden, nicht einmal an den Befehl in seiner Umgebung weitergegeben werden, auf die vom Terminalgerät gemeldete Größe. Dies ist eine Ablenkung, denn wenn die Umgebungsvariablen Unsinn sind, wird das TerminalgerätLINESprintenvsttycheckwinsizepscheckwinsizeberichtet selbstUnsinn, und Letzteres ist das zugrunde liegende Problem, das angegangen werden muss.)

Deshalb könnte Tilda der Fehler sein, auch wenn die Meldung nicht ausgegeben wird. Die Größe des Endgeräts ist eine gemeinsam genutzte Ressource, die alles, was einen offenen Dateideskriptor für das Endgerät hat, beliebig mit einem ioctl()Systemaufruf ändern kann. Aber es istkonventionellgesetzt, in dem Szenario, dass man eine Software verwendetTerminalemulatorprogrammwie Tilda, vom Terminalemulatorprogramm, wenn sich die Größe des GUI-Fensters ändert, in dem die Emulation angezeigt wird. Das Terminalemulatorprogramm erhält ein GUI-Größenänderungsereignis, konvertiert es in Spalten und Zeilen und stellt die Gerätegröße mit ein ioctl().

Das soll nicht heißen, dass nicht etwas anderes die Größe dieses Unsinns festgelegt hat. Schließlich kann man es festlegenselbstauf eine beliebige, unsinnige Größe, indem Sie beispielsweise einfach den folgenden Befehl ausführen:

stty Spalten 1 Zeilen 65535

Was uns zu … bringt.

So setzen Sie die Endgerätegröße zurück

Wenn Sie sich in der Situation befinden, dass das Endgerät eine unsinnige Größe meldet:

  • Wenn Sie einen GUI-Terminalemulator verwenden, ändern Sie die Größe der GUI um etwa eine Spalte/Zeile. Dies sollte den Befehl auslösen ioctl()und die Terminalgröße auf einen sinnvollen Wert einstellen.
  • Stellen Sie die Größe auf einen sinnvolleren Wert ein (zum Beispiel):

    stty Spalten 80 Zeilen 25
  • Verwenden Sie den resetBefehl. Beachten Sie, dass resetdadurch neben der Größe des Endgeräts noch viele andere Dinge festgelegt werden.
  • Wenn Ihr Terminalemulator DEC VT340/VT420 kompatibel ist, senden Sie die entsprechenden DECSCPP- und DECSLPP/DECSNLS-Steuersequenzen direkt aus oder verwenden Siedas Nosh-Toolset'Sconsole-resize(auch bekannt alsresizecons) Befehl, um sie auszugeben:

    Größenänderung 80x25

verwandte Informationen