██████╗████████╗ ██████╗ ██████╗ █████╗ ██████╗ ███████╗
██╔════╝╚══██╔══╝██╔═══██╗██╔══██╗██╔══██╗██╔════╝ ██╔════╝
╚█████╗ ██║ ██║ ██║██████╔╝███████║██║ ███╗█████╗
╚═══██╗ ██║ ██║ ██║██╔══██╗██╔══██║██║ ██║██╔══╝
██████╔╝ ██║ ╚██████╔╝██║ ██║██║ ██║╚██████╔╝███████╗
╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚══════╝
███████╗██╗ ██╗ ██████╗ ██╗ ██╗███████╗██████╗
██╔════╝██║ ██║██╔═══██╗██║ ██║██╔════╝██╔══██╗
╚█████╗ ███████║██║ ██║██║ █╗ ██║█████╗ ██████╔╝
╚═══██╗██╔══██║██║ ██║██║███╗██║██╔══╝ ██╔══██╗
███████║██║ ██║╚██████╔╝╚███╔███╔╝███████╗██║ ██║
╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
cargo install storageshower
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
█ >> INITIALIZING FEATURE MATRIX... █
█ >> STATUS: ALL SYSTEMS NOMINAL █
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
> FEATURE_DUMP.exe
[RENDER_ENGINE]
├── Live disk usage display ─── color-coded progress bars
│ ├── gradient ████▓▓▒▒░░
│ ├── solid █████████
│ ├── thin ▬▬▬▬▬▬▬▬▬
│ └── ascii #########
│
[TELEMETRY_CORE]
├── Real-time system stats ─── load avg / memory / CPU
│ ├── swap / process count / uptime
│ ├── network IP / battery / TTY
│ └── background thread @ 3s via Arc<Mutex<>>
│
[ALERT_SUBSYSTEM]
├── Threshold alerts
│ ├── ◈ NOMINAL ── all clear, choomba
│ ├── ⚠ WARNING ── approaching redline
│ └── ✖ CRITICAL ── flatlined
│
[INTERFACE_DECK]
├── Sort ─── name / usage% / size / asc / desc
├── Filter ─── case-insensitive substring match
├── Units ─── human / GiB / MiB / raw bytes
├── Themes ─── 10 builtin + custom user themes (TOML)
├── Theme editor ─── live color picker with per-channel control
└── Persistent config ─── ~/.storageshower.conf (TOML)
│
[DRILL_DOWN]
├── Directory explorer ─── Enter on any mount to drill in
│ ├── recursive size calculation per directory
│ ├── background scanning via Arc<Mutex<>>
│ ├── breadcrumb navigation (Enter/Backspace/Esc)
│ └── gradient size bars relative to largest entry
│
[NET_LATENCY]
├── Network filesystem latency ─── NFS/SMB/CIFS/SSHFS
│ ├── timed read_dir with 2s timeout (no root needed)
│ ├── color-coded badge: green(<50ms) / warn / red
│ └── detects: nfs, nfs4, cifs, smbfs, afp, sshfs, s3fs, 9p
│
[DISK_IO]
├── Live disk I/O throughput ─── per-mount read/write rates
│ ├── macOS: IOKit IOBlockStorageDriver byte counters
│ ├── Linux: /proc/diskstats sector counters
│ ├── auto device→mount mapping via getmntinfo / /proc/mounts
│ └── overlay on bar: ▲1.2M/s ▼500K/s (shown when active)
│
[ALERT_ENGINE]
├── Disk free space alerts ─── threshold crossing detection
│ ├── terminal bell (\x07) on newly crossed thresholds
│ ├── pulsing red border flash for 2 seconds
│ ├── dark red row highlight on alerting disks
│ ├── status bar message: ⚠ ALERT: /mount 90%
│ └── auto-clears when disk drops below threshold
│
[SMART_HEALTH]
├── SMART drive health status ─── per-device monitoring
│ ├── macOS: diskutil info SMART Status (Verified/Failing)
│ ├── Linux: /sys/block/*/device/state
│ ├── ✔ green for healthy, ✘ red for failing
│ └── cached per base device, mapped to all mounts
│
[PLATFORM_COMPAT]
├── macOS ── SUPPORTED
├── Linux ── SUPPORTED
└── auto-detects battery, memory, TTY, local IP
> RENDER_PREVIEW.dat
// DEFAULT_THEME
// GREEN_THEME
// HELP_OVERLAY
> REQUIRED_IMPLANTS.cfg
RUST_VERSION >= 1.70 [2021 edition]
TARGET_OS == macOS || Linux
IMPLANT |
PURPOSE |
ratatui 0.29 |
TUI rendering framework |
crossterm 0.28 |
Terminal events + manipulation |
sysinfo 0.32 |
Disk / memory / CPU / proc intel |
clap 4 |
CLI argument parsing |
dirs 5 |
Home directory detection |
serde 1 |
Config serialization |
toml 0.8 |
Config file format |
libc 0.2 |
Unix syscalls (time, TTY) |
> COMPILE_SEQUENCE.sh
cargo build --release
cargo run --release
./target/release/storageshower
> CLI_OPTIONS.exe
┌──────────────────────────────────────────────────┐
│ ◈◈◈ COMMAND LINE DECK ◈◈◈ │
└──────────────────────────────────────────────────┘
CLI flags override config file settings. Every --flag has a --no-flag inverse
to force-override in either direction.
// SORTING
FLAG |
DESCRIPTION |
-s, --sort MODE |
Sort disk entries — name, pct, size |
-R, --reverse / --no-reverse |
Reverse sort order |
-l, --local-only / --no-local |
Show only local disks (HDD/SSD) |
--no-virtual / --virtual |
Hide/show virtual filesystems (tmpfs, devfs, etc.) |
// DISPLAY
FLAG |
DESCRIPTION |
-b, --bar-style STYLE |
Bar visualization — gradient, solid, thin, ascii |
-c, --color PALETTE |
Color palette — default, green, blue, purple, amber, cyan, red, sakura, matrix, sunset |
--theme NAME |
Activate a custom theme by name (defined in config) |
--list-colors |
List all builtin color schemes with preview |
-u, --units MODE |
Unit display — human, gib, mib, bytes |
-k, --compact / --no-compact |
Compact mount names |
-f, --full-mount / --no-full-mount |
Show full mount paths |
--bars / --no-bars |
Show/hide usage bars |
--border / --no-border |
Show/hide border chrome |
--header / --no-header |
Show/hide column headers |
--used / --no-used |
Show/hide used/total size display |
// THRESHOLDS
FLAG |
DESCRIPTION |
-w, --warn PCT |
Warning threshold (default: 70%) |
-C, --crit PCT |
Critical threshold (default: 90%) |
// COLUMNS
FLAG |
DESCRIPTION |
--col-mount WIDTH |
Mount column width (0 = auto) |
--col-bar-end WIDTH |
Bar-end column width (0 = auto) |
--col-pct WIDTH |
Percentage column width (0 = auto) |
// SYSTEM
FLAG |
DESCRIPTION |
-r, --refresh SECS |
Data refresh interval (default: 1s) |
--config PATH |
Config file path (default: ~/.storageshower.conf) |
-h, --help |
Display help transmission |
-V, --version |
Display version information |
// EXAMPLES
storageshower -c purple -b ascii storageshower -s pct -R storageshower -l --no-virtual storageshower -u gib -w 60 -C 85 storageshower --theme neonpink storageshower --list-colors storageshower --config /tmp/ss.conf
> KEYBIND_MATRIX.dat
┌──────────────────────────────────────────────────┐
│ ◈◈◈ COMMAND INTERFACE ◈◈◈ │
└──────────────────────────────────────────────────┘
// GENERAL_OPS
KEY |
ACTION |
q Q |
Disconnect (or close help overlay) |
h H ? |
Toggle help HUD |
p P |
Pause / resume data stream |
Esc |
Deselect current disk |
// NAVIGATION
KEY |
ACTION |
j Down |
Select next disk |
k Up |
Select previous disk |
G End |
Jump to last disk |
Home Ctrl+g |
Jump to first disk |
Ctrl+d |
Half-page down |
Ctrl+u |
Half-page up |
// SORT_PROTOCOL
KEY |
ACTION |
n N |
Sort by mount name (again to reverse) |
u U |
Sort by usage % (again to reverse) |
s S |
Sort by size (again to reverse) |
r R |
Reverse sort vector |
// DISPLAY_MODS
KEY |
ACTION |
b |
Cycle bar style — gradient / solid / thin / ascii |
c |
Cycle color theme — 10 builtins + custom themes |
C |
Open theme editor — live color picker |
v V |
Toggle usage bars |
d D |
Toggle used/size columns |
g |
Toggle column headers |
x X |
Toggle border chrome |
m M |
Compact mount names |
w W |
Full mount paths |
i I |
Cycle units — human / GiB / MiB / bytes |
f F |
Cycle refresh rate — 1s / 2s / 5s / 10s |
t |
Cycle warn threshold — 50 / 60 / 70 / 80% |
T |
Cycle crit threshold — 80 / 85 / 90 / 95% |
// FILTER_OPS
KEY |
ACTION |
l L |
Local disks only |
a A |
Show all filesystems (incl. virtual) |
/ |
Enter filter mode |
0 |
Purge filter |
// FILTER_EDIT_MODE
KEY |
ACTION |
Enter |
Confirm filter |
Esc |
Cancel filter |
Backspace Ctrl+h |
Delete char before cursor |
Delete |
Delete char at cursor |
Ctrl+w |
Delete word backward |
Ctrl+u |
Clear line before cursor |
Ctrl+k |
Delete to end of line |
Ctrl+a Home |
Cursor to start |
Ctrl+e End |
Cursor to end |
Ctrl+b Left |
Cursor left |
Ctrl+f Right |
Cursor right |
// DISK_OPS
KEY |
ACTION |
Enter |
Drill down into selected mount |
o O |
Open selected mount in file manager |
y Y |
Copy mount path to clipboard |
e E |
Export disk matrix to file |
// DRILL_DOWN_MODE
KEY |
ACTION |
j k |
Navigate entries |
Enter |
Drill into selected directory |
Backspace |
Go up one level |
Esc |
Return to disk list |
o O |
Open current directory in file manager |
g G |
Jump to first / last entry |
// THEME_EDITOR (C)
KEY |
ACTION |
j k |
Select color channel |
h l |
Adjust value ±1 |
H L |
Adjust value ±10 |
Enter s |
Save (prompts for name) |
Esc q |
Cancel |
// MOUSE_INPUT
ACTION |
EFFECT |
Left-click disk row |
Select disk |
Left-click selected disk |
Drill down into mount |
Left-click column header |
Cycle sort on that column |
Left-drag column separator |
Resize mount / right column |
Right-click |
Toggle help overlay |
> BENCHMARK_TELEMETRY.dat
┌──────────────────────────────────────────────────┐
│ ◈◈◈ PERFORMANCE MATRIX ◈◈◈ │
└──────────────────────────────────────────────────┘
Measured with Criterion.rs on Apple Silicon (M-series).
// CORE_FORMATTING
BENCHMARK |
TIME |
format_bytes (Human, 1 GiB) |
~67 ns |
format_bytes (GiB, 1 GiB) |
~69 ns |
format_bytes (Bytes, zero) |
~20 ns |
format_uptime (45m) |
~21 ns |
format_uptime (2d14h) |
~39 ns |
truncate_mount (w=8) |
~27 ns |
truncate_mount (w=32) |
~97 ns |
// LAYOUT_ENGINE
BENCHMARK |
TIME |
mount_col_width |
~590 ps |
right_col_width_static |
~540 ps |
// COLOR_PIPELINE
BENCHMARK |
TIME |
palette |
~2.4 ns |
gradient_color_at |
~0.7–1.1 ns |
// TIME_OPS
BENCHMARK |
TIME |
epoch_to_local |
~300 ns |
chrono_now |
~427 ns |
// DATA_COLLECTION
BENCHMARK |
TIME |
collect_disk_entries |
~3.2 µs |
collect_sys_stats |
~3.8 µs |
// CONFIG_SERDE
BENCHMARK |
TIME |
prefs serialize (TOML) |
~4.6 µs |
prefs deserialize (TOML) |
~5.3 µs |
// SORT_DISKS
BENCHMARK |
10 |
50 |
200 |
by_name |
270 ns |
1.7 µs |
7.9 µs |
by_pct |
242 ns |
1.2 µs |
4.3 µs |
by_size |
250 ns |
1.2 µs |
4.2 µs |
// FILTER_DISKS
BENCHMARK |
10 |
50 |
200 |
substring_match |
291 ns |
1.6 µs |
5.9 µs |
no_match |
151 ns |
746 ns |
3.0 µs |
// RENDER_PIPELINE
BENCHMARK |
TIME |
format_all_disks (10) |
~1.5 µs |
format_all_disks (50) |
~4.4 µs |
format_all_disks (200) |
~15.7 µs |
cargo bench
> CONFIG_PERSISTENCE.log
┌──────────────────────────────────────────────────────┐
│ ALL PREFS AUTO-SAVED TO ~/.storageshower.conf │
│ FORMAT: TOML ── RESTORED ON BOOT ── ZERO EDIT │
│ │
│ >> sort mode >> sort direction >> show all │
│ >> refresh rate >> bar style >> color mode │
│ >> warn/crit >> bar visibility >> border │
│ >> col headers >> compact mode >> mount paths │
│ >> show used >> show local >> custom widths │
│ >> mount col w >> right col w >> pct col w │
│ >> custom themes (HashMap) >> active theme │
└──────────────────────────────────────────────────────┘
> CUSTOM_THEMES.cfg
┌──────────────────────────────────────────────────┐
│ ◈◈◈ THEME SYSTEM ◈◈◈ │
└──────────────────────────────────────────────────┘
10 builtin palettes: Neon Sprawl · Acid Rain · Ice Breaker · Synth Wave · Rust Belt · Ghost Wire · Red Sector · Sakura Den · Data Stream · Solar Flare
Create your own by adding to ~/.storageshower.conf:
[custom_themes.neonpink]
blue = 199
green = 46
purple = 201
light_purple = 213
royal = 196
dark_purple = 161
active_theme = "neonpink"
Or use the in-app theme editor (C key) to tweak colors live and save.
See themes/ for all builtin palettes as ready-to-copy TOML files.