Simple Terminal Colors

October 9th, 2023
tech
I work in the terminal a lot and I often want to write programs that color their output a bit. For example, perhaps I'm looking at a sequencing read and I want to know what part of it was the reason it was flagged. I could use colorama, termcolor, or another library, but including a dependency for something this simple is not really worth it. Instead, printing colored text is as simple as:

COLOR_RED_BOLD = '\x1b[1;31m'
COLOR_BLUE_BOLD = '\x1b[1;34m'
COLOR_END = '\x1b[0m'
print(
  "One fish, two fish, " +
  COLOR_RED_BOLD + "red" +
  COLOR_END + " fish, " +
  COLOR_BLUE_BOLD + "blue" +
  COLOR_END + " fish.")

I usually just want one or two highlight colors, typically in bold, and rarely find the six standard colors limiting. It's especially helpful if you want to draw your eye to something specific, while maintaining the context around it when you need to look further.

How compatible is this? Will someone with a non-ANSI terminal someday run my code and complain? One data point is that I wrote icdiff with this approach in 2009, and it's been reasonably popular. While I've gotten hundreds of bug reports this has never been one people have complained about.

Comment via: facebook, lesswrong, mastodon, substack

Recent posts on blogs I like:

Ozy and Vasili Review Lilo and Stitch

Sometimes my seven-year-old, Vasili, wants to see some godawful movie that makes me want to melt my eyeballs out of my head.

via Thing of Things June 27, 2025

Elixir's Last Dance

On May 18th, the contra dance band Elixir had their last gig ever. The dance was packed: there were three hundred people. It was the only dance BIDA has ever done where they sold tickets. People flew from across the country just to hear Elixir play one la…

via Lily Wise's Blog Posts June 5, 2025

Workshop House case study

Lauren Hoffman interviewed me about Workshop House and wrote this post about a community I’m working on building in DC.

via Home April 30, 2025

more     (via openring)