Команда OS X Terminal для изменения цветовой темы

17

Есть ли команда, которую можно использовать для изменения цветовой схемы терминала Mac OS X? Мне нравится идея возможности менять цвета в зависимости от сценариев, которые я запускаю. Пока я просто меняю цвет моего приглашения bash с PS1, что нормально, но не так заметно, как хотелось бы.

satur9nine
источник
То, что я хочу сделать, это изменить цвет фона терминала, как будто он будет изменен таким же образом, Terminal -> Preferences -> Settingsза исключением того, что я хочу сделать это с помощью команды. Я хочу , чтобы создать скрипт , который будет выглядеть следующим образом : changeBackgroundTheme; ssh; changeBackgroundTheme. Это поможет напомнить мне, какие окна в настоящее время ssh.
sixtyfootersdude

Ответы:

18

В зависимости от того , что именно вы хотите достичь, вот несколько идей в AppleScript с использованием стилей вашего терминала. Они более надежны, чем tput, потому что это сбрасывается с помощью цветных подсказок. и т. д. (по крайней мере, для меня).

Это устанавливает все вкладки, на которых работает Python (сейчас нет SSH-сервера для тестирования), на Homebrew, остальные на 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

сохранить как сценарий и запускать в osascript Name.scptлюбое время, когда вы захотите перекрасить свои оболочки (конечно, вы можете обернуть это как сценарий оболочки или что-то вроде этого)

Если вы хотите отобразить все долго выполняющиеся процессы по-разному, используйте следующее условие:

if busy of tab t of window w is true then


Или вы можете установить стиль отдельной вкладки, выбранной вручную:

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

Запустите это так:

osascript StyleTerm.scpt 3 Homebrew

-> Третья вкладка переднего окна терминала получает стиль Homebrew!

Если вы хотите изменить фоновые окна, замените "front window" выражением в скобках, как сразу после "tab". Если вы всегда хотите изменить выбранную «текущую вкладку», используйте selected tabвместо tab (item 1 of argv as number).


Добавьте следующее к вашему, .bash_profileесли первое решение слишком ручное для вас:

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

Теперь он выполняется перед каждым приглашением (единственная проблема: не после запуска чего-либо, т ssh. Е. Эта тема в любом случае не о причудливых трюках с bash. Это всего лишь указатель.)

Даниэль Бек
источник
6

Ваши сценарии могут использовать tputкоманду для переноса цветов. Попробуйте следующий сценарий, и вы увидите, что терминал становится прозрачным на темно-голубом фоне с ярким голубым текстом.

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

Вы можете увидеть больше информации об этом в man 5 terminfoразделе «Обработка цвета».

Вы можете сделать то же самое, повторив escape-последовательности, которые ваш терминал распознает напрямую. Это будет быстрее, но может не работать с другой терминальной программой. Многие из них распознают последовательности xterm, и вот как будет выглядеть приведенный выше скрипт при их использовании.

#!/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

Там больше информации о контрольных Xterm последовательностей здесь .

Приостановлено до дальнейшего уведомления.
источник
Кажется, это как-то влияет на цвет, но setaf, похоже, ничего для меня не делает. То, что я действительно хотел бы, чтобы что-то изменило тему терминала Mac OS, как предлагает waiwai, но программно и не используя графический интерфейс.
satur9nine
Есть ли способ изменить тему, которая используется аналогично Terminal -> Preferences -> Settings?
sixtyfootersdude
@sixtyfootersdude: Возможно, есть способ сделать это osascript, но я не знаком с этим.
Приостановлено до дальнейшего уведомления.
1

Вы можете использовать яблочный скрипт, чтобы дать каждому новому терминалу случайную тему.

Отредактируйте .bash_profileи добавьте эту команду

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

Если вы получаете один и тот же случайный тематический терминал, вы всегда можете нажать ⌘Iи установить его вручную.

Это более полезно, если вы получаете много различных тем оформления терминала. Есть много сайтов для этого, если вы посмотрите вокруг.

G_Gus
источник
Нравится. Я сделал псевдоним из этой команды, чтобы я мог произвольно изменить новое значение вручную.
WeakPointer