TUI SSH monitor for Synology DSM 7.x
UI
- F1 Dashboard now holds CPU/MEM/storage/network/services/disks in a
single dense view (was split across F1/F3/F4). F2 Logs stays separate.
- CPU and MEM rendered inline (label + bar + summary on one row) so the
dashboard fits more on screen.
- DataTables and Services list capped for compactness; services sorted
with interesting+running first.
Refresh
- Three tiers: fast (1s) for system+network, medium (5s) for storage+
services, slow (30s) for disks (smartctl is heavy). Each tier runs
in an exclusive worker group so overlaps are dropped, not queued.
Log filter
- Bindings (a / 1-4) moved from LogsTab container to the App, so they
fire regardless of focus. Pressing one auto-switches to the logs tab.
Synology DSM 7.3+ compatibility (verified against DS720+ / DSM 7.3.2)
- DSM version read from /etc/VERSION (synoinfo.conf no longer has
productversion on newer DSM).
- Disks discovered as /dev/sata{N} as well as /dev/sd{a..z} and NVMe;
smartctl runs with -d sat so SMART data is actually readable.
- SAS-style smartctl output (Vendor:/Product:) parsed as a fallback
when Device Model: is absent.
- Services collected via plain systemctl list-units, since
synoservicectl/synosystemctl are gone on recent DSM builds.
- Network primary() picks the interface with the most accumulated
traffic instead of hard-coded eth0.
Cleanup
- Removed ConfirmDialog and service start/stop/restart actions — the
app is now truly read-only, matching the stated philosophy and
eliminating a key conflict with `r`=refresh.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| .github/workflows | ||
| dsmview | ||
| Formula | ||
| .gitignore | ||
| LICENSE | ||
| pyproject.toml | ||
| README.md | ||
dsmview
TUI SSH monitor for Synology DSM 7.x — read-only dashboard inspired by btop.
brew tap janvete/tools
brew install dsmview
Usage
dsmview ssh -p334 root@192.168.1.100
dsmview ssh root@192.168.1.100 # default port 22
dsmview ssh nas-home # alias from ~/.ssh/config
dsmview ssh -i ~/.ssh/id_nas root@IP
Reads ~/.ssh/config (HostName, Port, IdentityFile, ProxyJump). Tries
id_ed25519, id_ecdsa, id_rsa, then the SSH agent. Falls back to a
password prompt only when no key works.
Read-only philosophy
The application only reads data from the NAS. No agent is installed, no configuration is touched. The single exception is start/stop/restart of a service — and that requires explicit confirmation in the UI.
Tabs
- F1 Dashboard — CPU history graph, memory, storage pools, network throughput, load average, temperatures.
- F2 Logs — live tail of
/var/log/messagesand/var/log/auth.logwith severity filters (ALL / ERROR / WARN / SECURITY / INFO). - F3 Services —
synoservicectl --listtable with up/down status and restart/stop/start actions. - F4 Disks — per-disk model/size/temp/health from
smartctlplus RAID status from/proc/mdstat.
Keys
F1..F4 switch tab
r refresh now
q quit
Requirements
- Python 3.12+
- Synology DSM 7.x with SSH enabled and a user that can run system commands
(typically
rootor a user inadministrators).