Asciinema: Capturez les couleurs originales des terminaux

Créé le 8 août 2012  ·  25Commentaires  ·  Source: asciinema/asciinema

vous pouvez obtenir les couleurs avec certains codes de console .. j'ai écrit un exemple ici https://github.com/oblique/configs/blob/master/.zsh.d/get_term_rgb_color.py
screen, tmux et console virtuelle ne prennent pas en charge cette opération.

feature request help wanted

Commentaire le plus utile

@timofonic veuillez ne plus jamais mentionner littéralement tous ceux qui ont été en contact avec un référentiel. Je ne suis même pas un contributeur ici et je n'aurais pas de "nouvelles" pour vous.

Soit dit en passant, si quelqu'un avait des "nouvelles" à ce sujet - ou les 2 autres questions que vous avez mentionnées moi-même et beaucoup d'autres sur - cela aurait été posté ici comme un commentaire ou une demande de tirage qui clôt ce problème. Si vous ne voyez rien de pertinent à propos du problème, supposez qu'il n'y a "aucune nouvelle" pour vous.

Tous les 25 commentaires

aussi certains programmes peuvent y changer les couleurs, par exemple cmatrixreloaded
voici un exemple comment ils le font https://github.com/oblique/configs/blob/master/.zshrc#L160
voir mes fonctions ncmpcpp () et wicd-curses ()

J'ai essayé votre script mais j'obtiens l'erreur suivante:

~ % 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)

le script fonctionne en python3.

pour python2, changez la ligne en:
os.write (fd, "\ 033] 4;% d;? \ 033 \"% int (x))

Je pensais à qc comme ça pendant un certain temps. Merci d'avoir apporté cela.
Malheureusement, cela ne fonctionne que sous (u) rxvt et xterm. Sur gnome-terminal, screen, tmux ce n'est pas le cas. Donc, ce ne serait pas très utile. S'il y a peut-être un autre moyen (ou supplémentaire) d'obtenir ces informations, je serais heureux de les utiliser.
Ou peut-être y a-t-il un moyen d'obtenir juste l'info "sommes-nous sous un terminal fg clair / bg sombre ou sous un fg foncé / bg clair".

Je ne l'ai pas examiné ... mais peut-être quelque chose d'ici ? (à l'origine de cette réponse stackoverflow )

Cela fonctionne dans gnome-terminal mais pas dans konsole.
J'essaierai de trouver un autre moyen.

J'ai trouvé qu'avec tmux, vous pouvez transmettre les codes de la console au terminal et j'ai modifié mon script https://github.com/oblique/configs/blob/master/.zsh.d/get_term_rgb_color.py
Je n'ai pas réussi à le faire avec écran.
Si vous avez des questions, n'hésitez pas à demander.

Désolé, j'ai oublié de pousser mes changements dans les fonctions ncmpcpp () et wicd-curses (), maintenant c'est mis à jour.

Je viens de le vérifier sous urxvt, xterm, gnome-terminal et tmux. Ce n'est que sous gnome-terminal que cela ne fonctionne pas.
Pensez-vous que cela pourrait également fonctionner sur certains terminaux OSX comme Terminal.app ou ITerm2?

En ce moment, je refactore un peu l'enregistreur (ici: https://github.com/sickill/ascii.io-cli/tree/split). Une fois que j'ai terminé la refactorisation, j'essaierai d'utiliser le code que vous avez fourni ici.

Merci!

Je ne sais pas pour Terminal.app ou ITerm2, s'ils prennent en charge le changement de couleur, cela fonctionnera.

Juste pour la référence, j'ai également trouvé ceci: https://github.com/dranjan/termcolors
Je ne sais pas si cela nous donne quelque chose de plus que le code de

Il semble que https://github.com/dranjan/termcolors dépend de select.poll , qui ne semble pas fonctionner sous OSX.

Grattez ça, j'avais tort. @ sigmavirus24 a découvert qu'il y avait un problème avec l'outil passant -1 * 2 comme valeur de délai d'expiration au lieu de seulement -1. Une enquête plus approfondie est nécessaire ... mais cela pourrait finir par fonctionner.

Notez également que lorsque j'ai essayé ceci sur OSX + iTerm2, il n'a pas vraiment choisi le terme couleurs correctement. Donc, même avec cela corrigé, ce n'est toujours pas le plus optimal car l'API C sous-jacente utilisée par termcolors ( select / select.poll ) n'est pas aussi flexible que les autres saveurs * nix qui accepteront tout négatif. évaluer.

J'ai donc travaillé là-dessus avec @ sigmavirus24 et https://gist.github.com/joshuarh/7904813. Ce qui suit doit encore être fait / vérifié:

  1. Envoyez les informations de couleur au serveur
  2. Supprimer les couleurs par défaut? ou les utiliser comme solution de secours?
  3. Assurez-vous que les couleurs d'arrière-plan / de premier plan sont correctes. Nous utilisons des "nombres magiques" ici, mais je pense qu'ils sont constants, au moins pour les couleurs de xresources / xdefaults.
  4. Assurez-vous que le lecteur Web peut gérer ce qui est enregistré.

    • Je pensais avoir lu que le lecteur utilisé par le site était compatible vt100, ou quelque chose du genre. Alors pouvons-nous lui envoyer des codes d'échappement et le faire "juste fonctionner"? Ou devons-nous d'abord convertir les couleurs en hexadécimal? Si c'est le dernier, alors nous avons du travail à faire. Je sais que certaines couleurs sont disposées avec les informations RVB juste à l'intérieur, donc ce n'est pas difficile à analyser, mais la mienne sur urxvt ressemble à ceci: '\x1b[30m' , donc je ne sais pas comment convertir cela en quelque chose que nous peut utiliser sur le Web.

  5. Testez-le dans différents terminaux. Je sais que certaines des autres solutions ne fonctionnaient pas sur divers terminaux (ceux basés sur VTE, Terminal.app, iTerm, rxvt, etc.), nous devons donc nous assurer que cela fonctionne avant de l'utiliser intensivement.

Il ne semble pas facile d'obtenir le schéma de couleurs du terminal. Au lieu de cela, pourrions-nous permettre à l'utilisateur de spécifier son choix de couleurs dans un fichier JSON? Si la mise en œuvre est faite de manière suffisamment générique, ce sera un jeu d'enfant de passer à une nouvelle technique pour capturer les couleurs du terminal que nous découvrirons plus tard.

Cela ne semble pas facile, mais je ne suis pas convaincu que ce soit impossible. Je pense que nous pouvons enregistrer les codes d'échappement, il nous suffit de les reconvertir en couleurs xterm.

OTOH, si nous permettions aux utilisateurs de spécifier les couleurs qu'ils voulaient, cela soulève des fonctionnalités et des bogues intéressants. Nous pourrions laisser les gens choisir le schéma qu'ils souhaitent voir lors de la navigation, mais en fonction des couleurs de premier plan enregistrées, cela pourrait poser un problème (par exemple, voici le thème par défaut avec des couleurs de premier plan solarisées en mode de repli: https: // asciinema .org / a / 2214).

Ce que je voulais vraiment dire, c'est que ce devrait être au téléchargeur de spécifier le schéma de couleurs. Pour le reste, je ne sais pas et je ne suis pas vraiment en mesure de juger.

@losingkeys nous enregistrons déjà les codes de couleur d'échappement. Le fait est que ce ne sont que des nombres simples comme 1, 2 ou 3. Ils signifient rouge, vert et jaune. Etc. Les gens utilisent des schémas de couleurs différents dans leur terminal, mais la plupart des schémas sont proches des couleurs xterm «originales», donc cela semble «correct» dans la majorité des cas.

@losingkeys Permettre à l'utilisateur de spécifier son jeu de couleurs (disons au format .Xresources) est une chose facile à faire et j'envisage de le faire. Donc, si vous utilisez un thème solarisé ou un autre thème de terminal qui modifie complètement la signification de chaque couleur, ce sera une solution pour les mauvaises couleurs.

@mrabault la solution idéale serait d'utiliser un enregistreur pour détecter et télécharger le schéma de terminal, oui. Mais nous n'avons pas (encore!) Trouvé une solution suffisamment bonne qui fonctionnerait pour la majorité des émulateurs de terminaux sur différents systèmes d'exploitation.

Y a-t-il eu des progrès à cet égard, par exemple dans la succursale itinérante?
Interroger xrdb pour les couleurs serait-il une option? Cela pourrait ramasser automatiquement un thème personnalisé (par exemple, solarisé).

@blueyed aucun progrès jusqu'à présent.

Interroger xrdb n'aurait de sens que pour xterm / rxvt / other-terminal-using-x-resources. Les gens utilisent également des termes basés sur libvte (Gnome Terminal, XFCE Terminal, Terminator, ...) et des terminaux non Linux (iTerm, Terminal.app sur OS X).

@blueyed btw, vous pouvez changer un thème pour vos asciicasts, soit à l'échelle du compte (sur la page des paramètres de votre compte), soit par asciicast (sur la page d'édition d'asciicast). Par exemple, c'est votre asciicast dans solarized-dark: https://asciinema.org/a/13855?theme=solarized-dark

Ce serait une fonctionnalité qui tue!

Nous discutons de la version 2 du format asciicast dans # 196, et je pense que l'ajout d'un objet optionnel colors aux méta-données, contenant la couleur de premier plan / arrière-plan du texte et la palette des 8 (16) couleurs serait une bonne chose une addition. Comme l'a dit @mrabault , nous pouvons utiliser et mettre à jour une technique d'obtention des couleurs, tant que la représentation de la palette en JSON reste la même / compatible avec le lecteur Web.

Quant à la technique actuelle, ce problème est très ancien et les solutions liées semblent avoir disparu. Je voulais quelque chose qui fonctionne sur toutes les plateformes, et j'hésitais à m'installer sur une solution non 100% fonctionnelle. Maintenant, je pense qu'il est préférable de prendre en charge ce que nous pouvons maintenant, de traiter la palette colors comme facultative et de revenir au thème par défaut du joueur lorsqu'il n'est pas en JSON (pour quelque raison que ce soit).

Quelqu'un avec quelque chose qui fonctionne sur Python 3.3+?

@timofonic veuillez ne plus jamais mentionner littéralement tous ceux qui ont été en contact avec un référentiel. Je ne suis même pas un contributeur ici et je n'aurais pas de "nouvelles" pour vous.

Soit dit en passant, si quelqu'un avait des "nouvelles" à ce sujet - ou les 2 autres questions que vous avez mentionnées moi-même et beaucoup d'autres sur - cela aurait été posté ici comme un commentaire ou une demande de tirage qui clôt ce problème. Si vous ne voyez rien de pertinent à propos du problème, supposez qu'il n'y a "aucune nouvelle" pour vous.

@timofonic meurt en enfer

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

pfalcon picture pfalcon  ·  4Commentaires

yuvalif picture yuvalif  ·  10Commentaires

lebinh picture lebinh  ·  3Commentaires

omaraboumrad picture omaraboumrad  ·  10Commentaires

ThomasWaldmann picture ThomasWaldmann  ·  3Commentaires