Asciinema: Wird die Größenänderung von Fenstern nicht überleben

Erstellt am 27. Jan. 2016  ·  9Kommentare  ·  Quelle: asciinema/asciinema

Wenn Sie asciinema in einem großen Terminalfenster starten und dann die Größe des Fensters (während der Aufnahme) auf eine kleinere Größe ändern, wird das Video ganz falsch ausgegeben.

Interessanterweise überlebt es umgekehrt gut.

In diesem Beispiel führe ich sl - mein Lieblingsprogramm - in einem großen Terminalfenster aus, ändere dann die Fenstergröße auf ein kleines Fenster (das ist die "unbequeme Pause" - ich ändere die Fenstergröße) und führe sl wieder. Der zweite Durchlauf sieht OK aus, aber der erste ist verstümmelt.

https://asciinema.org/a/5wvarzb4545pohhfqnj8g9fta

Zur Veranschaulichung ist dies das entgegengesetzte Beispiel. Klein anfangen, dann Größe ändern. Beide Läufe funktionieren gut.

http://asciinema.org/a/d9u278gcavlymvywrleh0kbup

bug

Hilfreichster Kommentar

Dieses Problem würde die gelegentliche Verwendung von Asciinema zur Aufzeichnung der gesamten täglichen Arbeit verbieten, was eine irritierende Einschränkung darstellt, Terminalfenster niemals zu verkleinern.

Alle 9 Kommentare

asciinema zeichnet nicht den Bildschirm auf, sondern den stdout-Stream. Es speichert auch die aktuellen Terminalabmessungen am Ende der Aufnahmesitzung. Einige Terminal-Apps (wie sl ) hängen von der tatsächlichen Terminalgröße ab. Sie erzeugen Escape-Sequenzen, die für die aktuelle Terminalbreite/-höhe zu einem bestimmten Zeitpunkt geeignet sind. Da der Asciinema-Player aufgezeichnete Standardausgaben tatsächlich interpretiert/ausführt, werden diese Escape-Sequenzen gegen die aktuelle Asciinema-Terminalgröße ausgeführt.

Mit anderen Worten, um dieses Problem zu lösen, müsste Asciinema die Terminal-Resize-Ereignisse speichern (dies ist möglich) und sie dann verwenden, um die Größe seines eigenen "Terminals" während der Wiedergabe zu ändern. Dies würde jedoch dazu führen, dass die Größe des Players selbst geändert wird, was lustig aussehen würde (bei der Wiedergabe auf asciinema.org) und unpraktisch (bei Einbettung in eine Site) wäre.

Ich verstehe die Herausforderungen und ich verstehe, wenn Sie sie nicht beheben möchten, ich wollte Sie nur wissen lassen.

Es könnte gelöst werden, indem man dem Player die maximale Breite aller Breiten und die maximale Höhe aller Höhen vorgibt und der Text oben links sein könnte - es wäre der gleiche Fall, als ob Sie mit einem kleinen Terminal beginnen und mit einem großen Terminal enden würden . Ich weiß aber nicht, ob es sich lohnt zu reparieren :)

Es ist nicht so, dass ich es nicht reparieren möchte, aber es gibt mehr Feinheiten (Ihre vorgeschlagene Lösung würde in einigen Fällen immer noch zu schlechten Ergebnissen führen). Wie auch immer, dies ist eine Art Randfall, und ich bin mir auch nicht sicher, ob es sich lohnt, ihn zu reparieren.

Das lasse ich aber offen.

Dieses Problem würde die gelegentliche Verwendung von Asciinema zur Aufzeichnung der gesamten täglichen Arbeit verbieten, was eine irritierende Einschränkung darstellt, Terminalfenster niemals zu verkleinern.

Ich denke, es muss eine Flexibilität für die Dimensionen geben. Ich hatte ein Video ( hier ) aufgenommen und es kam in unangenehmen Dimensionen heraus, dh das eingebettete Video nahm mehr als die Höhe der Seite ein. Jetzt bleibt mir nichts anderes übrig, als noch einmal aufzunehmen.
Ich habe sogar versucht, die Breite und Höhe im .json zu ändern, was natürlich nicht gut funktionierte, da ich Überlappungen hatte ( this )

PS Obwohl dies nicht zum Thema der obigen Diskussion gehört, war dies das nächste Problem, das ich diesbezüglich finden konnte.

@xloem @mukkachaitanya Ich entwerfe ein neues Aufnahmeformat (https://github.com/asciinema/asciinema/pull/196). Vielleicht könnten wir dafür sorgen, dass es das Ereignis "Terminal Resize" unterstützt...

Ich benötige ein Util, um meine Terminalaktivität zu "sichern". Und natürlich sollte dieses Dienstprogramm "einfach funktionieren", auch wenn ich die Terminalgröße ändere. Vielleicht gibt es noch andere Programme, die das Feature unterstützen?

Könnten Sie etwas Licht ins Dunkel bringen, wie das Ereignis zur Größenänderung des Terminals erfasst wird? Wäre wirklich nützlich in einem Zweig, an dem ich arbeite, für Echtzeit-Asciicasts (und der Größenänderungsfall während der Aufnahme bin ich mir sicher)

@jiangts Hier ist der Ort, an dem der Rekorder die Terminalgröße (SIGWINCH-Signal) handhabt: https://github.com/asciinema/asciinema/blob/develop/asciinema/pty_recorder.py#L108

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

pfalcon picture pfalcon  ·  4Kommentare

ethanboxx picture ethanboxx  ·  6Kommentare

abaykan picture abaykan  ·  10Kommentare

ThomasWaldmann picture ThomasWaldmann  ·  3Kommentare

bashfulrobot picture bashfulrobot  ·  11Kommentare