2010-01-27 11 views
7

Buenas noches,Mini Proyecto: Cambiar el color del terminal basado en la hora del día

estoy bastante nuevo en Unix así que tal vez este mini proyecto es demasiado ambicioso. Esperando que alguien pueda apuntar en la dirección correcta.

Trabajando en un cubículo y no puedo ver qué tan liviano está afuera. En general, uso un terminal amarillo en la mañana (soleado) y un negro/verde después de las 3:00 (noche).

Lo que me gustaría hacer (en parte solo para practicar mi bash). Es escribir una secuencia de comandos que a las 3:00 cambiará el color de todas mis terminales. Si eso funciona, tal vez los haga cambiar cada hora o algo así. ¿Sería eso seguro? es posible?

Estas son algunas de las especificaciones de mi: Solaris 10 de Bash Gnome

Me gustaría encontrar en este momento: Change Gnome terminal theme programmatically

+0

"negro/verde" significa verde típico en negro? ¿Qué quieres decir exactamente con "amarillo"? ¿Es eso negro sobre amarillo, blanco sobre amarillo, amarillo sobre negro? – Sparr

+1

@Sparr verde en negro y negro en amarillo, aunque no creo que los colores importen ... – sixtyfootersdude

Respuesta

4

Si estuviera haciendo esto, comenzaría con PROMPT_COMMAND. Bash ejecutará ese script justo antes de mostrar un mensaje.

Tienes un par de opciones. Usted podría tener un script mismo dentro PROMPT_COMMAND:

PROMPT_COMMAND='if [ is_morning ]; then echo "MORNING_COLORS'; else echo "EVENING_COLORS"; fi 

o podría tener PROMPT_COMMAND ejecutar un comando externo (que también podría ser una escritura del golpe o puede utilizar un idioma diferente si quería) para hacer todo el trabajo que hay :

PROMPT_COMMAND=/path/to/setcolor_timeofday 

el único agujero que veo en esto es que si usted tiene un programa que se ejecuta cuando el tiempo cambia a lo largo (por ejemplo, usando tail -f para ver un archivo), el fondo no cambiará hasta que vuelva a el indicador de bash.

0

Uso cron, es el planificador de tareas Unix. Y configúrelo para ejecutar un comando que cambie .bashrc como en la pregunta que ha vinculado. El problema es que funcionará solo para terminales nuevos, si tiene algunos abiertos, no los cambiará.

+0

Hmmm, gracias por el comentario, pero raramente cierro mis terminales, así que probablemente no funcione. – sixtyfootersdude

2

La modificación de los colores de fondo y de fondo de la carcasa a través de PS1 en bash será la más fácil, como señalaron otros aquí. El enfoque de R Samuel Klatchko con PROMPT_COMMAND es probablemente el más versátil. Sin embargo, esto tiene inconvenientes. Bash solo puede usar colores de fondo "aburridos", y cualquier aplicación puede anular sus colores de fondo/primer plano. Modificar el tema de su Terminal Gnome mediante programación, especialmente en tiempo real, será mucho más difícil, pero producirá resultados mucho más bonitos.

+0

@Sparr - una cosa a tener en cuenta es que recomendé PROMPT_COMMAND, no PS1. Esto es importante ya que el uso de '0 caracteres de ancho' en PS1 (o PS2, etc.) arruinará el manejo del terminal de bash. Para ver lo que quiero decir, intente hacer 'export PS1 = '\ 033 [42m \ w \ $'' y luego escriba una línea de comando que sea más larga que el ancho del terminal. –

Cuestiones relacionadas