Código de color de las ventanas de terminal por host

imagenes

Regularmente trabajo en diferentes hosts usando ssh y, a veces, me confundo la computadora en la que ejecuto los comandos. Ocasionalmente me he acercado a emitir comandos halt (8) al host incorrecto.

Idealmente, me gustaría codificar por colores la cinta superior de la ventana de terminal en función del host en el que estoy conectado actualmente. Utilizo Openbox y gnome-terminal, pero consideraría cambiar a cualquier emulador de terminal que haga este tipo de cosas fáciles o al menos posibles.

¿Alguien sabe de una manera de hacer esto? No tengo miedo de hacer algo de trabajo por mí mismo si me puede indicar la manera de cambiar los colores de la ventana mediante programación.


Tenemos varias respuestas

La mejor respuesta:

por “colores de ventana”, ¿te refieres al color del borde de la ventana? si es así, pídale a su administrador de ventanas que establezca el color de la ventana en función del título de la ventana, ya que la mayoría tiene un patrón de usuario @ host: / ruta. sería fácil para él verificar si se trata de una Terminal por su clase de ventana y luego analizar el título cuando cambia y actualizar el color utilizado. pero no sé los flujos involucrados, así que no sé cuánto trabajo.

Pero esto es posible.

(No sé si Openbox podría hacer esto, pero después de pensarlo, esta es la forma más fácil de hacerlo)

Actualizar:

Después de mirar la fuente de Openbox, creo que parcheando el framerender_frame funcionar en openbox / framerender.c de modo que si la ventana es una Terminal que depende del host en el título, se usa un tema diferente en lugar del global ob_rr_theme, uno que tiene los colores que desea para esa ventana en ella.

[en el contexto de framerender_frame, el título de la ventana podría ser yo->cliente->título]

Hacer esto requeriría cambiar framerender_frame Para que se refiera a lo global. ob_rr_theme a través de un local tema y requeriría escribir código para cargar el host: el mapa de temas y los temas adicionales

en pseudo código (es decir, esto no se ejecutará):

RrTheme * theme = ob_rr_theme;
si "gnome-terminal" es igual a auto->cliente->clase: # solo por ejemplo
    host = parse_title (self->cliente->título)
    theme = searchup host en by_host si no se encuentra, usa theme
# y luego en el resto de framerender_frame usa theme en lugar de ob_rr_theme

dónde por_host asigna cadenas de host a RrTema temas


Otra respuesta


Fuente

Leave a Reply