Comando OS X Terminal para cambiar los temas de color

17

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

satur9nine
fuente
Lo que quiero hacer es cambiar el color de fondo del terminal como se cambiaría de la misma manera que Terminal -> Preferences -> Settingsexcepto que quiero hacer esto con un comando. Quiero crear un script que va a tener este aspecto: changeBackgroundTheme; ssh; changeBackgroundTheme. Esto ayudará a recordarme en qué ventanas se encuentran actualmente ssh.
sixtyfootersdude

Respuestas:

18

Dependiendo de qué es exactamente lo que quiere lograr, aquí hay algunas ideas en AppleScript usando sus estilos de Terminal. Estos son más robustos que tput, porque esto se restablece mediante mensajes de colores. etc (al menos para mí)

Esto establece todas las pestañas que ejecutan Python (no hay un servidor SSH disponible para pruebas en este momento) en Homebrew, las otras 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 secuencia de comandos y ejecútelo osascript Name.scptsiempre que desee cambiar el color de sus shells (por supuesto, puede envolver esto como un script de shell o algo así).

Si desea mostrar todos los procesos de ejecución larga de manera diferente, use la siguiente condición:

if busy of tab t of window w is true then


O bien, puede configurar 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 más frontal tiene el estilo Homebrew!

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


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

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

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

Daniel Beck
fuente
6

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

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

Puede ver más información sobre esto man 5 terminfoen la sección llamada "Manejo del color".

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

#!/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 secuencias de control xterm aquí .

Pausado hasta nuevo aviso.
fuente
Esto parece tener algún efecto en el color, pero setaf no parece hacer nada para mí. Lo que realmente me gustaría es algo para cambiar el tema del terminal Mac OS, como sugiere Waiwai, pero mediante programación y sin usar la GUI.
satur9nine
¿Hay alguna manera de cambiar el tema que se está utilizando de manera similar Terminal -> Preferences -> Settings?
sixtyfootersdude
@sixtyfootersdude: Probablemente haya una manera de hacerlo osascript, pero no estoy familiarizado con eso.
Pausado hasta nuevo aviso.
1

Puede usar AppleScript para dar a cada nueva terminal 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 de 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.

G_Gus
fuente
Gusta. Creé un alias con este comando para poder cambiar aleatoriamente a una nueva configuración manualmente.
WeakPointer