Asciinema: Erfassen Sie die ursprünglichen Terminalfarben

Erstellt am 8. Aug. 2012  ·  25Kommentare  ·  Quelle: asciinema/asciinema

Sie können die Farben mit einigen Konsolencodes erhalten. Ich habe hier ein Beispiel geschrieben: https://github.com/oblique/configs/blob/master/.zsh.d/get_term_rgb_color.py
screen, tmux und virtual console unterstützen diesen Vorgang nicht.

feature request help wanted

Hilfreichster Kommentar

@timofonic bitte nie wieder nur buchstäblich jeden erwähnen, der mit einem Repository in Kontakt war. Ich bin hier nicht einmal ein Mitwirkender und ich hätte keine "Neuigkeiten" für Sie.

Abgesehen davon, wenn jemand "Neuigkeiten" zu diesem - oder den beiden anderen Themen, über die Sie mich und viele andere erwähnt haben - hätte, wäre dies hier entweder als Kommentar oder als Pull-Anfrage veröffentlicht worden, die dieses Problem schließt. Wenn Sie für das Problem nichts Relevantes sehen, gehen Sie davon aus, dass "keine Neuigkeiten" für Sie vorliegen.

Alle 25 Kommentare

Einige Programme können dort auch die Farben ändern, z. B. cmatrixreloaded
Dies ist ein Beispiel, wie sie es tun https://github.com/oblique/configs/blob/master/.zshrc#L160
sehe tatsächlich meine Funktionen ncmpcpp () und wicd-curses ()

Ich habe Ihr Skript ausprobiert, erhalte jedoch die folgende Fehlermeldung:

~ % get_term_rgb_color.py 1
Traceback (most recent call last):
  File "/home/kill/bin/get_term_rgb_color.py", line 30, in <module>
    os.write(fd, bytes("\033]4;%d;?\033\\" % int(x), "UTF-8"))
TypeError: str() takes at most 1 argument (2 given)

Das Skript funktioniert in Python3.

Ändern Sie für Python2 die Zeile in:
os.write (fd, "\ 033] 4;% d ;? \ 033" "% int (x))

Ich habe einige Zeit über so etwas nachgedacht. Danke, dass du das gemacht hast.
Leider funktioniert dies nur unter (u) rxvt und xterm. Auf Gnome-Terminal, Bildschirm, tmux nicht. Es würde also nicht viel nützen. Wenn es vielleicht eine andere (oder zusätzliche) Möglichkeit gibt, diese Informationen zu erhalten, würde ich sie gerne verwenden.
Oder vielleicht gibt es eine Möglichkeit, nur die Information "Sind wir unter hellem fg / dunklem bg-Terminal oder unter dunklem fg / hellem bg" zu erhalten?

Ich habe es nicht untersucht ... aber vielleicht etwas von hier ? (ursprünglich aus dieser Stackoverflow-Antwort )

Es funktioniert zwar im Gnome-Terminal, aber nicht in der Konsole.
Ich werde versuchen, einen anderen Weg zu finden.

Ich habe festgestellt, dass Sie mit tmux Konsolencodes an das Terminal weiterleiten können, und habe mein Skript https://github.com/oblique/configs/blob/master/.zsh.d/get_term_rgb_color.py geändert
Ich habe es nicht mit Bildschirm geschafft.
Wenn Sie Fragen haben, wenden Sie sich bitte.

Entschuldigung, ich habe vergessen, meine Änderungen in den Funktionen ncmpcpp () und wicd-curses () zu übernehmen. Jetzt ist es aktualisiert.

Ich habe es gerade unter urxvt, xterm, gnome-terminal und tmux überprüft. Nur unter dem Gnome-Terminal funktioniert es nicht.
Denken Sie, dass dies auch auf einem OSX-Terminal wie Terminal.app oder ITerm2 funktionieren könnte?

Im Moment überarbeite ich den Rekorder ein wenig (hier: https://github.com/sickill/ascii.io-cli/tree/split). Sobald ich mit dem Refactoring fertig bin, werde ich versuchen, den hier angegebenen Code zu verwenden.

Vielen Dank!

Ich weiß nicht über Terminal.app oder ITerm2 Bescheid, wenn sie Farbänderungen unterstützen, funktioniert es.

Nur als Referenz habe ich auch folgendes gefunden: https://github.com/dranjan/termcolors
Ich bin mir nicht sicher, ob es uns mehr als den Code von

Es sieht so aus, als ob https://github.com/dranjan/termcolors von select.poll abhängt, was unter OSX nicht zu funktionieren scheint.

Kratz das, ich habe mich geirrt. @ sigmavirus24 hat herausgefunden, dass es ein Problem mit dem Tool gab, das -1 * 2 als Timeout-Wert anstelle von nur -1

Beachten Sie auch, dass der Begriff Farben beim Versuch unter OSX + iTerm2 nicht richtig aufgenommen wurde. Selbst wenn dies behoben ist, ist es immer noch nicht das Optimalste, da die zugrunde liegende C-API, die termcolors verwendet ( select / select.poll ), nicht so flexibel ist wie die anderen * nix-Varianten, die negative Ergebnisse akzeptieren Wert.

Also habe ich mit @ sigmavirus24 daran gearbeitet und https://gist.github.com/joshuarh/7904813. Folgendes muss noch getan / überprüft werden:

  1. Senden Sie die Farbinformationen an den Server
  2. Standardfarben entfernen? oder als Fallback verwenden?
  3. Stellen Sie sicher, dass die Hintergrund- / Vordergrundfarben korrekt sind. Wir verwenden hier "magische Zahlen", aber ich denke, sie sind konstant, zumindest für xresources / xdefaults-Farbschemata.
  4. Stellen Sie sicher, dass der Web-Player mit den aufgezeichneten Daten umgehen kann.

    • Ich dachte, ich hätte gelesen, dass der Player, den die Site verwendet, vt100-kompatibel ist oder etwas in diesem Sinne. Können wir ihm also Escape-Codes senden und es "einfach funktionieren" lassen? Oder müssen wir zuerst die Farben in Hex umwandeln? Wenn es das letztere ist, dann haben wir noch etwas zu tun. Ich weiß, dass einige Farben mit den RGB-Informationen genau dort angeordnet sind, daher ist das nicht schwer zu analysieren, aber meine auf urxvt sehen folgendermaßen aus: '\x1b[30m' , also bin ich mir nicht sicher, wie ich das in etwas umwandeln soll, das wir haben kann im Web verwenden.

  5. Testen Sie es in verschiedenen Terminals. Ich weiß, dass einige der anderen Lösungen auf verschiedenen Terminals (VTE-basierte, Terminal.app, iTerm, rxvt usw.) nicht funktionierten. Daher sollten wir sicherstellen, dass dies funktioniert, bevor wir es intensiv nutzen.

Es scheint nicht einfach zu sein, das Farbschema des Terminals zu erhalten. Können wir dem Benutzer stattdessen erlauben, sein Farbschema in einer JSON-Datei anzugeben? Wenn die Implementierung generisch genug erfolgt, ist es ein Kinderspiel, auf eine neue Technik umzusteigen, um die Terminalfarben zu erfassen, die wir später entdecken werden.

Es scheint nicht einfach zu sein, aber ich bin nicht davon überzeugt, dass es nicht machbar ist. Ich denke, wir können die Escape-Codes aufzeichnen, wir müssen sie nur wieder in xterm-Farben konvertieren.

OTOH, wenn wir den Benutzern erlauben konnten, anzugeben, welche Farben sie wollten, werden interessante mögliche Funktionen und Fehler angezeigt. Wir könnten die Leute wählen lassen, welches Schema sie beim Surfen sehen möchten, aber abhängig von den aufgezeichneten Vordergrundfarben könnte dies ein Problem sein (hier ist beispielsweise das Standardthema mit solarisierten Vordergrundfarben im Fallback-Modus: https: // asciinema .org / a / 2214).

Was ich wirklich gemeint habe ist, dass es dem Uploader überlassen sein sollte, das Farbschema anzugeben. Im Übrigen weiß ich es nicht und kann es nicht wirklich beurteilen.

@losingkeys Wir

@losingkeys Es ist einfach, dem Benutzer zu erlauben, sein Farbschema anzugeben (sagen wir im .Xresources-Format), und ich denke darüber nach, genau das zu tun. Wenn Sie also ein solarisiertes oder ein anderes Terminal-Thema verwenden, das die Bedeutung jeder Farbe vollständig ändert, ist dies eine Lösung für falsche Farben.

@mrabault Die ideale Lösung wäre, einen Rekorder zu verwenden, um das Terminalschema zu erkennen und hochzuladen. Wir haben jedoch (noch!) Keine ausreichend gute Lösung gefunden, die für die meisten Terminalemulatoren unter verschiedenen Betriebssystemen geeignet ist.

Wurden in dieser Hinsicht Fortschritte erzielt, z. B. in der Unterwegsbranche?
Wäre es eine Option, xrdb nach Farben abzufragen? Dies könnte automatisch ein benutzerdefiniertes Thema (z. B. solarisiert) aufnehmen.

@blueyed bisher keine Fortschritte.

Das Abfragen von xrdb wäre nur für xterm / rxvt / other-terminal-using-x-resources sinnvoll. Die Benutzer verwenden auch libvte-basierte Begriffe (Gnome Terminal, XFCE Terminal, Terminator, ...) und Nicht-Linux-Terminals (iTerm, Terminal.app unter OS X).

@blueyed Übrigens können Sie ein Thema für Ihre Asciicasts ändern, entweder kontoweit (auf Ihrer Kontoeinstellungsseite) oder per Asciicast (auf der Asciicast-Bearbeitungsseite). Zum Beispiel ist dies Ihr Asciicast in solarized-dark: https://asciinema.org/a/13855?theme=solarized-dark

Dies wäre ein Killer-Feature!

Wir diskutieren Version 2 des Asciicast-Formats in # 196, und ich denke, das Hinzufügen eines optionalen colors -Objekts zu Metadaten, das Textvordergrund- / Hintergrundfarbe und die Palette für alle 8 (16) Farben enthält, wäre eine nette Sache Zusatz. Wie @mrabault sagte, können wir eine Technik zum Erhalten der Farben verwenden und aktualisieren, solange die Palettendarstellung in JSON dieselbe / mit dem Web-Player kompatibel bleibt.

Was die eigentliche Technik betrifft, ist dieses Problem sehr alt und die verknüpften Lösungen scheinen verschwunden zu sein. Ich wollte etwas, das auf allen Plattformen funktioniert, und ich zögerte, mich für eine nicht zu 100% funktionierende Lösung zu entscheiden. Jetzt denke ich, es ist besser, nur das zu unterstützen, was wir jetzt können, die colors -Palette als optional zu behandeln und auf das Standardthema des Players zurückzugreifen, wenn es nicht in JSON ist (aus irgendeinem Grund).

Hat jemand etwas, das an Python 3.3+ arbeitet?

@timofonic bitte nie wieder nur buchstäblich jeden erwähnen, der mit einem Repository in Kontakt war. Ich bin hier nicht einmal ein Mitwirkender und ich hätte keine "Neuigkeiten" für Sie.

Abgesehen davon, wenn jemand "Neuigkeiten" zu diesem - oder den beiden anderen Themen, über die Sie mich und viele andere erwähnt haben - hätte, wäre dies hier entweder als Kommentar oder als Pull-Anfrage veröffentlicht worden, die dieses Problem schließt. Wenn Sie für das Problem nichts Relevantes sehen, gehen Sie davon aus, dass "keine Neuigkeiten" für Sie vorliegen.

@timofonic die in hell

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

SR-Lut3t1um picture SR-Lut3t1um  ·  3Kommentare

Edo78 picture Edo78  ·  5Kommentare

pfalcon picture pfalcon  ·  4Kommentare

karelbilek picture karelbilek  ·  9Kommentare

ThomasWaldmann picture ThomasWaldmann  ·  3Kommentare