2 puntos por GN⁺ 2024-10-04 | 1 comentarios | Compartir por WhatsApp
  • El problema de los colores en la terminal tiene menos que ver con gustos y más con la falta de estándares y las diferencias de implementación: la misma salida de un comando puede volverse difícil de leer según la combinación de terminal, tema y app
  • Se usan en conjunto los 16 colores ANSI básicos, 256 colores y colores hexadecimales de 24 bits, pero el color real que corresponde a cada número puede variar según el emulador de terminal
  • Contrastes como texto azul sobre fondo negro, amarillo brillante sobre fondo blanco, el mapeo de grises de Solarized o el color de fondo de ngrok muestran choques de contraste cuando las suposiciones del programa no coinciden con el tema del usuario
  • Las respuestas se dividen en varias capas: reconfigurar la paleta, base16-shell, LS_COLORS, NO_COLOR=true, --color=always, unbuffer y el soporte de color de 24 bits en Vim/Neovim
  • Las funciones de minimum contrast de iTerm2, tabby, kitty, Ghostty y Windows Terminal no son una solución perfecta, pero reducen el riesgo de obtener salidas ilegibles

Colores ANSI y diferencias entre terminales

  • Las terminales suelen tener 16 colores ANSI, compuestos por negro, rojo, verde, amarillo, azul, magenta, cian, blanco y sus respectivas versiones brillantes
  • Los programas especifican colores imprimiendo ANSI escape codes
    • Por ejemplo, se puede especificar el número del color de primer plano con una forma como \033[38;5;{num}m
  • El problema es que no hay un estándar consistente que indique a qué color hex corresponde realmente cada número de color ANSI
    • Cada emulador de terminal elige los colores por su cuenta
    • Incluso en la tabla de colores de ANSI escape code de Wikipedia hay grandes diferencias entre implementaciones
  • Debido a esta diferencia, el azul que ls usa para los directorios puede no verse bien sobre un fondo negro
  • La combinación de amarillo brillante con fondo blanco también es casi ilegible, y pueden aparecer problemas similares con otros colores, como el verde brillante

Cómo reconfigurar la paleta de colores

  • Si no te gustan los colores ANSI predeterminados o hay problemas de contraste, puedes responder con una reconfiguración de la paleta
  • Configuración desde el emulador de terminal

    • La mayoría de los emuladores de terminal modernos ofrecen una función para reconfigurar colores
    • Algunos incluyen temas por defecto
    • Cuanto más popular sea el emulador de terminal, más temas disponibles suele haber
  • Configuración con scripts de shell

    • Se puede cambiar la paleta de colores del emulador de terminal imprimiendo ANSI escape codes
    • El script Solarized Light de base16-shell usa varias convenciones de escape codes específicas de distintas terminales
    • El script intenta elegir el estilo de escape code adecuado según la variable de entorno TERM
    • El enfoque con scripts de shell facilita mantener la misma configuración de colores aunque cambies de emulador de terminal
    • Sin embargo, no todos los emuladores de terminal admiten cambios de paleta de esta forma y, aun cuando los admiten, los resultados pueden variar un poco

256 colores, color de 24 bits y temas por herramienta

  • Muchas terminales admiten tres formas de especificar colores
    • 16 colores ANSI
    • 256 colores extendidos
    • Colores hexadecimales de 24 bits como #ffea03
  • fd usa escape codes como ^[[38;5;48m en su salida para especificar el color de primer plano número 48
    • Ese color puede verse como un verde lima que no aparece en la tabla de colores general de la terminal
    • Puede tener mal contraste con la tabla de colores que estés usando
  • bat usa colores de forma similar, pero su salida predeterminada parece intentar funcionar con diversos temas de terminal
  • Algunas herramientas modernas de terminal, como fd, bat y delta, admiten temas personalizados arbitrarios
    • El tema predeterminado puede chocar con el fondo de la terminal
    • A cambio, permite controlar el tema de la salida de la herramienta con más detalle que si solo se eligieran los 16 colores ANSI
  • Si usas bat --theme ansi, bat utiliza los colores ANSI definidos en la tabla de colores normal de la terminal

Conflictos que aparecen con Solarized y base16

  • Solarized Light puede mostrar distintos mapeos de colores bright según la implementación
  • El tema Solarized Light predeterminado de iTerm mapea los colores 9 a 14, es decir, “bright blue”, “bright red”, etc., a tonos de gris, como en el diseño original de Solarized
    • Si ls usa colores bright para directorios y ejecutables, pueden verse en gris
  • base16 Solarized Light puede usarse como una variante que mantiene los colores bright como colores reales, no como grises
  • Esta diferencia parece ser resultado de que Solarized se diseñó originalmente para que el esquema de colores de Vim pudiera usar grises
  • base16-shell configura los colores 16 a 21 para proporcionar colores adicionales a base16-vim
    • Cuando ngrok intenta configurar el fondo con el color 16, “black”, si ese color fue remapeado a un naranja brillante, aparece un fondo muy extraño
    • Estos conflictos son fáciles de provocar cuando un programa especifica un color ANSI de fondo y el usuario remapea ese color con otro significado

Reducir problemas de contraste con minimum contrast

  • Algunas terminales tienen una función de minimum contrast que ajusta automáticamente los colores cuando el contraste entre primer plano y fondo no es suficiente
  • iTerm2, tabby, text_fg_override_threshold de kitty, Ghostty y Windows Terminal ofrecen esta función
  • Si en iTerm se configura el valor de minimum contrast en 40, incluso salidas difíciles de leer, como el conflicto con el color de fondo de ngrok, se vuelven más legibles
  • Cuando la configuración de colores es incorrecta o un programa choca con el tema, minimum contrast es una salvaguarda práctica para reducir problemas accidentales de legibilidad

TERM, pipes y desactivación del color

  • Si el sistema al que te conectas por SSH no admite el valor de la variable de entorno local TERM, los colores pueden no funcionar correctamente
  • El sistema usa la base de datos terminfo, y si el valor de TERM no está en esa base de datos, es difícil saber qué salida de color corresponde a la terminal
  • Aunque no hubo un entorno reproducible, una respuesta de Stack Overflow propone usar una forma como TERM=xterm ssh en lugar de ssh
  • Cuando se encadenan comandos con pipes, a veces se desactiva el color
    • fd | less puede mostrar salida sin color
    • En general, cuando se pasa la salida a herramientas como grep, es útil que llegue solo texto plano sin escape codes
  • Si quieres conservar el color, puedes usar unbuffer fd | less -r
    • unbuffer abre una tty para que el comando crea que está escribiendo en una TTY
    • También resuelve el problema de buffering en la salida del programa al escribir en un pipe
  • Algunos comandos, como fd, pueden imprimir colores siempre usando el flag --color=always

Desactivar o cambiar los colores de ls

  • Algunos usuarios no quieren la salida con colores de ls
    • Porque el azul es difícil de leer sobre fondo negro
    • Porque no quieren ajustar la tabla de colores de la terminal
    • O porque el color en sí puede no ser útil
  • Hay varias opciones
    • Se puede desactivar el color con ls --color=never
    • Se pueden personalizar los colores que usa ls con la variable de entorno LS_COLORS
    • Algunos programas admiten NO_COLOR=true, y hay una lista en no-color.org
  • Por ejemplo, si se configura algo como LS_COLORS="fi=0:di=0:ln=0:pi=0:so=0:bd=0:cd=0:or=0:ex=0" ls, se pueden establecer en 0 los estilos de color de varios tipos de archivo

Cambios en Vim y Neovim

  • La configuración de colores de Vim solía tener muchos problemas porque había que alinear la tabla de colores de la terminal con el esquema de colores de Vim
  • Dentro de la terminal, la configuración de colores de Vim tiene dos enfoques principales
    • Mapear clases de color de Vim a números de color ANSI
    • Hacer que el esquema de colores use directamente colores hexadecimales de 24 bits como #faea99
  • Hace 20 años no era común que las terminales admitieran colores hexadecimales de 24 bits, y Vim tampoco admitía el uso de color de 24 bits en la terminal
  • Vim agregó soporte de color de 24 bits en 2016
  • Neovim 0.10 se lanzó en mayo de 2024, y en terminales con soporte de color de 24 bits, termguicolors está activado por defecto
  • Si en 2024 no planeas usar una terminal sin soporte de color de 24 bits, desaparece la carga de tener que sincronizar obligatoriamente la tabla de colores de la terminal con el esquema de colores de Vim
  • Con este cambio, se reduce la necesidad de que base16-shell configure de forma especial los colores 16 a 21 para integrarse con Vim
    • Si se elimina esa parte, se pueden evitar conflictos como el fondo naranja de ngrok

Experiencia de uso y límites de base16

  • Usar base16-shell junto con base16-vim facilita alinear los colores de la terminal y de Vim
  • Se puede configurar agregando unas líneas a la configuración de fish y unas líneas a .vimrc
  • base16 no es una solución para todos
    • La cantidad de temas incluidos es limitada, y puede que no haya ninguno que te guste
    • El tema Solarized de base16 configura los colores ANSI bright igual que los colores normales, lo que puede ser un problema en casos de uso que requieren que los colores bright sean distintos
    • El enfoque de configurar los colores 16 a 21 para proporcionar más colores a base16-vim puede no ser necesario en entornos donde solo se usan terminales con soporte de color de 24 bits
    • La configuración de los colores 16 a 21 puede causar problemas en terminales que no admiten 256 colores, como la Linux framebuffer terminal
  • Existe un fork comunitario de base16 llamado tinted-theming

Herramientas para paletas de colores y temas populares

Problemas que siguen pendientes

  • En puntos donde se cruzan varios programas, como la combinación de tmux, SSH y Vim, pueden aparecer problemas de color adicionales
  • Elegir una buena paleta de colores también es difícil en sí mismo
    • Para usuarios con alteraciones en la percepción del color, puede ser difícil encontrar una paleta adecuada
    • Si el color de fondo se parece demasiado al color del cursor o de la selección, puede ser difícil ubicar la posición
    • Es difícil encontrar colores que funcionen bien en todos los programas, y pueden aparecer conflictos como el caso de ngrok
  • Los programas que esperan un aspecto “clásico” específico basado en colores ANSI predeterminados, como Nethack o Midnight Commander, pueden verse extraños con temas como Solarized
  • Una forma de responder es cambiar la paleta ANSI justo antes de ejecutar el programa
    • Por ejemplo, se puede remapear el amarillo a un amarillo más brillante antes de ejecutar Nethack
  • Para usuarios que solo quieren que los colores funcionen bien, tanta configuración manual es una carga; por eso son importantes valores predeterminados razonables y funciones como minimum contrast

1 comentarios

 
GN⁺ 2024-10-04
Opiniones de Hacker News
  • Al intentar crear correctamente un tema de colores claros para el sistema, me topé con este y muchos otros problemas; dos en particular me parecieron interesantes.
    En retrospectiva es obvio, pero me sorprendió que los temas claros se vean mucho más sutilmente distintos entre pantallas que los temas oscuros. Aunque la configuración de hardware y software genera diferencias en la salida de color, los cambios centrados en áreas claras se perciben mucho más que los cambios en áreas oscuras.
    Además, a veces hay que bajar a entornos con soporte limitado de fuentes y colores vistosos, como la consola de Linux o BSD; entonces fd o exa/lsd/whatever pueden volverse incómodos o directamente inutilizables, sobre todo si mapeaste este último a ls. Después de una larga batalla configuré fbterm para tener funciones de terminal aceptables incluso sin X, pero fbterm también tiene sus propios problemas. Al configurar la paleta de colores de Vim, conviene preparar un tema alternativo para consolas con pocas capacidades, o practicar mucho escribir comandos de Vim sin mirarlos :D
    Edición: no es para trabajo serio, pero una pantalla de fbterm estilizada que muestra lo que se puede hacer incluso sin X: https://i.imgur.com/RbDRgtD.png

    • No sorprende que los temas claros se vean más sutilmente distintos de una pantalla a otra. Hago copias analógicas en blanco y negro con película, y es bien sabido que el ojo humano detecta cambios tonales finos mucho mejor en las zonas claras de una copia que en las zonas oscuras.
      Por eso, al ajustar la exposición y el contraste adecuados, se dedica bastante tiempo a hacer que las altas luces se vean “justo bien”. No hago copias digitales, pero supongo que se aplica el mismo principio.
    • Normalmente deberías poder depender de una variable TERM configurada correctamente, y las utilidades de línea de comandos también deberían respetar las capacidades que se pueden conocer a partir de la variable TERM.
      Lamentablemente, los frameworks de herramientas de línea de comandos “modernas”, muchas veces escritos en JavaScript, tienden a ignorar esto.
      https://www.gnu.org/software/gettext/manual/html_node/The-TE...
    • Hace poco intenté mostrar una gran cantidad de series de datos con colores distintos en un gráfico de Excel, y la mejor opción para distinguir fácilmente muchos colores fue un arcoíris espectral de colores sólidos sobre fondo negro.
      También hay una configuración que aplica a los puntos de datos un efecto tenue de “resplandor” del mismo color, para que parezcan puntos brillantes. Tiene sentido que, desde el punto de vista de la saturación del color, es decir, de la relación señal-ruido en todo el espectro, el fondo negro sea mejor.
      Se pueden usar unos 10 colores distintos casi sin problemas. Además, tiene la ventaja de transmitir información de orden/distancia, como que el amarillo está entre el rojo y el verde, o el naranja entre el rojo y el amarillo, lo que facilita subdividir e interpretar qué tan cerca están dos colores.
    • Incluso con una fuente linda y un tema de colores agradable, todo puede arruinarse con un solo fondo que haga difícil leer algún carácter.
  • En realidad no me parece tan difícil
    Paso 1: la mayoría de los emuladores de terminal tienen una paleta de colores predeterminada pésima, así que basta con cambiarla. En lo personal me gusta Solarized, especialmente el tema oscuro, aunque el tema claro también está bien. Incluso si no es Solarized, hay muchos temas en los que cualquier color se puede leer sobre el fondo predeterminado
    Paso 2: hay que evitar las herramientas de línea de comandos que usan por defecto secuencias de escape de color de 8 bits o 24 bits. Puede ser polémico, pero personalmente lo veo como algo hostil hacia el usuario. Yo ya elegí la mejor paleta de colores de terminal para mis necesidades de legibilidad, y no ayuda que un desarrollador se crea una especie de diseñador de mentiras y la sobrescriba. Se puede ofrecer una opción para activar temas dentro de la herramienta, pero debería ser algo opcional, no el valor predeterminado
    Como alguien que pasa la mayor parte de su vida en la terminal, con solo seguir estas dos reglas se puede crear un entorno de terminal consistente y fácil de leer casi sin carga de configuración. El verdadero problema es que toleramos demasiado que los desarrolladores usen códigos de escape de color de 8 bits y 24 bits

    • Esto está relacionado con el problema de los buenos valores predeterminados. Si el usuario tiene que configurarlo, primero tiene que saber que se puede configurar y luego efectivamente configurarlo. Es una barrera grande, y muy pocos usuarios la superan
      Con los años llegué a la conclusión de que las funciones nuevas hay que ponerlas frente a los ojos del usuario y que los buenos valores predeterminados hay que impulsarlos con fuerza. De lo contrario, las funciones casi no se usan
      Los colores de 8 bits y 24 bits ya son funciones de uso opcional y también se pueden configurar. En un programa de terminal que funcione bien, las variables de entorno TERM y COLORTERM determinan si se deben usar esos colores
    • En particular, Solarized Dark no se adapta bien al uso en terminal. Esto se debe a que su autor definió “bright black” con un color casi igual al fondo
      Muchas aplicaciones esperan que el texto “bright black” sea visible sobre el fondo. Hay muchos ejemplos aquí: https://github.com/altercation/solarized/issues/220
      Casi todas las demás paletas de colores representan “bright black” como un gris legible sobre un fondo negro
    • Aunque haya temas en los que cualquier color se pueda leer sobre el fondo predeterminado, hay aplicaciones que especifican tanto el texto como el color de fondo
      Por ejemplo, pamix establece el fondo en negro, y la barra de estado de tmux o ngrok hacen algo parecido. Entonces uno termina cayendo en una madriguera de conejo tratando de manejar eso
    • Primero habría que preguntar “¿cuál es la mejor forma de manejarlo?”, y para eso hay que definir qué significa buena. Personalmente prefiero el principio de que la configuración personalizada del usuario debería estar en un solo lugar, y que el impacto en los programas debería ser mínimo en aspectos como la cantidad de líneas de código
      Ambas cosas sugieren que la solución debería estar en la terminal. Para empezar, el programa de terminal debería tener colores predeterminados razonables; el azul debería reconocerse como azul, y también deberían considerarse las formas comunes de daltonismo. Por ejemplo, el rojo puro sobre un fondo negro es difícil de leer, así que es mejor no usar solo ff0000 y mezclarlo aunque sea un poco
      Una vez que la terminal tenga valores predeterminados razonables, los programas de línea de comandos pueden usar los 16 colores estándar. Intentar usar color de 24 bits aquí es casi decir “renuncié a que la terminal proporcione sensatez” o “yo sé más que todos”, y al final el usuario tiene que configurar N programas por separado. Creo que lo mejor es no definir temas dentro de las apps de línea de comandos
      Veo de forma similar los sitios web y las fuentes. El contenido debería ofrecerse en HTML para que el usuario pueda verlo como quiera, y el diseño de la página no debería fijarse como el de una revista, sino fluir
      Con el software de escritorio pasa algo parecido. El compositor de Wayland debería recordar la posición de las ventanas. Era absurdo que cada programa de X guardara y restaurara la posición de su propia ventana. Wayland dice que conocer información del entorno es un problema de seguridad, y estoy de acuerdo, pero entonces ese recuerdo pasa a ser responsabilidad del entorno de escritorio. También se podría quitar ese código de todas las apps
      La pregunta “¿en qué parte de la pila de software debería manejarse esto?” se repite en muchas áreas. Al elegir dónde ponerlo, primero hay que responder cuál es el objetivo, y mi respuesta siempre se inclina por la simplicidad y la mantenibilidad
    • Me da curiosidad qué tan difícil es en la práctica evitar herramientas de línea de comandos que usan por defecto secuencias de escape de color de 8 bits o 24 bits
      El artículo de Julia también menciona esta idea, pero no entra en detalles sobre las dificultades concretas. En relación con eso, también me pregunto si la paleta de colores de la terminal solo maneja los 16 colores básicos, o si también toca los rangos RGB y de escala de grises. Porque los colores de 8 bits y 16 bits también podrían ajustarse para cumplir con los requisitos de legibilidad
  • Si estás eligiendo colores, convendría revisarlos con el nuevo algoritmo APCA (Advanced Perception of Colour)
    APCA está previsto como reemplazo del método actual de contraste x:y en WCAG 3.0, aunque puede tardar algunos años más. Según se dice, considera el tamaño de la fuente, el peso, el primer plano/fondo, e incluso la iluminación y el entorno circundantes, además del uso previsto
    Sería bastante bueno que un emulador de terminal pudiera usar el sensor de luz del dispositivo para optimizar el contraste según los factores del entorno

    • Ajusté personalmente la paleta de colores de terminal que uso actualmente de esta forma. Fue porque no pude encontrar ningún tema ya hecho que cumpliera mis requisitos de contraste personales para todos los colores ANSI
  • También hay completos lunáticos que quieren apagar los colores por completo[0]. A mí me dan ganas de probarlo, aunque también me gustan los colores bonitos
    [0] https://no-color.org/

    • :syntax off es mi única configuración de Vim. Porque los conjuntos de colores de terminal fueron diseñados por programadores de computadoras, ingenieros eléctricos y gente que no sabe que lo importante en el color no es el color en sí, sino el brillo
    • Cuando te acostumbras a una terminal monocromática, empiezas a sentir que la mayoría de los colores distraen y te roban la atención
      Me pregunto si habrá correlación entre la gente que no quiere colores en la terminal y la gente que usa bloqueadores de anuncios fuertes en el navegador o usa mucho el modo lectura
    • Las secuencias de color no son portables y se sabe que causan problemas. Por ejemplo, hay casos en que una sesión de Jupyter muere por un reporte de pytest con colores
      Cuando pasas la salida por un pipe, el color no aporta ningún beneficio y se vuelve solo una deuda. El punto central es más bien tener la opción
    • Yo también estoy en ese grupo. Sobre todo al programar, considero que casi todo el coloreado distrae y es contraproducente
      Es peor cuando alternas entre Linux y Windows. El uso de colores por defecto en muchas herramientas es casi inutilizable o directamente las vuelve inutilizables
      Algunas herramientas ofrecen la opción --color=never, y bastantes respetan NO_COLOR. Lamentablemente no todas, e incluso algunas herramientas que dicen hacerlo asumen que ese modo solo se usará para pipelines o interfaces de programación. Eso genera toda clase de comportamientos desafortunados
    • Yo también voy en esa dirección. Estuve mirando zenbones y al final me quedé con https://github.com/savq/melange-nvim
      Tiene un concepto coherente de paleta con una temperatura de color significativa, y se inclina hacia lo cálido para cansar menos los ojos de tanto mirar tonos azulados. También incluye una paleta para alacritty
  • Desde hace mucho quería usar un tema claro en la terminal, pero siempre terminaba desistiendo porque demasiados programas usan colores personalizados no ANSI optimizados para fondos oscuros de terminal
    Algunos programas permiten configurar los colores, pero configurar todos los programas uno por uno me parecía demasiado engorroso. Así que ahora uso un fondo oscuro de terminal, pero elijo yo mismo un tema ANSI donde todos los colores tengan suficiente contraste según mi criterio y también pasen la verificación de contraste APCA/WCAG 3. Estoy conforme :)

    • Para las personas con aberraciones visuales de alto orden, el modo oscuro directamente no es una opción. A la inversa, para algunas personas con cataratas, el modo claro puede no serlo
      Con la secuencia de control OSC 11, un programa puede averiguar el color de fondo, pero casi ningún programa se preocupa por eso. Normalmente, si alguien piensa que un mensaje de advertencia amarillo se ve genial, ahí termina todo
      Esto lleva a otro problema: hay terminales populares que no son compatibles con xterm pero configuran TERM=xterm256-color por defecto
      Edición: acabo de descubrir xtermcontrol, que permite abstraer la comprobación del fondo en scripts y está disponible en todos los gestores de paquetes principales
    • Durante un tiempo fingí tener una terminal de 16 colores sin soporte para 256 colores para evitar este infierno de configuración. Como pensaba que no tener colores era mejor que tener malos colores, también probé https://no-color.org/
      Hoy en día me rendí y configuro manualmente la mayoría de las apps para que usen colores ANSI. Por ejemplo, cosas como fzf tienen un switch de línea de comandos. Dejo solo Vim y Emacs como apps no ANSI, y las configuro para que coincidan con la paleta que uso en el resto de la terminal. Si quieres, puedes ir un paso más allá con algo como vim-dim
    • Muchas terminales, por ejemplo konsole de trinity/tde3, permiten ajustar directamente los colores predeterminados, lo cual ayuda
    • Con iTerm en macOS y los programas que uso, por ejemplo neovim, no tuve problemas y se veían bien incluso con la configuración por defecto
  • Emacs tiene una opción poco descubierta llamada frame-background-mode[0], que en la práctica es light o dark
    Cuando te preguntas por qué Emacs eligió un color raro para algún elemento, muchas veces es porque frame-background-mode está mal configurado
    [0]https://doc.endlessparentheses.com/Var/frame-background-mode...

    • El problema de fondo muchas veces está en que la terminal no logra configurar la variable COLORFGBG
      En una terminal con fondo oscuro y texto blanco: export COLORFGBG='15;0'
      En una terminal con fondo claro y texto negro: export COLORFGBG='0;15'
    • Mejor enlace: <https://www.gnu.org/software/emacs/manual/html_node/emacs/Fa...>
  • Llevo casi 10 años usando una paleta FlatUI ligeramente modificada, y casi nunca me ha causado problemas en la práctica
    Archivo png: https://drive.google.com/file/d/1mkMESeGf7MNdKa-rPDx7Yf9BDit...
    Enlace de imgur: https://imgur.com/a/flatui-7mqVZAY
    Basada en: https://flatuicolors.com/palette/defo

    • Se parece al tema One Dark, que recuerdo que venía del editor Atom
      Yo también llevo casi 10 años usando mi tema. Funciona bien en iTerm, vim, Emacs, vscode, etc.
  • He usado Apple Terminal durante mucho tiempo, y antes había una buena colección de paletas llamada “Terminal Fructose”, así que solía usar distintos colores de fondo según la tarea. Apple también la incorporó como temas en algún momento.
    Pero Apple ha dejado abandonado el soporte de Terminal, no admite más de 256 colores y también le faltan funciones más modernas. Tampoco encaja bien con una configuración de Neovim+LazyVim.
    Para encontrar una terminal mejor, estuve saltando entre iTerm2, Kitty, Alacritty y Wezterm, pero aunque todas eran más modernas, no parecían tener la opción básica “New Window with Profile ...” para abrir rápidamente ventanas con distintos colores de fondo/temas. Al menos no sin tener que trastear un poco.
    Ahora me quedé con Wezterm, principalmente porque también funciona en Windows y puedo compartir la configuración wezterm.lua. Por cierto, Windows Terminal también es bastante decente en realidad. Aun así, para tareas rápidas, por ejemplo usar python3 como REPL para hacer cálculos o probar hexadecimal/binario, todavía suelo abrir Apple Terminal.

    • iTerm tiene exactamente esa función.
    • Qué raro. Yo dejé Apple Terminal muy rápido y me pasé a iTerm2 precisamente por el soporte de “new tab with profile”.
    • Sigo usando Wezterm por dos razones: es fácil compartir la configuración entre varias plataformas, y el lenguaje de configuración es Lua.
      Hay algunas funciones de iTerm2 que extraño, aunque casi todas están relacionadas con el mouse. Fuera de eso, lo configuré a mi gusto durante algunas noches y, desde que hice que cmd-n abra una ventana nueva en el directorio predeterminado y no en el directorio actual, lo uso satisfecho.
    • Si quieres agregar “New Window with Profile...” a WezTerm, creo que podrías meter algún hack con launch_menu [1], que inicia otro shell, o con augment-command-palette [2], que agrega elementos a la paleta de comandos.
      [1] https://wezfurlong.org/wezterm/config/lua/config/launch_menu...
      [2] https://wezfurlong.org/wezterm/config/lua/window-events/augm...
      Sí, requiere un poco de trasteo. Pero programar una función muy específica exactamente como la quieres es la cúspide de la experiencia WezTerm.
    • Konsole, la terminal de KDE, soporta esto. Puedes hacerlo desde el menú o manteniendo presionado el ícono de nueva pestaña. Tengo entendido que también se puede usar en MacOS.
  • No solo en las terminales: en letreros de neón o de LED, el azul también es el color que más cansa la vista de noche.
    Desde lejos siempre se ve borroso y fuera de foco. Cuando veo que grandes empresas ponen letreros enormes con iluminación azul, me sorprende que gasten tanto dinero sin siquiera darse cuenta de que la gente no puede leerlos.

  • En mi laptop tengo configurado el cambio automático entre modo claro/oscuro según el ciclo de luz solar, y es sorprendente la cantidad de aplicaciones con salida en color que se rompen al cambiar al modo de fondo claro con texto oscuro.
    Si estás creando una herramienta de línea de comandos y de verdad necesitas usar colores, deberías limitarte a los 16 colores ANSI o permitir que el usuario final cambie la paleta.