Our great sponsors
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
ipython
Official repository for IPython itself. Other repos in the IPython organization contain things like the website, documentation builds, etc.
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
dotfiles
Discontinued This repository will migrate to https://git.sr.ht/~ayushnix/dotfiles soon. (by ayushnix)
The linked page lists thirty of them. Chalk isn’t on the list, but it used to be:
https://github.com/jcs/no_color/commit/98857d0
For tools that don't honor NO_COLOR, I have a filter called nofun, which gets rid of color and animations.
https://github.com/alrs/nofun
There’s one I’ve come across recently here where you’re fighting against syntax highlighting with extra error context. https://github.com/ipython/ipython/issues/13446#issuecomment...
This is the type of thing that should be supported in libraries like Chalk[0]. We all know that Joe Bloggs' CLI isn't going to be checking for NO_COLOR.
[0]: https://www.npmjs.com/package/chalk
Conversely if you want to add color to a command, I have found Generic Colorizer to be useful: https://github.com/garabik/grc
Environment variables are fine when used for things that usually don't change once they're set. For example, XDG_CONFIG_HOME or GOPATH. They are, however, absolutely awful when used to configure values that will probably change inside a session. A good example is BEMENU_OPTS from the bemenu program, which is used to change colors, font etc. Should I relogin into my session just to make a program use dark mode colors?
https://github.com/Cloudef/bemenu#environment-variables
In such cases, environment variables lose their intended purpose and they need to be stuffed into wrapper scripts or overridden on the command line before executing a command, which is extremely annoying.
Great question!
There is ansi2txt (packaged as colorized-logs on debian).
https://github.com/kilobyte/colorized-logs
I also found some answers on SO with people using a sed command for this.
https://stackoverflow.com/questions/17998978/removing-colors...
> Why is this so annoying? It's a very common workflow that allows you to customize how an application behaves and simplify how you run it.
I don't know about others but I'm not a fan of monstrosity like this
https://github.com/ayushnix/dotfiles/commit/2eb66eff8a03a5bf...
If I stuff it into a wrapper script, I'm essentially trying to emulate config files, which is what should've been used in the first place. This is why I prefer using config files rather than creating uglier and harder to maintain wrapper scripts.
> I'm a big fan of following the 12factor[1] approach.
I guess if you don't want state associated with your deployments, environment variables are better but I would still argue that they aren't manageable when their values become large as shown above or if their numbers start approaching double digits because when that happens, you're essentially emulating config files anyways.
I did a quick GitHub search and found two of them:
https://github.com/kurtbuilds/no-ansi
Written in rust and ultimately uses vte from alacritty to write through a virtual terminal. Can be given a file on the command line.
https://github.com/emptymonkey/dumb
Written in Lex and just strips a number of specific escape sequences (written 9 years ago so likely doesn't include a few). Only stdin to stdout.
I did a quick GitHub search and found two of them:
https://github.com/kurtbuilds/no-ansi
Written in rust and ultimately uses vte from alacritty to write through a virtual terminal. Can be given a file on the command line.
https://github.com/emptymonkey/dumb
Written in Lex and just strips a number of specific escape sequences (written 9 years ago so likely doesn't include a few). Only stdin to stdout.