#cat #rainbow #colorful #cli #colourful

app dota2cat

An updated fork of dotacat (which is like lolcat, but fast)

6 releases

0.3.2 Oct 12, 2025
0.3.1 Sep 16, 2025
0.2.3 Aug 18, 2022
0.2.2 Feb 5, 2022
0.2.1 Nov 15, 2021

#418 in Command line utilities

MIT license

185KB
111 lines

dota2cat

Dependency status License Pipeline status Downloads

This is an updated version of the dotacat crate. The original crate's name was a pun on lolcat (because DOTA is a similar game to LOL), so I named mine "DOTA 2 cat" :L

The main feature is a moderately faster implementation by using a buffered writer:

lynne@pasiphael:~/Projects/Code/rust/dota2cat (master) 37ms 1.12% 9GiB/31GiB
❯ hyperfine 'pv /usr/share/dict/linux.words | ~/temp/buffered > out' 'pv /usr/share/dict/linux.words | ~/temp/println > out'
Benchmark 1: pv /usr/share/dict/linux.words | ~/temp/buffered > out
  Time (mean ± σ):      1.923 s ±  0.044 s    [User: 1.766 s, System: 0.120 s]
  Range (min … max):    1.844 s …  1.981 s    10 runs
 
Benchmark 2: pv /usr/share/dict/linux.words | ~/temp/println > out
  Time (mean ± σ):      2.870 s ±  0.049 s    [User: 1.967 s, System: 0.845 s]
  Range (min … max):    2.815 s …  2.983 s    10 runs
 
Summary
  pv /usr/share/dict/linux.words | ~/temp/buffered > out ran
    1.49 ± 0.04 times faster than pv /usr/share/dict/linux.words | ~/temp/println > out

(buffered is the new implementation, println is the original. Measured with hyperfine)

In terms of throughput, pv measured the original at 2.04 MiB/s, and the new one at 2.75 MiB/s.

I've also updated the dependencies, modernised it to use Rust edition 2021, and fixed an issue with a breaking change in clap.

Installation

dota2cat can be installed with cargo, Rust's package/dependency manager:

cargo install dota2cat

To more easily facilitate replacing dotacat with dota2cat, the executable is still named dotacat.

The original README continues below.

dotacat

dotacat is meant to be a replacement to lolcat. If you're not aware, lolcat is a rather silly program which behaves like cat, but produces a colourful, rainbow output.

Why?

Speed!

$ time echo hi | lolcat
real    0m0.422s
user    0m0.393s
sys     0m0.028s

I use lolcat in my .bashrc file, so this amount of time is not ideal for me.

In contrast:

time echo hi | dotacat

real    0m0.045s
user    0m0.030s
sys     0m0.020s

Why the name?

Because Dota is better than LoL (According to people - I play neither)

Installation

If you have cargo installed, just run: cargo install dotacat

If not, head over to the releases page and download the latest release. Then run:

chmod +x dotacat
sudo mv dotacat /usr/local/bin

Usage

USAGE:
    dotacat [FLAGS] [OPTIONS] [files]...

ARGS:
    <files>...    Files to concatenate(`-` for STDIN)

FLAGS:
    -h, --help       Prints help information
    -i, --invert     Invert fg and bg
    -V, --version    Prints version information

OPTIONS:
    -F, --freq <freq>        Rainbow frequency [default: 0.1]
    -S, --seed <seed>        Rainbow seed, 0 = random [default: 0.0]
    -p, --spread <spread>    Rainbow spread [default: 1.0]

Examples:
	dotacat f - g	Output f's contents, then stdin, then g's contents.
	fortune | dotacat	Display a rainbow cookie.

Dependencies

~3.5–7MB
~122K SLoC