monitorify 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- monitorify/__init__.py +3 -0
- monitorify/__main__.py +4 -0
- monitorify/collector/__init__.py +5 -0
- monitorify/collector/manager.py +48 -0
- monitorify/collector/schema.py +22 -0
- monitorify/collector/worker.py +44 -0
- monitorify/config.py +26 -0
- monitorify/daemon.py +32 -0
- monitorify/main.py +53 -0
- monitorify/stats/DiskStats.py +108 -0
- monitorify/stats/__init__.py +1 -0
- monitorify/stats/cpuStats.py +46 -0
- monitorify/stats/networkStats.py +69 -0
- monitorify/stats/programmList.py +272 -0
- monitorify/stats/ramStats.py +18 -0
- monitorify/storage/__init__.py +3 -0
- monitorify/storage/db.py +154 -0
- monitorify/ui/__init__.py +1 -0
- monitorify/ui/tui/__init__.py +1 -0
- monitorify/ui/tui/components/menu.py +180 -0
- monitorify/ui/tui/components/widgetManager.py +43 -0
- monitorify/ui/tui/css/tui.css +168 -0
- monitorify/ui/tui/tui.py +187 -0
- monitorify/ui/tui/widgets/__init__.py +1 -0
- monitorify/ui/tui/widgets/brailleGraph.py +261 -0
- monitorify/ui/tui/widgets/cpuWidget.py +46 -0
- monitorify/ui/tui/widgets/diskWidget.py +207 -0
- monitorify/ui/tui/widgets/networkWidget.py +98 -0
- monitorify/ui/tui/widgets/procInfoWidget.py +44 -0
- monitorify/ui/tui/widgets/programmListWidget.py +202 -0
- monitorify/ui/tui/widgets/ramWidget.py +36 -0
- monitorify/ui/tui/widgets/statusWidget.py +45 -0
- monitorify-1.0.0.dist-info/METADATA +135 -0
- monitorify-1.0.0.dist-info/RECORD +37 -0
- monitorify-1.0.0.dist-info/WHEEL +5 -0
- monitorify-1.0.0.dist-info/entry_points.txt +3 -0
- monitorify-1.0.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: monitorify
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: A lightweight Linux terminal system monitor built with Textual
|
|
5
|
+
Author: Leon
|
|
6
|
+
License: MIT
|
|
7
|
+
Requires-Python: >=3.10
|
|
8
|
+
Description-Content-Type: text/markdown
|
|
9
|
+
Requires-Dist: textual>=0.80.0
|
|
10
|
+
Requires-Dist: platformdirs>=4.0.0
|
|
11
|
+
Requires-Dist: rich>=13.0.0
|
|
12
|
+
|
|
13
|
+
# Monitorify
|
|
14
|
+
|
|
15
|
+
A lightweight system monitor that runs right in your terminal. It tracks CPU usage, memory consumption, network activity, disk metrics, and process states in real time with historical graphing — no bloated dependencies, just a clean, high-performance TUI dashboard.
|
|
16
|
+
|
|
17
|
+
Built with Python and [Textual](https://github.com/Textualize/textual). Reads directly from `/proc` and `/sys` for lightning-fast, native performance on Linux.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Features
|
|
22
|
+
|
|
23
|
+
* **CPU & System Info** — Live CPU percentage, multi-timeframe braille graphing, OS kernel, hostname, and system uptime.
|
|
24
|
+
* **Memory (RAM)** — Real-time memory utilization, percentage, and historical graph.
|
|
25
|
+
* **Network Throughput** — Split-view upload/download graph with current speed, peak throughput, and total transferred bytes.
|
|
26
|
+
* **Disk Metrics** — I/O activity rates (reads/writes) and storage capacity breakdown for physical disks.
|
|
27
|
+
* **Process Monitor** — Interactive list of running processes with CPU/RAM metrics, process state, uptime, and real-time inspector.
|
|
28
|
+
* **Background Collector Daemon** — Lightweight collector logging metrics to an SQLite database (`~/.local/share/monitorify/monitorify.db`) with automatic pruning.
|
|
29
|
+
* **Customizable Menu (`m`)** — Toggle widget visibility, adjust collection frequency, and set history graph duration (1m, 5m, 10m, 30m, 1h, or custom durations like `2h`, `1d`).
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Quick Start
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Recommended — isolated install via pipx
|
|
37
|
+
pipx install git+https://github.com/leonst036/Monitorify.git
|
|
38
|
+
|
|
39
|
+
# Then launch the dashboard
|
|
40
|
+
monitorify
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
> For full installation options (pip, source, systemd daemon) see **[INSTALL.md](INSTALL.md)**.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Usage
|
|
48
|
+
|
|
49
|
+
### Dashboard
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
monitorify
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
| Key | Action |
|
|
56
|
+
|-----|--------|
|
|
57
|
+
| `m` | Open settings menu (toggle widgets, set intervals, change history window) |
|
|
58
|
+
| `q` / `c` | Quit |
|
|
59
|
+
|
|
60
|
+
### Standalone Background Daemon
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
monitorify-daemon
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Metrics are written to `~/.local/share/monitorify/monitorify.db` continuously.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Configuration & Paths
|
|
71
|
+
|
|
72
|
+
Monitorify follows XDG base directory conventions:
|
|
73
|
+
|
|
74
|
+
| Purpose | Default Path | Environment Variable |
|
|
75
|
+
|---|---|---|
|
|
76
|
+
| **Database** | `~/.local/share/monitorify/monitorify.db` | `MONITORIFY_DB_PATH` |
|
|
77
|
+
| **Daemon PID** | `/run/user/<uid>/monitorify/daemon.pid` | `MONITORIFY_PID_PATH` |
|
|
78
|
+
| **Interval** | `1.0` seconds | `MONITORIFY_INTERVAL` |
|
|
79
|
+
| **Retention** | `604800` seconds (7 days) | `MONITORIFY_RETENTION` |
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Project Structure
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
Monitorify/
|
|
87
|
+
├── pyproject.toml # Package build configuration & entry points
|
|
88
|
+
├── README.md # This file
|
|
89
|
+
├── INSTALL.md # Full installation guide
|
|
90
|
+
├── main.py # Developer entrypoint shim
|
|
91
|
+
├── src/
|
|
92
|
+
│ └── monitorify/
|
|
93
|
+
│ ├── __init__.py # Package metadata (__version__)
|
|
94
|
+
│ ├── __main__.py # python -m monitorify entrypoint
|
|
95
|
+
│ ├── config.py # XDG path handling & environment settings
|
|
96
|
+
│ ├── main.py # Dashboard runner & daemon supervisor
|
|
97
|
+
│ ├── daemon.py # Standalone metrics collector daemon
|
|
98
|
+
│ ├── collector/
|
|
99
|
+
│ │ ├── manager.py # Worker lifecycle coordinator
|
|
100
|
+
│ │ ├── worker.py # Background metric collection thread
|
|
101
|
+
│ │ └── schema.py # Dataclass metric structures
|
|
102
|
+
│ ├── stats/
|
|
103
|
+
│ │ ├── cpuStats.py # /proc/stat CPU calculator
|
|
104
|
+
│ │ ├── ramStats.py # /proc/meminfo RAM calculator
|
|
105
|
+
│ │ ├── networkStats.py # /proc/net/dev throughput calculator
|
|
106
|
+
│ │ ├── DiskStats.py # /proc/diskstats I/O & storage parser
|
|
107
|
+
│ │ └── programmList.py # /proc process parser & cache thread
|
|
108
|
+
│ ├── storage/
|
|
109
|
+
│ │ └── db.py # SQLite metrics storage & historical queries
|
|
110
|
+
│ └── ui/
|
|
111
|
+
│ └── tui/
|
|
112
|
+
│ ├── tui.py # Main Textual App
|
|
113
|
+
│ ├── css/
|
|
114
|
+
│ │ └── tui.css # TUI styling & themes
|
|
115
|
+
│ ├── components/
|
|
116
|
+
│ │ ├── menu.py # Settings sidebar component
|
|
117
|
+
│ │ └── widgetManager.py # Dynamic grid layout organizer
|
|
118
|
+
│ └── widgets/
|
|
119
|
+
│ ├── brailleGraph.py # High-density Unicode graph
|
|
120
|
+
│ ├── cpuWidget.py # CPU monitor widget
|
|
121
|
+
│ ├── ramWidget.py # RAM monitor widget
|
|
122
|
+
│ ├── networkWidget.py # Network monitor widget
|
|
123
|
+
│ ├── diskWidget.py # Disk I/O & storage widget
|
|
124
|
+
│ ├── programmListWidget.py # Interactive process list
|
|
125
|
+
│ ├── procInfoWidget.py # Process details panel
|
|
126
|
+
│ └── statusWidget.py # Host & kernel status
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Requirements
|
|
132
|
+
|
|
133
|
+
* **Python:** 3.10+
|
|
134
|
+
* **OS:** Linux (relies on `/proc` and `/sys` filesystems)
|
|
135
|
+
* **Terminal:** Minimum 80 columns × 24 lines recommended
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
monitorify/__init__.py,sha256=psHkEBeeNO6jwcBz7lS3gl2AJgnSTYJqNxJHzCrCKhA,87
|
|
2
|
+
monitorify/__main__.py,sha256=bKJzxXT3Yn6rVYu7gSSRdTzuAR2hlgFSJhEfJ0DnvYU,70
|
|
3
|
+
monitorify/config.py,sha256=1026EW5U2SIACu9e66cqN9qjA2UY905zfwd6lVcD4O0,896
|
|
4
|
+
monitorify/daemon.py,sha256=O89f2mcKLLcdIXSaxEAvuDquXyja8QpsTgOFQBOS4lQ,820
|
|
5
|
+
monitorify/main.py,sha256=sDXQfogIyNlsyxtRBVpkrMXcaIgXVgo5QVGPwODUTNg,1466
|
|
6
|
+
monitorify/collector/__init__.py,sha256=pt5NziT2A1Gx-_pBEq9UR90hqBgy1h-VIrta_eNnMKE,176
|
|
7
|
+
monitorify/collector/manager.py,sha256=qf78Fkfct4MrDYq2x7B26IBW-6AOUJFXG5J9CJtcHKQ,1327
|
|
8
|
+
monitorify/collector/schema.py,sha256=nLwMAKCW-Mzms9eCDPkVUu9uYREJwlj6AVJJFoCe2F4,543
|
|
9
|
+
monitorify/collector/worker.py,sha256=YdP79N_CzlVpJJ4YeNG39_codaqtv1erjEummE8SSqs,1468
|
|
10
|
+
monitorify/stats/DiskStats.py,sha256=O6N5pH8LjhdH83lLiJJs0Q4Bh3EkzC7ezxlgOgXsCS0,3427
|
|
11
|
+
monitorify/stats/__init__.py,sha256=1bT6VPgszr0gnPJGrDPFwN_2ZH74btZqwbiQTzrd9js,15
|
|
12
|
+
monitorify/stats/cpuStats.py,sha256=N_syGNntv9B6x7sYeftHO3NSeqTj6a69idedDAt8qi4,1526
|
|
13
|
+
monitorify/stats/networkStats.py,sha256=Htz04mO7TZze2gkExCcAYRfFKcaBk3aA6lX3m-ZTZmM,1851
|
|
14
|
+
monitorify/stats/programmList.py,sha256=xQhhqhoLOIX8jstN8VbgB-CBvV3aoLuz8i7wlrBOfJw,8512
|
|
15
|
+
monitorify/stats/ramStats.py,sha256=CeyQm-aglBe_k349YUPDdX6Jy8EfJqHBTKC1bN4KTG4,680
|
|
16
|
+
monitorify/storage/__init__.py,sha256=chS3ql6Pxt2o4ClboFIv2wghMzW6Xkp5RVNV760Q2Hk,49
|
|
17
|
+
monitorify/storage/db.py,sha256=Ryvy6uuUiolbDn9O8wjhCjQhcwZfocPt_lUpr878oXA,5862
|
|
18
|
+
monitorify/ui/__init__.py,sha256=1bT6VPgszr0gnPJGrDPFwN_2ZH74btZqwbiQTzrd9js,15
|
|
19
|
+
monitorify/ui/tui/__init__.py,sha256=1bT6VPgszr0gnPJGrDPFwN_2ZH74btZqwbiQTzrd9js,15
|
|
20
|
+
monitorify/ui/tui/tui.py,sha256=ZhWU3SfGpb3lhwkmt7rjcnus_etnL7mCYkWjQaRS-Lo,6838
|
|
21
|
+
monitorify/ui/tui/components/menu.py,sha256=Jp2Lx0HY-JoIKCTosL_FxfYjIwQc5MkR73T0P-hJshg,7107
|
|
22
|
+
monitorify/ui/tui/components/widgetManager.py,sha256=7vIyMlNR_Cu_NsZAZDskmTsMX935KsCae06gmlDAC2o,1463
|
|
23
|
+
monitorify/ui/tui/css/tui.css,sha256=NtsRUKcKmg1GnPW2nP6vJk6MvaHOqo6fvHxYYqu6Tac,2585
|
|
24
|
+
monitorify/ui/tui/widgets/__init__.py,sha256=ODVJfnqyITKxADGgw965AVRkvmYhQjmt67rWOElgsSY,60
|
|
25
|
+
monitorify/ui/tui/widgets/brailleGraph.py,sha256=CM7fjsLGQMcJiqhAG3pM8PjidTllSBoNhvKx60X4yPc,9747
|
|
26
|
+
monitorify/ui/tui/widgets/cpuWidget.py,sha256=FnDurECbZE_Yp12eVzYaY8oc_GAEH7glLQvQYxo15Dc,1817
|
|
27
|
+
monitorify/ui/tui/widgets/diskWidget.py,sha256=6tvdgT7KUXKLxyCADqab4d-BQ34Jwnnb9h9klzuort4,7889
|
|
28
|
+
monitorify/ui/tui/widgets/networkWidget.py,sha256=CbtVMYzd3rX1zEtLunFsIqc4zlotRYZ1cj2fPhLaZ_s,3583
|
|
29
|
+
monitorify/ui/tui/widgets/procInfoWidget.py,sha256=HpFx3RF1CbLylu7cQi68wXJL6T_n2uFWuSgtMtVDifE,1477
|
|
30
|
+
monitorify/ui/tui/widgets/programmListWidget.py,sha256=Ixpr0f8rIiYmVt9TcKT4nv1oq0Lpyh4G_thWvmi9P5I,7693
|
|
31
|
+
monitorify/ui/tui/widgets/ramWidget.py,sha256=oBAzUwoZxuehzz7uSxxiddbw6UK8E2FDU9OcEOHB_qM,1348
|
|
32
|
+
monitorify/ui/tui/widgets/statusWidget.py,sha256=tS53_NjtcGMpsC6ObzYyXxju9qqPHmX9UzRJOLj9INg,1323
|
|
33
|
+
monitorify-1.0.0.dist-info/METADATA,sha256=fanFc-m0hNmLlEH8SNk6UbC1V2Imp4uG0KOaNz7RMQA,5546
|
|
34
|
+
monitorify-1.0.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
|
|
35
|
+
monitorify-1.0.0.dist-info/entry_points.txt,sha256=NlD0O3HWpLLLyEtfpfKtuIEslOIAoRRLYVcmOuXkq2I,94
|
|
36
|
+
monitorify-1.0.0.dist-info/top_level.txt,sha256=Jxgi5DbtU9-ZYlCCHlR312EkxZNmt7QstM9_I9DJKqM,11
|
|
37
|
+
monitorify-1.0.0.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
monitorify
|