No description
  • C++ 59.8%
  • Shell 13.5%
  • CMake 13%
  • PowerShell 8.5%
  • Nix 5.2%
Find a file
2026-05-07 14:36:00 +02:00
.github/workflows fedora 44 issues 2026-05-07 14:02:23 +02:00
assets better example 2026-02-05 18:11:50 +01:00
cmake rpm support 2026-05-07 12:37:21 +02:00
nix nix support 2026-03-25 12:06:10 +01:00
scripts error install if we're not getting the correct binary 2026-05-07 09:56:02 +02:00
src Remove unicode translation 2026-02-09 13:20:15 +01:00
.clang-format Version 2 2026-02-04 13:02:25 +01:00
.gitignore nix support 2026-03-25 12:06:10 +01:00
CMakeLists.txt fedora 44 issues 2026-05-07 14:02:23 +02:00
flake.lock nix support 2026-03-25 12:06:10 +01:00
flake.nix nix support 2026-03-25 12:06:10 +01:00
LICENSE Version 2 2026-02-04 13:02:25 +01:00
README.md fedora/opensuse instructions + tables of supported distros 2026-05-07 14:36:00 +02:00

icon

Lolcat++

Blazingly fast GitHub License GitHub top language Build Status GitHub Release AUR Version

A rewrite of the popular utility LOLCAT in C++. The rationale is that lolcat is often used in init scripts and such. It can at times be rather time-consuming to run it, since it's written in Ruby. Now it's -- naturally -- BLAZINGLY FAST in C++. It's also cross-platform.

Example usage

Help:

Example usage

Example usage: fortune + cowsay + lolcat

Example usage

Getting it

Just head over to the releases and download it. Here's some copy-paste scripts for your platform:

Arch Linux: AUR

Use your prefered AUR helper and choose whether to compile from source, or to just grab the binary that the CI produces. This aur-package is updated automatically in the CI/CD.

From source:

paru -S lolcat++

Binary release:

paru -S lolcat++-bin

Debian / Ubuntu / Linux Mint

Family Versions Architectures
Debian 13 (Trixie) amd64, arm64
Ubuntu 24.04 LTS (Noble), 25.04 (Plucky) amd64, arm64
Mint LMDE 7 / 22 / 22.1 / 22.2 / 22.3 amd64, arm64

Use the apt repo over on lolcatpp/apt.

sudo install -d /etc/apt/keyrings
. /etc/os-release && \
    CODENAME="${UBUNTU_CODENAME:-$VERSION_CODENAME}" && \
    echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/lolcatpp.asc] https://lolcatpp.github.io/apt $CODENAME main" \
    | sudo tee /etc/apt/sources.list.d/lolcatpp.list

curl -fsSL https://lolcatpp.github.io/apt/pubkey.gpg | sudo tee /etc/apt/keyrings/lolcatpp.asc > /dev/null

sudo apt update
sudo apt install lolcat++

Fedora / RHEL / Rocky / Alma

Family Versions Architectures
Fedora 43, 44 x86_64, aarch64
RHEL / Rocky / Alma 9, 10 x86_64, aarch64

Use the dnf compatible repo over on lolcatpp/rpm.

. /etc/os-release
case "$ID" in
  fedora)               family="fedora-${VERSION_ID}" ;;
  rhel|rocky|almalinux) family="rhel-${VERSION_ID%%.*}" ;;
  *) echo "unsupported distro: $ID"; exit 1 ;;
esac
sudo curl -fsSLo /etc/yum.repos.d/lolcatpp.repo "https://lolcatpp.github.io/rpm/${family}/lolcatpp.repo"
sudo dnf install -y lolcat++

openSUSE Leap

Supported: openSUSE Leap 16.0 -- x86_64 & aarch64

Use the zypper compatible repo over on lolcatpp/rpm.

. /etc/os-release
sudo zypper addrepo --gpgcheck \
  "https://lolcatpp.github.io/rpm/opensuse-leap-${VERSION_ID}/lolcatpp.repo"
sudo rpm --import https://lolcatpp.github.io/rpm/pubkey.gpg
sudo zypper install lolcat++

Nix / NixOS

You can run it directly with Nix flakes:

nix run github:lolcatpp/lolcatpp

To install it into your profile:

nix profile install github:lolcatpp/lolcatpp

If you're working from a local checkout:

nix build
nix develop

To install it system-wide on NixOS from your own flake, add this input:

{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    "lolcat++" = {
      url = "github:lolcatpp/lolcatpp";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };
}

Then add the package to environment.systemPackages in one of your NixOS modules:

{ inputs, pkgs, ... }:
{
  environment.systemPackages = [
    inputs."lolcat++".packages.${pkgs.system}.default
  ];
}

If your system flake does not override it with follows, lolcat++ defaults to nixos-unstable.

macOS: Homebrew

There's a homebrew tap setup under lolcatpp/homebrew-tap. See the repository for more detailed instructions. It's updated automatically in the CI/CD, which means that you're getting the latest updates. It downloads the prebuilt binary found under the releases if you're on arm64 or compiles from source if your're on x86_64.

brew tap lolcatpp/tap
brew install lolcatpp

Linux & macOS: from releases

If none of the options above suit you needs: grab the latest release from the releases with the following command.

curl -sSL "https://raw.githubusercontent.com/lolcatpp/lolcatpp/master/scripts/install.sh" | bash

Windows: from releases (Administrator PowerShell)

Grab the latest release from the releases, and update the $PATH variable, with the following command.

iwr -useb "https://raw.githubusercontent.com/lolcatpp/lolcatpp/master/scripts/install.ps1" | iex

Building

You'll need cmake, boost and a C++ 20 compatible compiler. If your compiler supports C++ 20, but doesn't support <format>, then you'll also need libfmt (it's used as a polyfill). Thereafter, just run

cmake -S . -B build && cmake --build build --parallel

You'll now have the executable in build/lolcat

If you'd like to install the program, just run

cmake --install build

Acknowledgement

Both the project and the codebase are heavily inspired by the LOLCAT project.