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

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

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

решение1

В зависимости от того, чтоточновы хотите достичь, вот несколько идей в 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. Это просто указатель.)

решение2

Ваши скрипты могут использовать 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здесь.

решение3

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

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

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

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

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

решение4

Этот AppleScript работает у меня на OS X 14.3 (а другие ответы — нет).

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

Приложение Терминал, похоже, изменило способ отображения вкладок и окон в OS X 14.3, так что вы наверняка получите ошибки при переборе вкладок некоторых из его окон. Но они, похоже, не настоящие окна, так что вы можете просто игнорировать их (что я и делаю с блоком try ... end try).

Я обычно встраиваю небольшие скрипты вроде этого в свои скрипты оболочки следующим образом:

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"

Я лично использую это для автоматического переключения между светлой и темной темами в моем терминале (мне просто нужно открыть новую вкладку терминала или запустить мою color_modeфункцию). Вы можете увидеть мой полный код для этогов моем репозитории dotfiles.

Связанный контент