Asciinema: Capture los colores originales de los terminales

Creado en 8 ago. 2012  ·  25Comentarios  ·  Fuente: asciinema/asciinema

puedes obtener los colores con algunos códigos de consola ... escribí un ejemplo aquí https://github.com/oblique/configs/blob/master/.zsh.d/get_term_rgb_color.py
screen, tmux y la consola virtual no admiten esta operación.

feature request help wanted

Comentario más útil

@timofonic, por favor, nunca más menciones literalmente a todos los que han estado en contacto con un repositorio. Ni siquiera soy un colaborador aquí y no tendría ninguna "noticia" para ti.

Aparte, si alguien tuviera "noticias" sobre esto, o los otros 2 temas que mencionaste a mí y a muchos otros, se habría publicado aquí como un comentario o una solicitud de extracción que cierra este problema. Si no ve nada relevante sobre el tema, asuma que "no hay noticias" para usted.

Todos 25 comentarios

también algunos programas pueden cambiar sus colores, por ejemplo cmatrixreloaded
este es un ejemplo de cómo lo hacen https://github.com/oblique/configs/blob/master/.zshrc#L160
realmente veo mis funciones ncmpcpp () y wicd-curses ()

Probé su script pero obtengo el siguiente error:

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

el script funciona en python3.

para python2 cambie la línea a:
os.write (fd, "\ 033] 4;% d;? \ 033 \"% int (x))

Estuve pensando en algo como esto durante algún tiempo. Gracias por traer esto.
Desafortunadamente, esto solo funciona bajo (u) rxvt y xterm. En gnome-terminal, screen, tmux no lo hace. Así que no sería de mucha utilidad. Si hay otra forma (o adicional) de obtener esta información, me complacerá usarla.
O tal vez haya alguna forma de obtener solo la información "¿estamos bajo la terminal de luz fg / oscuridad bg o bajo oscuridad fg / luz bg".

No lo he investigado ... ¿pero tal vez algo de aquí ? (originalmente forma esta respuesta de stackoverflow )

Funciona en gnome-terminal pero no en konsole.
Intentaré encontrar otra forma.

Descubrí que con tmux puedes reenviar códigos de consola al terminal y modifiqué mi script https://github.com/oblique/configs/blob/master/.zsh.d/get_term_rgb_color.py
No logré hacerlo con la pantalla.
Si tiene alguna pregunta, por favor pregunte.

Lo siento, olvidé enviar mis cambios en las funciones ncmpcpp () y wicd-curses (), ahora está actualizado.

Lo acabo de comprobar en urxvt, xterm, gnome-terminal y tmux. Solo que en gnome-terminal no funciona.
¿Crees que esto también podría funcionar en algún terminal OSX como Terminal.app o ITerm2?

Por el momento estoy refactorizando un poco la grabadora (aquí: https://github.com/sickill/ascii.io-cli/tree/split). Una vez que haya terminado con la refactorización, intentaré usar el código que proporcionaste aquí.

¡Gracias!

No sé sobre Terminal.app o ITerm2, si admiten el cambio de color, funcionará.

Solo como referencia, también encontré esto: https://github.com/dranjan/termcolors
Sin embargo, no estoy seguro de si nos da algo más que el código de @oblique .

Parece que https://github.com/dranjan/termcolors depende de select.poll , que no parece funcionar en OSX.

Borra eso, estaba equivocado. @ sigmavirus24 descubrió que había un problema con la herramienta que pasaba -1 * 2 como un valor de tiempo de espera en lugar de solo -1. Se necesita más investigación ... pero esto podría terminar funcionando.

También tenga en cuenta que cuando probé esto en OSX + iTerm2, en realidad no recogió el término colores correctamente. Entonces, incluso con eso arreglado, todavía no es el más óptimo ya que la API C subyacente que usa termcolors ( select / select.poll ) no es tan flexible como los otros sabores * nix que aceptarán cualquier negativo valor.

Así que trabajé en esto con @ sigmavirus24 y se me ocurrió esto: https://gist.github.com/joshuarh/7904813. Aún es necesario hacer / verificar lo siguiente:

  1. Envíe la información de color al servidor
  2. ¿Eliminar los colores predeterminados? o utilizarlos como respaldo?
  3. Asegúrese de que los colores de fondo / primer plano sean correctos. Estamos usando "números mágicos" aquí, pero creo que son constantes, al menos para los esquemas de colores xresources / xdefaults.
  4. Asegúrese de que el reproductor web pueda manejar lo que está grabado.

    • Creí haber leído que el reproductor que usa el sitio es compatible con vt100, o algo por el estilo. Entonces, ¿podemos enviarle códigos de escape y hacer que "simplemente funcione"? ¿O necesitamos convertir los colores a hexadecimal primero? Si es lo último, entonces tenemos trabajo que hacer. Sé que algunos colores se presentan con la información rgb allí mismo, por lo que no es difícil de analizar, pero el mío en urxvt se ve así: '\x1b[30m' , así que no estoy seguro de cómo convertir eso en algo que puede utilizar en la web.

  5. Pruébelo en varios terminales. Sé que algunas de las otras soluciones no funcionaron en varios terminales (basados ​​en VTE, Terminal.app, iTerm, rxvt, etc.), por lo que debemos asegurarnos de que esto funcione antes de usarlo en gran medida.

No parece fácil obtener el esquema de colores del terminal. En cambio, ¿podríamos permitir que el usuario especifique su esquema de colores en un archivo JSON? Si la implementación se realiza de manera suficientemente genérica, será muy fácil cambiar a cualquier técnica nueva para capturar los colores de la terminal que descubriremos más adelante.

No parece fácil, pero no estoy convencido de que no sea factible. Creo que podemos registrar los códigos de escape, solo tenemos que convertirlos de nuevo a colores xterm.

OTOH, si permitimos a los usuarios especificar qué colores querían, aparecerían posibles características y errores interesantes. Podríamos dejar que las personas elijan qué esquema quieren ver al navegar, pero dependiendo de los colores de primer plano que se registraron, esto podría ser un problema (por ejemplo, aquí está el tema predeterminado con colores de primer plano solarizados en modo alternativo: https: // asciinema .org / a / 2214).

Lo que realmente quise decir es que debería corresponder al cargador especificar el esquema de colores. En cuanto al resto, no lo sé y no soy capaz de juzgar.

@losingkeys ya ESTAMOS registrando los códigos de color de escape. El caso es que son números simples como 1, 2 o 3. Significan rojo, verde y amarillo. Etcétera. La gente usa diferentes esquemas de color en su terminal, pero la mayoría de los esquemas están cerca de los colores xterm "originales", por lo que se ve "bien" en la mayoría de los casos.

@losingkeys Permitir que el usuario especifique su combinación de colores (digamos en formato .Xresources) es algo fácil de hacer y estoy considerando hacerlo. Entonces, si usa solarizado o algún otro tema de terminal que altera completamente el significado de cada color, será una solución para los colores incorrectos.

@mrabault, la solución ideal sería usar la grabadora para detectar y cargar el esquema de terminal, sí. Pero no hemos encontrado (¡todavía!) Una solución lo suficientemente buena que funcione para la mayoría de emuladores de terminal en diferentes sistemas operativos.

¿Se han realizado avances en este sentido, por ejemplo, en la sucursal en movimiento?
¿Sería una opción consultar xrdb por colores? Esto podría recoger un tema personalizado (por ejemplo, solarizado) automáticamente.

@blue no ha progresado hasta ahora.

Consultar xrdb solo tendría sentido para xterm / rxvt / other-terminal-using-x-resources. La gente también usa términos basados ​​en libvte (Gnome Terminal, XFCE Terminal, Terminator, ...) y terminales que no son de Linux (iTerm, Terminal.app en OS X).

@blueyed por cierto, puede cambiar un tema para sus asciicasts, ya sea en toda la cuenta (en la página de configuración de su cuenta) o por asciicast (en la página de edición de asciicast). Por ejemplo, esta es su asciicast en solarized-dark: https://asciinema.org/a/13855?theme=solarized-dark

¡Esta sería una característica genial!

Estamos discutiendo la versión 2 del formato asciicast en # 196, y creo que agregar un objeto colors opcional a los metadatos, que contenga el color de primer plano / fondo del texto y la paleta para los 8 (16) colores sería bueno adición. Como dijo @mrabault , podemos usar y actualizar una técnica de obtención de colores, siempre que la representación de la paleta en JSON se mantenga igual / compatible con el reproductor web.

En cuanto a la técnica actual, este problema es muy antiguo y las soluciones vinculadas parecen haber desaparecido. Quería algo que funcionara en todas las plataformas y dudaba en decidirme por una solución que no funcionara al 100%. Ahora creo que es mejor apoyar lo que podamos ahora, tratar la paleta colors como opcional y recurrir al tema predeterminado del jugador cuando no está en JSON (por cualquier motivo).

¿Alguien con algo que funcione en Python 3.3+?

@timofonic, por favor, nunca más menciones literalmente a todos los que han estado en contacto con un repositorio. Ni siquiera soy un colaborador aquí y no tendría ninguna "noticia" para ti.

Aparte, si alguien tuviera "noticias" sobre esto, o los otros 2 temas que mencionaste a mí y a muchos otros, se habría publicado aquí como un comentario o una solicitud de extracción que cierra este problema. Si no ve nada relevante sobre el tema, asuma que "no hay noticias" para usted.

@timofonic muere en el infierno

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

ethanboxx picture ethanboxx  ·  6Comentarios

KurtPfeifle picture KurtPfeifle  ·  3Comentarios

TyrfingMjolnir picture TyrfingMjolnir  ·  7Comentarios

dlintw picture dlintw  ·  11Comentarios

laughedelic picture laughedelic  ·  7Comentarios