16

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

3 ответа3

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 . Но эта тема не о хитрых хитростях. Это просто указатель.)

4

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

1

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .