Skip to main content

Textual System Monitor

A beautiful system monitoring terminal app created in Python, using Textual.

This is the main page, where you can see live-updating readouts for all system stats:

Somewhat Feature Complete Design

Note: Personal info has been censored. Screenshot from Windows.

Getting Started

This is a terminal app, so you should have a terminal to use and knowledge of how to use it.

You should have Python >= 3.12.

Because this is a standalone application not intended to be used in a larger app, it's easy (and most sensible) to run with Pipx or UV.

Install with:

  pipx install textual-system-monitor

or:

  uv tool install textual-system-monitor

Run with

  tsm

That's it!

You could probably also install with normal Pip if you wanted to.

Features

For this project, Windows is a first-class citizen and features are developed with Windows in mind. It also works on Linux (at least Ubuntu), but GPU information is not implemented.

  • All information live-updates. Some information updates slowly to be more performant. Other information, like CPU load, updates multiple times a second.
  • Percentages (indicating load) are color-coordinated according to certain thresholds. High percentages are red, medium percentages are yellow, and low percentages are green.
  • Quantities of bytes are automatically shown in human-readable formats, such as KiB and GiB. Can switch a kilobyte to be defined as 1000 bytes (KB) or 1024 bytes (KiB).
  • If the window is too small, all panes have vertical scroll bars, such as the one in the Processes section in this screenshot.
  • At any time, press q to exit the app. Crtl-C also works.
  • In-app Guide screen.
  • Each system stat has its own dedicated page that can be seen with by hitting the corresponding key, or by clicking the corresponding pane on the main screen.
  • Footer, which always show what keys can be pressed and what they do.
  • Header, which shows a clock.
  • Multiple colour themes!

Check out EXAMPLES.md for a guide on each screen.

Main Page Overview

The main page is the page that is shown when the app first starts and is the one in the above screenshot. It has simple views for all system stats.

Processes

The left-hand side shows information about current processes on the system. Shows the top 10 heaviest processes, as sorted by CPU load.

Stats

The right-hand side shows various system stats.

  • Drive Usage: Shows info on the current drives on your system. Includes both storage and media drives.
  • Memory Usage: Shows the current status of the system's memory.
  • CPU Usage: Shows the current load of each system core, as well as overall CPU load.
  • Network Info: Shows the status of each connected network interface.
  • GPU Info: Shows the status of the GPU.

Stack

  • Python (language)
  • UV (Python environment, package, and version manager)
  • Bash (shell. As this is a terminal app, the shell matters. I assume Bash throughout the app)
  • Textual (framework)
  • Pytest (test framework)
  • Ruff (linter and formatter)
  • Make (build tool/ command runner)
  • Just (optional command runner)

Desired Features

  • Make all panels live-update
  • Add CPU load info to Processes and sort by the highest load
  • Make certain panels searchable as necessary
  • Make panels clickable to open a new screen showing more info
  • Add GPU info
  • Add temperature info
  • Add support for Linux
  • Add support for macOS
  • Make all command-line duties possible in make
  • Add the ability to switch between 1000 and 1024-byte kilobytes

Metadata

Release files for textual-system-monitor 1.0.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for textual-system-monitor 1.0.7
File Size Uploaded
textual_system_monitor-1.0.7.tar.gz 1.7 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for textual-system-monitor 1.0.7
File Interpreter ABI Platform
textual_system_monitor-1.0.7-py3-none-any.whl Python 3 none any Details

Total release size: 1.7 MB

Release files / textual_system_monitor-1.0.7.tar.gz

Download URL textual_system_monitor-1.0.7.tar.gz
Size 1.7 MB
Tags Source
SHA-256 checksum
How to use checksums
dcd1be4b3ae7e38bce92f9696e69d3fa95789f53964ce81db7482fbb5bc27947
BLAKE2b-256 checksum
How to use checksums
5341ad322b94093eb37e9c7a78d9ad8672c36c1f99ae5c752ad8a0879b634de7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / textual_system_monitor-1.0.7-py3-none-any.whl

Download URL textual_system_monitor-1.0.7-py3-none-any.whl
Size 36.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f040b0a5860e0d54a9aed349a896276ba821327e40b71b39b26830e97ffe9e91
BLAKE2b-256 checksum
How to use checksums
6f18057ba18b0c6dfcd44ac9051ba08a68b5cf5447195396b9cb1cdbb7fe5f43
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

1.0.7 This release

2 release files

1.0.6

2 release files

1.0.5

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page