Skip to content

Repository files navigation

Vitals

A terminal resource monitor for Linux built with notcurses.

C++20 License: GPL v3 Platform CMake Notcurses

Build Status

Debian 12 Debian 13
Ubuntu 22.04 Ubuntu 24.04 Ubuntu 26.04
Fedora 43 Fedora 44
AlmaLinux 8 AlmaLinux 9 AlmaLinux 10
openSUSE Tumbleweed openSUSE Leap 16.0
Arch Linux

Overview

Settings

⚡ Installation

Quick Install

Install the latest version with a single command:

bash <(curl -fsSL https://raw.githubusercontent.com/rebootless/vitals/main/install.sh)

The installer automatically:

  • Installs the required build dependencies
  • Clones the notcurses source (release pinned by NOTCURSES_VERSION in setup.sh)
  • Builds the project
  • Installs vitals to /usr/local/bin
  • Installs the required libraries under /usr/local and registers them with the dynamic linker

Safe to run multiple times.

Quick Uninstall

Remove vitals and the notcurses files installed alongside it with a single command:

bash <(curl -fsSL https://raw.githubusercontent.com/rebootless/vitals/main/uninstall.sh)

The uninstaller:

  • Reads the manifest left by install.sh and removes every file it installed (binary, notcurses libraries/headers/pkgconfig files)
  • Prunes any directories left empty
  • Removes the /etc/ld.so.conf.d entry added for the notcurses libraries and refreshes the linker cache
  • Asks before deleting your saved config at ~/.config/vitals

If vitals was installed a different way (no manifest present), it falls back to a best-effort removal of the vitals binary and matching notcurses libraries.

Build from Source (click to expand)

Clone the repository:

git clone https://github.com/rebootless/vitals.git
cd vitals

Prepare the build environment:

chmod +x setup.sh
./setup.sh

Build:

cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)

Install:

sudo cmake --install build
dirname "$(grep -m1 'libnotcurses\.so' build/install_manifest.txt)" | sudo tee /etc/ld.so.conf.d/usr_local_lib.conf
sudo ldconfig
Run Without Installing (click to expand)
git clone https://github.com/rebootless/vitals.git
cd vitals

chmod +x setup.sh
./setup.sh

cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)

LD_LIBRARY_PATH="$(pwd)/build/notcurses" ./build/vitals

Note

Symbol Mirroring is experimental and may render incorrectly depending on your environment. Mirrored glyphs require font and Unicode 13+ wcwidth support. Terminal emulators may handle these glyphs differently. The Linux TTY (TERM=linux) does not support them.

📊 Panels

Panel Data source Metrics
CPU /proc/stat, /sys/devices/system/cpu/cpu*/cpufreq/ CPU usage, per-core activity, frequency, history
GPU /sys/class/drm, /sys/class/hwmon, nvidia-smi GPU utilization, VRAM, temperature, power
Memory /proc/meminfo RAM and swap usage
Network /proc/net/dev Per-interface RX/TX throughput
Storage /proc/diskstats, statvfs() Filesystem usage and disk I/O
Thermal /sys/class/thermal, /sys/class/hwmon CPU, GPU, and motherboard temperatures

Note

The GPU panel is displayed only when a supported device is detected. Otherwise, the CPU panel expands to use the available space.

⌨️ Controls

Key Action
q Quit
Esc Open the settings menu
Tab Select the next option
↑ / ↓ Change the selected value
Enter Save changes and close
Esc (in settings) Discard changes and close

🧪 Self-test

vitals --self-test

Checks, without a terminal, that every data source vitals reads (CPU, memory, GPU, storage, network, thermal sensors, system info) is available and returns sane values. It prints one line per component — OK, SKIP (optional hardware that isn't present, e.g. no GPU) or FAIL — and exits with 0 unless something failed, so it can be used in CI.

📋 Requirements

  • Linux (kernel ≥ 4.x)
  • GCC or Clang with C++20 support
  • CMake ≥ 3.21
  • Internet access (required to download notcurses during setup)

📄 License

Licensed under the GNU General Public License v3.0. See the LICENSE file for details.