Terminal system monitor in Gleam — htop × btop
1.4 kB
51 lines
1# monitor
2
3A terminal system monitor written in **Gleam** — sits between **htop** and **btop**.
4
5| From htop | From btop |
6|-----------|-----------|
7| Dense process table (PID, USER, PRI, NI, VIRT, RES, S, CPU%, MEM%, TIME+, Command) | Color meters & sparklines for CPU / memory / swap |
8| Sort by column, filter (`/`), kill (`k`) | Per-core CPU bars |
9| Keyboard-first navigation | Clean alternate-screen TUI |
10
11## Requirements
12
13- Linux (`/proc`)
14- [Gleam](https://gleam.run) + Erlang/OTP
15- A modern terminal (truecolor optional, 256-color fine)
16
17## Run
18
19```sh
20# if Erlang isn't on PATH (NixOS):
21nix develop # or: nix-shell -p gleam beamPackages.erlang
22gleam run
23```
24
25## Keys
26
27| Key | Action |
28|-----|--------|
29| `↑` / `u` · `↓` / `j` | Move selection (htop-style: `k` is kill, not up) |
30| `PgUp` / `PgDn` | Page |
31| `g` / `G` | Top / bottom |
32| `c` `m` `p` `t` `n` | Sort by CPU / MEM / PID / TIME / name (press again to reverse) |
33| `r` | Reverse sort |
34| `/` | Filter (substring on command, user, pid) |
35| `k` / `K` | Kill selected process (SIGTERM, confirms) |
36| `Space` | Force refresh |
37| `h` / `?` | Help |
38| `q` / `Esc` | Quit |
39
40## Architecture
41
42```
43src/
44 monitor.gleam entrypoint
45 app.gleam event loop, keys, refresh
46 ui.gleam layout & rendering (etch)
47 sys.gleam /proc collectors
48 format.gleam bars, sizes, sparklines
49```
50
51Built with [etch](https://hex.pm/packages/etch) for the TUI backend.