为什么 Byobu 自定义状态通知代码无法以彩色显示?

为什么 Byobu 自定义状态通知代码无法以彩色显示?

下面的代码在 Bash 中运行良好,并显示具有正确绿色背景颜色的文本,但当我将其添加到文件夹时~/.byobu/bin/,它会显示转义字符。类似[42米[1毫AAPL:30.345 (B[米

#!/bin/sh
echo `tput setab 2;tput bold`AAPL:`curl -s 'http://download.finance.yahoo.com/d/quotes.csv?s=AAPL&f=sl1d1t1c1ohgv&e=.csv' | cut -d, -f2;tput sgr0`

答案1

如果使用tmuxbyobu 的后端,您将需要使用不同的颜色代码格式。幸运的是,它比格式简单得多screen

要设置颜色,请使用#[<color and attribute codes>]。例如:

  • #[default]:恢复默认颜色(在自定义状态结束时使用)。
  • #[fg=red]:设置前景色为红色。
  • #[fg=#ff0000]:将前景色设置为#ff0000。仅接受小写字母 -FF0000不起作用。
  • #[bg=black]:使背景变为黑色。
  • #[fg=bold]:制作文字大胆的。更多内容请参见下文。
  • #[reverse]:交换前景色/背景色。

您可以将它们组合起来,例如#[fg=white,bold,bg=black]

命名颜色:black,,,,,,,,,,,,,,,,,,,red​​​​​​​​​​​​​greenyellowbluemagentacyanwhiteblackbrightblackbrightredbrightgreenbrightyellowbrightbluebrightmagentabrightcyanbrightwhite

属性:dimunderscoreboldreversestandoutblinkinghiddenitalics

您还可以使用环境变量$BYOBU_LIGHT$BYOBU_DARK$BYOBU_ACCENT$BYOBU_HIGHLIGHT作为颜色。


为了玩这个,创建一个~/.byobu/bin/1_hello包含以下内容的文件,并使其可执行。

#!/bin/sh
echo "#[reverse]Hello world#[default]"

这应该创建一个黑底白字的状态通知,上面写着“Hello world”。


一些 byobu 的自定义状态通知

以下是两个示例自定义状态栏组件以及生成它们的代码:

  • #[fg=#aa77cc,bg=#222222] @XXX.XX #[default]
  • #[fg=white,bg=black] ✉ ️X #[default]

此信息将大概但只有当你使用tmux启用颜色的 shell 时才有效 :)


(来源:/usr/lib/byobu/include/colors/usr/lib/byobu/include/shutil

答案2

您需要在屏幕上使用其他颜色说明符(请参阅screen(1) 的手册页)。因此,首先应该将值保存在一个变量中:

AAPL=$(curl -s 'http://download.finance.yahoo.com/d/quotes.csv?s=AAPL&f=sl1d1t1c1ohgv&=.csv' | cut -d, -f2)

在第二步中,您可以使用以下命令输出它printf

printf "\005{= b}%s%s\005{-}" "AAPL: " "$AAPL"

相关内容