#cowsay #ansi #print

bin+lib charasay

The future of cowsay 🐮! Colorful characters saying something 🗨️

9 stable releases

3.2.0 Dec 29, 2023
3.1.0 Aug 22, 2023
3.0.1 Jul 20, 2023
3.0.0 Jun 28, 2023
1.0.1 Mar 4, 2023

#39 in Visualization

23 downloads per month

MIT license

559 lines

charasay 🐮

Discord GitHub Workflow Status

🐈 The future of cowsay 🐮! Colorful characters saying something 🗨️.

Re-engineered cowsay in rust 🦀. Display colorful ANSI arts saying something in your terminal 💻.

Default character


I use terminal emulator almost every day. I stare at it so much. I need some entertainment in terminal, so I found ponysay which is beautiful and giving my terminal some colors. But ponysay kind of bloated for me since I don't display all those ponies.

So, I want to make my own minimal tool to make my terminal so colorful and display the character that I like. This chance is a great time to learn rust. This project is mainly for me to learn rust and hopefully I get some feedback while this make us all happy 😁.



For Arch Linux, package available via AUR. Example install this with AUR helper:

yay -S charasay


yay -S charasay-bin


If you have rustup or cargo, this tool available on crates.io. Install this with:

cargo install charasay


Just donwload from the release page for your compatible Operating System, then extract the zip archive, give permission to execute on extracted file, then place it on your PATH.

Alternatively, clone this repository, then build this with cargo build --release.


To display characters, your terminal needs to support true color (24-bit color). Unicode fonts are needed to render the border of speech bubble.


Display Default Character to Say Something

Run chara say something that motivating. It would display colorful cow saying something that motivating..

If message is empty, it would accept from standard input, piping would works: fortune | chara say.

Display Different Character

Run chara say -f ferris "Hello rustaceans!".

It could display external .chara files: chara say -f ~/path/test.chara "Nice".

Note: .chara files could be generated from PNG file.

I want to implement this builtin in this tool. For now, you could generate .cow file with Cowsay file converter then rename .cow into .chara.

Shell Completions

Shell completions also available with chara completions which would print out completions script to standard output. Please consult to your shell documentation on how to add completions.

Consult to Help Command

For updated usage please consult to help command.

$ chara --help
The future of cowsay 🐮! Colorful characters saying something 🗨️.

Usage: chara <COMMAND>

say          Make the character say something
completions  Generate completions for shell. Default to current shell
convert      TODO: Convert pixel-arts PNG to chara files
help         Print this message or the help of the given subcommand(s)

-h, --help     Print help
-V, --version  Print version
$ chara help say
Make the character say something

Usage: chara say [OPTIONS] [MESSAGE]...

[MESSAGE]...  Messages that chara want to say/think. If empty, read from STDIN

-r, --random         Choose random chara
-a, --all            Print all available chara
-t, --think          Make chara only thinking about it, not saying it
-w, --width <WIDTH>  Max width of speech bubble. Default to terminal width
-f, --file <CHARA>   Which chara should say/think
-h, --help           Print help


Hacking to the Gate~! 🧑‍💻🎶

MIT License © Latif Sulistyo



~242K SLoC