MEOWDO(1)

NAME

Meowdomeowdo is a cute, keyboard-driven todo list with a cat sidekick. It lives in your terminal, supports tags, search,…

SYNOPSIS

$sudo apt install libncurses-dev

INFO

88 stars
3 forks
0 views

DESCRIPTION

meowdo is a cute, keyboard-driven todo list with a cat sidekick. It lives in your terminal, supports tags, search, pinning, and remembers everything in ~/.local/share/meowdo/todos.txt

README

meowdo – a cat todo list for your terminal

CI License: GPL-3.0

meowdo is a cute, keyboard-driven todo list with a cat sidekick.
It runs in your terminal, supports tags, search, pinning, and saves everything in ~/.local/share/meowdo/todos.txt.

SmartStatus screenshot (A colorful ncurses UI with a cat and tasks)

Features

  • tasks – add, edit, delete, mark done
  • pinning – keep important tasks on top
  • tags – assign tags, filter by 1–6, color-coded
  • search – live filtering with /
  • progress bar – shows how many tasks are done
  • freaky cat – changes mood depending on pending tasks
  • celebration – all tasks done? kitty party!
  • persistent – data saved to ~/.local/share/meowdo/todos.txt
  • vim-like keysj/k, g/G, PgUp/PgDn

Dependencies

  • ncurses (development libraries)
  • C compiler (gcc, clang, …)
  • make

Install ncurses (examples)

OSCommand
Arch Linuxsudo pacman -S ncurses
Debian/Ubuntusudo apt install libncurses-dev
macOS (Homebrew)brew install ncurses
Fedorasudo dnf install ncurses-devel

Installation

Arch Linux (AUR)

yay -S meowdo

Or any other AUR helper. Package maintained by Just_fauna.

From source

git clone https://github.com/Sycorlax/Meowdo.git
cd Meowdo
make

Nix/NixOS

(see Build section below)

Build

git clone https://github.com/Sycorlax/Meowdo.git
cd Meowdo
make

This will compile the program using the provided Makefile.
Do not run as root – the program writes to ~/.local/share/meowdo/.

Nix/NixOS

There are two methods to build Meowdo using Nix: the flake and the package.

Note that the package (default.nix) will always do the latest tagged release, which as of writing is 1.3.5. The flake is for the latest development commit (or "unstable") version.

If using the Nix flake, you will first need to install Nix and enable Nix flakes.

If not on NixOS, add this to ~/.config/nix/nix.conf:

experimental-features = nix-command flakes

And then run nix build . in the project folder.

If on NixOS, add this to your configuration:

nix.settings.experimental-features = [
    "nix-command"
    "flakes"
];

And rebuild, then run nix build . in the project folder.

Of using the package (default.nix), do this command:

nix-build -E 'with import <nixpkgs> { }; callPackage ./default.nix {}'

This will then build the package.

Both methods create ./result/bin/meowdo, which can be run.

Note that getting this into the nixpkgs repo is in the works by Dusk, aka the person writing this nix section.

Usage

./meowdo

Default Key Bindings

KeyAction
j / move down
k / move up
g / Gjump to top / bottom
PgUp / PgDnpage up / down
nnew task
eedit selected task
Spacetoggle done
ptoggle pin
tset / clear tag
ddelete selected task
Ddelete ALL tasks
/search
Escclear search + tag filter
16filter by tag (color-coded)
0show all tasks
qquit

Data Storage

  • Directory: ~/.local/share/meowdo/
  • File: todos.txt – plain text, editable (but careful with the format)

Line format:

<P|->|<x| >|<tag>|<text>|<created_ts>|<done_ts>

Example:

P|x|work|review PR|1678896000|1678899600
-| |home|buy cat food|1678896000|0

Notes

  • Tags are case-insensitive (stored lowercased)
  • Maximum 1024 todos (increase MAX_TODOS if needed)

Troubleshooting

🐱 I don't see the cat, just weird characters!

If your cat looks like \xe2\xa0\x80\xe2\xa0\x80... or random symbols, your terminal isn't set to UTF-8 mode. The cat art uses Unicode braille characters that require UTF-8 encoding.

Quick fix:

# Set UTF-8 locale for this session
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

Run meowdo again

./meowdo

Permanent fix (add to your ~/.bashrc or ~/.zshrc):

echo 'export LANG=en_US.UTF-8' >> ~/.bashrc
echo 'export LC_ALL=en_US.UTF-8' >> ~/.bashrc
source ~/.bashrc

If locale is missing (Debian/Ubuntu):

sudo dpkg-reconfigure locales
# Select en_US.UTF-8 from the list

Test if UTF-8 is working:

echo "🐱"

If you see a cat emoji, you're good! If you see \xf0\x9f\x90\xb1, UTF-8 is not enabled.

🖥️ Terminal still not showing the cat?

Some minimal terminal emulators don't support Unicode braille characters. Try using:

  • Linux: GNOME Terminal, Konsole, Alacritty, Kitty
  • macOS: Terminal.app, iTerm2
  • Windows: Windows Terminal, WSL with Windows Terminal

❌ "ncurses.h: No such file or directory"

You're missing the ncurses development libraries. See the Dependencies section above for installation commands.

⚠️ "_XOPEN_SOURCE" redefined warning

This is harmless! The program will still work fine. It's just a compiler warning about a duplicate definition.

Contributing

Pull requests are welcome! Please ensure:

  • Code compiles without warnings (-Wall -Wextra)
  • The GitHub Actions build passes

Acknowledgements

  • Bertieio – AUR packaging and maintenance
  • Dusk – Nix flake & package support, working on nixpkgs submission (currently stalled, as contributing to nixpkgs is difficult okay 3: -Dusk)

License

GPL-3.0 – see LICENSE file for details.


Made with 💖 and 😺

SEE ALSO

clihub5/2/2026MEOWDO(1)