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.
Files changed (37) hide show
  1. monitorify/__init__.py +3 -0
  2. monitorify/__main__.py +4 -0
  3. monitorify/collector/__init__.py +5 -0
  4. monitorify/collector/manager.py +48 -0
  5. monitorify/collector/schema.py +22 -0
  6. monitorify/collector/worker.py +44 -0
  7. monitorify/config.py +26 -0
  8. monitorify/daemon.py +32 -0
  9. monitorify/main.py +53 -0
  10. monitorify/stats/DiskStats.py +108 -0
  11. monitorify/stats/__init__.py +1 -0
  12. monitorify/stats/cpuStats.py +46 -0
  13. monitorify/stats/networkStats.py +69 -0
  14. monitorify/stats/programmList.py +272 -0
  15. monitorify/stats/ramStats.py +18 -0
  16. monitorify/storage/__init__.py +3 -0
  17. monitorify/storage/db.py +154 -0
  18. monitorify/ui/__init__.py +1 -0
  19. monitorify/ui/tui/__init__.py +1 -0
  20. monitorify/ui/tui/components/menu.py +180 -0
  21. monitorify/ui/tui/components/widgetManager.py +43 -0
  22. monitorify/ui/tui/css/tui.css +168 -0
  23. monitorify/ui/tui/tui.py +187 -0
  24. monitorify/ui/tui/widgets/__init__.py +1 -0
  25. monitorify/ui/tui/widgets/brailleGraph.py +261 -0
  26. monitorify/ui/tui/widgets/cpuWidget.py +46 -0
  27. monitorify/ui/tui/widgets/diskWidget.py +207 -0
  28. monitorify/ui/tui/widgets/networkWidget.py +98 -0
  29. monitorify/ui/tui/widgets/procInfoWidget.py +44 -0
  30. monitorify/ui/tui/widgets/programmListWidget.py +202 -0
  31. monitorify/ui/tui/widgets/ramWidget.py +36 -0
  32. monitorify/ui/tui/widgets/statusWidget.py +45 -0
  33. monitorify-1.0.0.dist-info/METADATA +135 -0
  34. monitorify-1.0.0.dist-info/RECORD +37 -0
  35. monitorify-1.0.0.dist-info/WHEEL +5 -0
  36. monitorify-1.0.0.dist-info/entry_points.txt +3 -0
  37. 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,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ monitorify = monitorify.main:cli
3
+ monitorify-daemon = monitorify.daemon:main
@@ -0,0 +1 @@
1
+ monitorify