Команда OS X Terminal для зміни тем кольорів


17

Чи є команда, за допомогою якої можна змінити кольорову гаму терміналу Mac OS X? Мені подобається думка про можливість змінити кольори залежно від сценаріїв, якими я керую. Поки я просто змінюю колір мого баш-підказки з PS1, що добре, але не настільки помітно, як я хотів би.


Що я хочу зробити, це змінити колір тла терміналу так, як це було б змінено так само, як, Terminal -> Preferences -> Settingsза винятком того, як я хочу це зробити за допомогою команди. Я хочу , щоб створити скрипт , який буде виглядати наступним чином : changeBackgroundTheme; ssh; changeBackgroundTheme. Це допоможе нагадати мені, у яких вікнах зараз перебуває ssh.
шістдесят футів

Відповіді:


18

Залежно від того , що саме ви хочете виконати, ось декілька ідей у ​​AppleScript з використанням ваших стилів Terminal. Вони є більш надійними, ніж 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

-> Третя вкладка переднього вікна терміналу набуває домашній стиль!

Якщо ви хочете змінити фонові вікна, замініть "переднє вікно" на викладене круглим виразом, як тільки після "вкладки". Якщо ви завжди хочете змінити вибрану "поточну вкладку", використовуйте selected tabзамість tab (item 1 of argv as number).


Додайте наступне до свого, .bash_profileякщо перше рішення для вас занадто ручна праця:

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

Тепер він виконується перед кожним підказкою (лише проблема: не після запуску чогось, тобто ssh. Але ця тема все одно не стосується хитромудрих баш-трюків. Це лише вказівник.)


6

Ваші сценарії можуть використовувати tputкоманду для встановлення кольорів на портативний спосіб. Спробуйте наступний сценарій, і ви побачите термінал прозорим до темно-синього фону з яскравим блакитним текстом.

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

Додаткову інформацію про це ви можете побачити man 5 terminfoв розділі "Поводження з кольорами".

Можна робити те ж саме, повторюючи послідовності евакуації, які ваш термінал розпізнає безпосередньо. Це буде швидше, але це може не працювати, використовуючи іншу термінальну програму. Багато хто з них розпізнає послідовності 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: Мабуть, є спосіб зробити це osascript, але я не знайомий з цим.
Призупинено до подальшого повідомлення.

1

Ви можете використовувати applescript, щоб надати кожному новому терміналу випадкову тему.

Відредагуйте свою .bash_profileкоманду та додайте цю команду

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

Якщо ви отримуєте той самий термінал випадкової теми, ви завжди можете натиснути ⌘Iі встановити його вручну.

Це корисніше, якщо ви отримаєте безліч різних тематичних термінальних тем. Для цього існує багато сайтів, якщо озирнутися.


Люблю це. Я зробив псевдонім з цієї команди, щоб я міг випадково змінити нову настройку вручну.
WeakPointer
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.