Comando de terminal OS X para cambiar temas de color

Comando de terminal OS X para cambiar temas de color

¿Existe algún comando que pueda usarse para cambiar la combinación de colores de la Terminal Mac OS X? Me gusta la idea de poder cambiar los colores según los scripts que ejecuto. Hasta ahora solo estoy cambiando el color de mi indicador de bash con PS1, lo cual está bien, pero no es tan notable como me gustaría.

Respuesta1

Dependiendo de quéexactamentedesea lograr, aquí hay algunas ideas en AppleScript usando sus estilos de Terminal. Estos son más robustos que tput, porque se restablecen mediante indicaciones de colores. etc (al menos para mí).

Esto configura todas las pestañas que ejecutan Python (no hay ningún servidor SSH disponible para pruebas en este momento) en Homebrew, las demás en Ocean:

tell application "Terminal"
    repeat with w from 1 to count windows
        repeat with t from 1 to count tabs of window w
            if processes of tab t of window w contains "Python" then
                set current settings of tab t of window w to (first settings set whose name is "Homebrew")
            else
                set current settings of tab t of window w to (first settings set whose name is "Ocean")
            end if
        end repeat
    end repeat
end tell

guárdelo como script y ejecútelo en osascript Name.scptcualquier momento que desee para volver a colorear sus shells (por supuesto, puede envolver esto como un script de shell o algo así).

Si desea mostrar todos los procesos de larga duración de forma diferente, utilice la siguiente condición:

if busy of tab t of window w is true then


O puede establecer el estilo de una sola pestaña, seleccionada manualmente:

on run argv
    tell application "Terminal" to set current settings of tab (item 1 of argv as number) of front window to first settings set whose name is (item 2 of argv)
end run

Ejecútelo así:

osascript StyleTerm.scpt 3 Homebrew

-> ¡La tercera pestaña de la ventana de Terminal frontal tiene estilo Homebrew!

Si desea modificar las ventanas de fondo, reemplace "ventana frontal" con una expresión entre paréntesis como justo después de "tabulación". Si siempre desea modificar la "pestaña actual" seleccionada, utilice selected taben lugar de tab (item 1 of argv as number).


Agregue lo siguiente a su .bash_profilesi la primera solución es demasiado manual para usted:

PROMPT_COMMAND='osascript "/path/to/Name.scpt"'

Ahora se ejecuta antes de cada mensaje (el único problema: no después de iniciar algo, es decir ssh. Pero este tema no trata sobre trucos sofisticados de bash de todos modos. Esto es solo un indicador).

Respuesta2

Sus scripts pueden usar el tputcomando para configurar colores de manera portátil. Pruebe el siguiente script y verá el terminal claro sobre un fondo cian oscuro con un texto cian brillante.

#!/bin/bash
tput setab 6
tput clear
tput setaf 14
echo Hello World

Puedes ver más información sobre esto enman 5 terminfoen la sección denominada "Manejo del color".

Puedes hacer lo mismo haciendo eco de las secuencias de escape que tu terminal reconoce directamente. Será más rápido, pero es posible que no funcione con otro programa de terminal. Muchos de ellos reconocen secuencias xterm y así es como se vería el script anterior usándolas.

#!/bin/bash
printf "\033[48;5;6m"  # or "\033[46m"
printf "\033[H\033[2J" # your system's clear command does something similar
printf "\033[38;5;14m" # or "\033[96m"
echo Hello World

Hay más información sobre las secuencias de control de xterm.aquí.

Respuesta3

Puedes usar AppleScript para darle a cada terminal nuevo un tema aleatorio.

Edite su .bash_profiley agregue este comando

osascript -e "tell application \"Terminal\" to set current settings of front window to some settings set"

Si obtienes el mismo terminal con tema aleatorio, siempre puedes presionarlo ⌘Iy configurarlo manualmente.

Esto es más útil si obtienes muchos temas de terminal de aspecto diferente. Hay muchos sitios para eso, si miras a tu alrededor.

Respuesta4

Este AppleScript me funciona en OS X 14.3 (y las otras respuestas no).

tell application "Terminal"
    repeat with i in windows
        try
            set current settings of tabs in i to settings set "Solarized Dark"
        end try
    end repeat
end tell

La aplicación Terminal parece haber cambiado la forma en que expone sus pestañas y ventanas en OS X 14.3, por lo que obtendrá errores de manera confiable al recorrer las pestañas de algunas de sus ventanas. Pero estas no parecen ser ventanas reales, así que puedes simplemente ignorarlas (lo que hago con el try ... end trybloque).

Tiendo a incluir pequeños scripts como este en mis scripts de shell de esta manera:

osascript -e "tell application \"Terminal\"
    repeat with i in windows
        try
            set current settings of tabs in i to settings set \"Solarized Dark\"
        end try
    end repeat
end tell"

Personalmente uso esto para cambiar automáticamente entre temas claros y oscuros en mi terminal (solo necesito abrir una nueva pestaña de terminal o ejecutar mi color_modefunción). Puedes ver mi código completo para hacer esto.en mi repositorio de archivos de puntos.

información relacionada