ra-yavuz › meowtrics

meowtrics logo: a sleeping cat curled around a CPU chip

meowtrics

A small animated emoji that lives in your system tray and gossips about your machine. Cat-shaped by default, sweats when the CPU is hot, naps when you're idle. Hover reveals a one-line take on what's going on.

animated Oneko cat
Personal open-source project. meowtrics is provided free for personal use, with no support guarantee, no SLA, and no commercial relationship implied. Deliberately separate from the author's professional work at ramazan-yavuz.tr.

Quick install

One command. Detects your distro and picks the best available path.

curl -fsSL https://ra-yavuz.github.io/meowtrics/get.sh | sudo bash

Prints the disclaimer and asks for consent before doing anything. Set MEOWTRICS_YES=1 to skip the prompt for unattended installs. Other install paths (manual apt setup, single .deb, from source) appear further down.

What it does

A tiny daemon reads your system's vital signs from the kernel (/proc, /sys, no root needed), runs each through a debounced state machine, and renders a small animated emoji in your system tray that reflects the most interesting state at any given moment. Hover and a one-line message tells you what it thinks is going on.

On KDE Plasma 6 it ships as a native plasmoid with a richer popup. On other desktops (GNOME with AppIndicator, XFCE, Cinnamon, Budgie, MATE, LXQt) it shows up as a StatusNotifierItem tray icon. On tiling window managers (Sway, Hyprland, i3, bspwm) it can be consumed as a custom module by waybar, polybar, or i3blocks.

Platform support

Tested on Ubuntu (Linux only). macOS is not supported: meowtrics relies on Linux /proc and /sys interfaces for sensors, and on D-Bus StatusNotifierItem (or KDE Plasma) for the tray icon, none of which exist on Darwin. WSL2 is partially viable for the JSON-output mode (meowtrics json for waybar / polybar consumers running inside the WSL distro), but the tray icon path needs a Linux desktop session, which WSL2 does not provide by default.

Sensors (planned for v0.1 .. v0.2)

SensorSourceExample states
CPU load/proc/statidle đŸ˜ē / busy đŸ˜ŧ / pegged đŸĨĩ
RAM/proc/meminfofine / high / critical đŸĢ¨
Swap/proc/meminfonone / thrashing 💀
Thermal/sys/class/thermalcool đŸĨļ / warm / hot đŸĨĩ / throttling 🐌đŸ”Ĩ
Fan/sys/class/hwmonoff / spinning 🌀 / max
Battery/sys/class/power_supplycharging 🔌 / discharging / low đŸĒĢ / full 🔋
Disk usagestatvfsfine / filling 🤰 / nearly full âš ī¸
Disk IO/proc/diskstatsidle 😴 / busy / grinding đŸĸ
Network/proc/net/devidle / active / saturated 📡
GPU/sys/class/drm, nvidia-smiidle / busy / hot đŸ”Ĩ
Brightness/sys/class/backlightdark 🌙 / bright â˜€ī¸
Webcam / micpactl, /proc/*/fdidle / in use 👀 🎤
Idle / timeD-Bus, /proc/uptimeactive / away 😴 / 2am đŸĻ‰

Messages

Each sensor state has a set of emoji and a weighted bag of message templates. The widget picks one per tick. Templates use placeholders like {value} and {duration}. The database is plain JSON, hand-editable, and the widget loads three layers in order:

Contributions to the message bank are welcome via pull request to data/messages.json. More cats, funnier lines, more nuanced states.

Install via apt repository

One line. Sets up the ra-yavuz apt repository if not already added, refreshes the package index, and installs meowtrics. Idempotent, safe to re-run. Auto-updates via apt upgrade.

sudo bash -c 'set -e; install -m 0755 -d /etc/apt/keyrings && curl -fsSL https://ra-yavuz.github.io/apt/pubkey.gpg -o /etc/apt/keyrings/ra-yavuz.gpg && echo "deb [signed-by=/etc/apt/keyrings/ra-yavuz.gpg] https://ra-yavuz.github.io/apt stable main" > /etc/apt/sources.list.d/ra-yavuz.list && apt update && apt install -y meowtrics'
systemctl --user enable --now meowtrics

If you already added the ra-yavuz apt repo earlier, all you need is sudo apt update && sudo apt install meowtrics. The sudo apt update step is required: without it apt will not see new packages or new versions.

Step by step (manual repo setup)
# 1. Trust the signing key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://ra-yavuz.github.io/apt/pubkey.gpg \
  | sudo tee /etc/apt/keyrings/ra-yavuz.gpg > /dev/null

# 2. Add the apt source
echo "deb [signed-by=/etc/apt/keyrings/ra-yavuz.gpg] https://ra-yavuz.github.io/apt stable main" \
  | sudo tee /etc/apt/sources.list.d/ra-yavuz.list

# 3. Refresh the package index, then install
sudo apt update
sudo apt install meowtrics
systemctl --user enable --now meowtrics

Install single .deb from GitHub Releases

Grab the latest .deb directly. No automatic updates.

wget https://github.com/ra-yavuz/meowtrics/releases/latest/download/meowtrics_0.1.0-1_amd64.deb
sudo apt install ./meowtrics_0.1.0-1_amd64.deb
systemctl --user enable --now meowtrics

Install from source

Any distro with Rust 1.75+ and systemd:

git clone https://github.com/ra-yavuz/meowtrics.git
cd meowtrics
make
sudo make install
systemctl --user enable --now meowtrics

KDE Plasma 6 widget

The package ships the plasmoid alongside the daemon. After install, right-click your panel, Add Widgets, search for meowtrics. The widget shows the active emoji at panel size and opens a richer popup on click with per-sensor breakdowns and prose messages.

tiling-WM (waybar / polybar / i3blocks)

The daemon's meowtrics json output is line-delimited JSON suitable as a custom module. Example waybar snippet:

"custom/meowtrics": {
  "exec": "meowtrics json",
  "interval": 5,
  "return-type": "json",
  "tooltip": true
}

Disclaimer / no warranty

This software reads from /proc and /sys and renders a tray icon. It does not modify hardware state, but it is provided as is, without warranty of any kind, express or implied. The author is not liable for any damage to hardware, data, or system, however caused. Sensor interpretations are heuristic and may be wrong on your hardware. Do not rely on this widget for any decision that matters. Messages displayed by this widget are jokes; do not interpret them as authoritative system advice. By installing or running this software you accept full responsibility. Full text: repo README, license: MIT.

Licensing of bundled emoji packs

The default install ships no bundled glyph assets: the tray icon is rendered from Unicode codepoints using your system's emoji font. Optional companion packs (Volpeon's Blobcat, OpenMoji, Fluentui Emoji, Twemoji) ship as separate packages, each with their own license file and attribution. Full policy: LICENSING.md.