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.
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:
'\x1b[30m'
, also bin ich mir nicht sicher, wie ich das in etwas umwandeln soll, das wir haben kann im Web verwenden.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
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.