Velvet Star Monitor

Standout celebrity highlights with iconic style.

general

Why Byobu custom status notification code fail to show in color?

Writer Matthew Barrera

The code below runs well in Bash and shows text with proper green background color but when I add it to the ~/.byobu/bin/ folder it shows the escape characters instead. Something like [42m[1mAAPL:30.345 (B[m

#!/bin/sh
echo `tput setab 2;tput bold`AAPL:`curl -s ' | cut -d, -f2;tput sgr0`

2 Answers

If using the tmux backend for byobu, you will need to use a different format for color codes. Luckily, it's less complicated than the screen format.

To set colors, use #[<color and attribute codes>]. Examples:

  • #[default]: restore default colors (use at the end of your custom status).
  • #[fg=red]: set the foreground color to red.
  • #[fg=#ff0000]: set the foreground color to #ff0000. Only accepts lowercase -- FF0000 won't work.
  • #[bg=black]: makes the background black.
  • #[fg=bold]: makes text bold. See below for more.
  • #[reverse]: swaps foreground/background colors.

You can combine them, e.g. #[fg=white,bold,bg=black].

Named colors: black, red, green, yellow, blue, magenta, cyan, white, black, brightblack, brightred, brightgreen, brightyellow, brightblue, brightmagenta, brightcyan, brightwhite

Attributes: dim, underscore, bold, reverse, standout, blinking, hidden, italics

You can also use the environment variables $BYOBU_LIGHT, $BYOBU_DARK, $BYOBU_ACCENT, and $BYOBU_HIGHLIGHT as colors.


To play with this, create a file, ~/.byobu/bin/1_hello with the following contents, and make it executable.

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

This should create a black-on-white status notification that says "Hello world".


A few custom status notifications for byobu

Here are two example custom status bar components, and the codes that produce them:

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

This information will probably only work if you're using tmux and a color-enabled shell, though :)


(Sources: /usr/lib/byobu/include/colors, /usr/lib/byobu/include/shutil)

You need other color specifiers in screen (see Manpage of screen(1)). So first you should save the value in a variable:

AAPL=$(curl -s ' | cut -d, -f2)

And in the second step you can output it with printf:

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

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy