Есть ли команда, которую можно использовать для изменения цветовой схемы терминала Mac OS X? Мне нравится идея возможности менять цвета в зависимости от сценариев, которые я запускаю. Пока я просто меняю цвет моего приглашения bash с PS1, что нормально, но не так заметно, как хотелось бы.
3 ответа
В зависимости от того , что именно вы хотите достичь, вот несколько идей в 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
. Но эта тема не о хитрых хитростях. Это просто указатель.)
Ваши сценарии могут использовать команду 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 последовательностей здесь.
Вы можете использовать яблочный скрипт, чтобы дать каждому новому терминалу случайную тему.
Отредактируйте ваш .bash_profile
и добавьте эту команду
osascript -e "tell application \"Terminal\" to set current settings of front window to some settings set"
Если вы получаете один и тот же случайный тематический терминал, вы всегда можете нажать ⌘I
и установить его вручную.
Это более полезно, если вы получаете много разных тем оформления терминала. Есть много сайтов для этого, если вы посмотрите вокруг.