OS X 终端命令更改颜色主题

OS X 终端命令更改颜色主题

是否有命令可用于更改 Mac OS X 终端的配色方案?我喜欢能够根据我运行的脚本更改颜色的想法。到目前为止,我只是使用 PS1 更改我的 bash 提示符的颜色,这没问题,但不像我希望的那样引人注目。

答案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 风格!

如果要修改背景窗口,请将“前台窗口”替换为括号表达式,例如“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在“颜色处理”部分中。

您可以通过直接回显终端识别的转义序列来执行相同的操作。这样会更快,但使用其他终端程序可能无法工作。其中许多程序可以识别 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)。

我倾向于在我的 shell 脚本中内联类似这样的小脚本,就像这样:

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 仓库中

相关内容