macutility 0.1.0__tar.gz
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.
- macutility-0.1.0/.gitignore +26 -0
- macutility-0.1.0/LICENSE +21 -0
- macutility-0.1.0/PKG-INFO +432 -0
- macutility-0.1.0/README.md +402 -0
- macutility-0.1.0/app/__init__.py +0 -0
- macutility-0.1.0/app/main.py +20 -0
- macutility-0.1.0/app/services/__init__.py +0 -0
- macutility-0.1.0/app/services/process_service.py +169 -0
- macutility-0.1.0/app/ui/__init__.py +0 -0
- macutility-0.1.0/app/ui/main_window.py +517 -0
- macutility-0.1.0/app/utils/__init__.py +0 -0
- macutility-0.1.0/app/utils/protected_processes.py +35 -0
- macutility-0.1.0/pyproject.toml +58 -0
- macutility-0.1.0/requirements.txt +5 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
|
|
5
|
+
# Virtual environment
|
|
6
|
+
.venv/
|
|
7
|
+
|
|
8
|
+
# macOS
|
|
9
|
+
.DS_Store
|
|
10
|
+
|
|
11
|
+
# IDE
|
|
12
|
+
.vscode/
|
|
13
|
+
.idea/
|
|
14
|
+
|
|
15
|
+
# Build
|
|
16
|
+
build/
|
|
17
|
+
dist/
|
|
18
|
+
*.spec
|
|
19
|
+
|
|
20
|
+
# Test / tooling cache
|
|
21
|
+
.pytest_cache/
|
|
22
|
+
.mypy_cache/
|
|
23
|
+
.ruff_cache/
|
|
24
|
+
|
|
25
|
+
# Logs
|
|
26
|
+
*.log
|
macutility-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Puji Ermanto
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.c
|
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: macutility
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A lightweight macOS desktop utility for system monitoring and process management.
|
|
5
|
+
Project-URL: Homepage, https://github.com/codesyariah122/MacUtility
|
|
6
|
+
Project-URL: Repository, https://github.com/codesyariah122/MacUtility
|
|
7
|
+
Project-URL: Issues, https://github.com/codesyariah122/MacUtility/issues
|
|
8
|
+
Author: Puji Ermanto
|
|
9
|
+
License: MIT
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Keywords: desktop,developer-tools,mac,macos,process-manager,system-monitor,utility
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Operating System :: MacOS
|
|
16
|
+
Classifier: Programming Language :: Python
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
24
|
+
Classifier: Topic :: System :: Monitoring
|
|
25
|
+
Classifier: Topic :: System :: Systems Administration
|
|
26
|
+
Requires-Python: >=3.10
|
|
27
|
+
Requires-Dist: psutil>=7.2.0
|
|
28
|
+
Requires-Dist: pyside6>=6.11.0
|
|
29
|
+
Description-Content-Type: text/markdown
|
|
30
|
+
|
|
31
|
+
# MacUtility
|
|
32
|
+
|
|
33
|
+
A lightweight macOS desktop utility built with Python and PySide6 for monitoring system resources and managing running processes.
|
|
34
|
+
|
|
35
|
+
MacUtility is designed as a practical developer-oriented utility for macOS, with a focus on quickly identifying high CPU or memory usage and safely managing processes from a graphical interface.
|
|
36
|
+
|
|
37
|
+
> 🚧 **Project Status:** Early Development / Pre-release
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Features
|
|
42
|
+
|
|
43
|
+
### Process Manager
|
|
44
|
+
|
|
45
|
+
Monitor running processes directly from a desktop interface.
|
|
46
|
+
|
|
47
|
+
- View running processes
|
|
48
|
+
- Display PID
|
|
49
|
+
- Display process name
|
|
50
|
+
- Monitor CPU usage
|
|
51
|
+
- Monitor memory usage
|
|
52
|
+
- View process status
|
|
53
|
+
- Search processes by name or PID
|
|
54
|
+
- Sort processes by CPU usage
|
|
55
|
+
- Terminate processes
|
|
56
|
+
- Force kill processes
|
|
57
|
+
- Protected system processes
|
|
58
|
+
|
|
59
|
+
### System Monitor
|
|
60
|
+
|
|
61
|
+
Monitor basic system resources in real time.
|
|
62
|
+
|
|
63
|
+
- CPU usage
|
|
64
|
+
- Memory usage
|
|
65
|
+
- Automatic refresh
|
|
66
|
+
- Lightweight monitoring
|
|
67
|
+
|
|
68
|
+
### Protected Processes
|
|
69
|
+
|
|
70
|
+
MacUtility includes a protection layer to prevent accidental termination of important macOS processes.
|
|
71
|
+
|
|
72
|
+
Protected processes include system components such as:
|
|
73
|
+
|
|
74
|
+
- `kernel_task`
|
|
75
|
+
- `launchd`
|
|
76
|
+
- `WindowServer`
|
|
77
|
+
- `loginwindow`
|
|
78
|
+
- `systemuiserver`
|
|
79
|
+
- `Finder`
|
|
80
|
+
- `Dock`
|
|
81
|
+
- `SystemUIServer`
|
|
82
|
+
- `coreaudiod`
|
|
83
|
+
- `coreduetd`
|
|
84
|
+
- `mds`
|
|
85
|
+
- `mds_stores`
|
|
86
|
+
- `mdworker`
|
|
87
|
+
- `mdworker_shared`
|
|
88
|
+
- `cfprefsd`
|
|
89
|
+
- `opendirectoryd`
|
|
90
|
+
- `distnoted`
|
|
91
|
+
- `notifyd`
|
|
92
|
+
|
|
93
|
+
The application also protects selected applications that should remain available during development, including:
|
|
94
|
+
|
|
95
|
+
- Termius
|
|
96
|
+
- Visual Studio Code
|
|
97
|
+
- Code Helper
|
|
98
|
+
|
|
99
|
+
The protection system is intentionally conservative and may be expanded as the project evolves.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Screenshots
|
|
104
|
+
|
|
105
|
+
### Process Manager
|
|
106
|
+
|
|
107
|
+
> Screenshot will be added as the UI evolves.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Tech Stack
|
|
112
|
+
|
|
113
|
+
MacUtility is built with:
|
|
114
|
+
|
|
115
|
+
- **Python 3**
|
|
116
|
+
- **PySide6** — desktop GUI framework
|
|
117
|
+
- **psutil** — system and process monitoring
|
|
118
|
+
|
|
119
|
+
### Architecture
|
|
120
|
+
|
|
121
|
+
The project separates UI, process management, and utility logic:
|
|
122
|
+
|
|
123
|
+
```text
|
|
124
|
+
MacUtility/
|
|
125
|
+
├── app/
|
|
126
|
+
│ ├── __init__.py
|
|
127
|
+
│ ├── main.py
|
|
128
|
+
│ │
|
|
129
|
+
│ ├── services/
|
|
130
|
+
│ │ ├── __init__.py
|
|
131
|
+
│ │ └── process_service.py
|
|
132
|
+
│ │
|
|
133
|
+
│ ├── ui/
|
|
134
|
+
│ │ ├── __init__.py
|
|
135
|
+
│ │ └── main_window.py
|
|
136
|
+
│ │
|
|
137
|
+
│ └── utils/
|
|
138
|
+
│ ├── __init__.py
|
|
139
|
+
│ └── protected_processes.py
|
|
140
|
+
│
|
|
141
|
+
├── .gitignore
|
|
142
|
+
├── requirements.txt
|
|
143
|
+
└── README.md
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Requirements
|
|
149
|
+
|
|
150
|
+
- macOS
|
|
151
|
+
- Python 3.10+
|
|
152
|
+
- pip
|
|
153
|
+
- Virtual environment recommended
|
|
154
|
+
|
|
155
|
+
PySide6 provides the desktop GUI, while psutil is responsible for accessing system and process information.
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Installation
|
|
160
|
+
|
|
161
|
+
### 1. Clone the repository
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
git clone https://github.com/codesyariah122/MacUtility.git
|
|
165
|
+
cd MacUtility
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### 2. Create a virtual environment
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
python3 -m venv .venv
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### 3. Activate the virtual environment
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
source .venv/bin/activate
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### 4. Install dependencies
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
pip install -r requirements.txt
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Running the Application
|
|
189
|
+
|
|
190
|
+
From the project root:
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
python -m app.main
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
MacUtility should open as a desktop application.
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## Development
|
|
201
|
+
|
|
202
|
+
MacUtility is currently being developed incrementally.
|
|
203
|
+
|
|
204
|
+
The current development milestone is:
|
|
205
|
+
|
|
206
|
+
### V0.1.0
|
|
207
|
+
|
|
208
|
+
- Process monitoring
|
|
209
|
+
- CPU monitoring
|
|
210
|
+
- Memory monitoring
|
|
211
|
+
- Process search
|
|
212
|
+
- Process sorting
|
|
213
|
+
- Process termination
|
|
214
|
+
- Force kill
|
|
215
|
+
- Protected processes
|
|
216
|
+
|
|
217
|
+
Future releases will expand the application into a broader macOS developer utility.
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Roadmap
|
|
222
|
+
|
|
223
|
+
### V0.1.x — Process Manager
|
|
224
|
+
|
|
225
|
+
- [x] CPU monitoring
|
|
226
|
+
- [x] Memory monitoring
|
|
227
|
+
- [x] Process list
|
|
228
|
+
- [x] Process search
|
|
229
|
+
- [x] Process sorting
|
|
230
|
+
- [x] Process termination
|
|
231
|
+
- [x] Force kill
|
|
232
|
+
- [x] Protected processes
|
|
233
|
+
- [x] Protected Termius
|
|
234
|
+
- [x] Protected Visual Studio Code
|
|
235
|
+
|
|
236
|
+
### V0.2.x — Dashboard
|
|
237
|
+
|
|
238
|
+
- [ ] Improved system dashboard
|
|
239
|
+
- [ ] Top CPU processes
|
|
240
|
+
- [ ] Top memory processes
|
|
241
|
+
- [ ] CPU usage indicators
|
|
242
|
+
- [ ] Memory usage indicators
|
|
243
|
+
- [ ] Process details
|
|
244
|
+
- [ ] Background monitoring worker
|
|
245
|
+
|
|
246
|
+
### V0.3.x — Disk Utilities
|
|
247
|
+
|
|
248
|
+
- [ ] Disk usage monitoring
|
|
249
|
+
- [ ] Large file finder
|
|
250
|
+
- [ ] Cache inspection
|
|
251
|
+
- [ ] Developer cache utilities
|
|
252
|
+
- [ ] Storage overview
|
|
253
|
+
|
|
254
|
+
### V0.4.x — Network Utilities
|
|
255
|
+
|
|
256
|
+
- [ ] Network status
|
|
257
|
+
- [ ] Network interface information
|
|
258
|
+
- [ ] IP information
|
|
259
|
+
- [ ] DNS utilities
|
|
260
|
+
- [ ] Ping utility
|
|
261
|
+
- [ ] Network diagnostics
|
|
262
|
+
|
|
263
|
+
### V0.5.x — Port Manager
|
|
264
|
+
|
|
265
|
+
- [ ] List listening ports
|
|
266
|
+
- [ ] Identify processes using ports
|
|
267
|
+
- [ ] Search ports
|
|
268
|
+
- [ ] Terminate process by port
|
|
269
|
+
- [ ] Port diagnostics
|
|
270
|
+
|
|
271
|
+
Example:
|
|
272
|
+
|
|
273
|
+
```text
|
|
274
|
+
Port 8000
|
|
275
|
+
|
|
276
|
+
PID Process
|
|
277
|
+
1234 php
|
|
278
|
+
|
|
279
|
+
[ Kill Process ]
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
### V0.6.x — Developer Utilities
|
|
283
|
+
|
|
284
|
+
Planned utilities for common development environments:
|
|
285
|
+
|
|
286
|
+
- [ ] PHP process management
|
|
287
|
+
- [ ] Node.js process management
|
|
288
|
+
- [ ] Laravel utilities
|
|
289
|
+
- [ ] Composer utilities
|
|
290
|
+
- [ ] npm utilities
|
|
291
|
+
- [ ] Yarn utilities
|
|
292
|
+
- [ ] Flutter utilities
|
|
293
|
+
- [ ] Android SDK utilities
|
|
294
|
+
- [ ] Git utilities
|
|
295
|
+
- [ ] SSH utilities
|
|
296
|
+
|
|
297
|
+
### V0.7.x — Docker Utilities
|
|
298
|
+
|
|
299
|
+
- [ ] Docker container overview
|
|
300
|
+
- [ ] Container CPU usage
|
|
301
|
+
- [ ] Container memory usage
|
|
302
|
+
- [ ] Start/stop containers
|
|
303
|
+
- [ ] Docker cleanup utilities
|
|
304
|
+
- [ ] Docker resource overview
|
|
305
|
+
|
|
306
|
+
### V0.8.x — macOS Integration
|
|
307
|
+
|
|
308
|
+
- [ ] Menu bar application
|
|
309
|
+
- [ ] macOS notifications
|
|
310
|
+
- [ ] Launch at login
|
|
311
|
+
- [ ] Native macOS application icon
|
|
312
|
+
- [ ] Improved macOS permissions handling
|
|
313
|
+
|
|
314
|
+
### V1.0.0 — Stable Release
|
|
315
|
+
|
|
316
|
+
The goal for `1.0.0` is a stable, polished macOS developer utility with reliable system monitoring and a collection of useful developer-oriented tools.
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
## Safety
|
|
321
|
+
|
|
322
|
+
MacUtility interacts directly with running processes.
|
|
323
|
+
|
|
324
|
+
Process termination can cause:
|
|
325
|
+
|
|
326
|
+
- Unsaved data loss
|
|
327
|
+
- Application crashes
|
|
328
|
+
- Interrupted development processes
|
|
329
|
+
- Unexpected system behavior
|
|
330
|
+
|
|
331
|
+
For this reason, MacUtility includes protected processes and confirmation dialogs before terminating processes.
|
|
332
|
+
|
|
333
|
+
Use **Force Kill** only when a process is unresponsive and normal termination does not work.
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
## Why MacUtility?
|
|
338
|
+
|
|
339
|
+
macOS already provides tools such as Activity Monitor and Terminal for process management.
|
|
340
|
+
|
|
341
|
+
MacUtility aims to provide a simpler workflow for developers who frequently need to:
|
|
342
|
+
|
|
343
|
+
1. Identify a process consuming excessive CPU or memory.
|
|
344
|
+
2. Find its PID.
|
|
345
|
+
3. Determine whether the process is safe to terminate.
|
|
346
|
+
4. Stop it without opening Terminal.
|
|
347
|
+
5. Access additional developer-oriented utilities from one application.
|
|
348
|
+
|
|
349
|
+
For example:
|
|
350
|
+
|
|
351
|
+
```text
|
|
352
|
+
🔥 Firefox plugin-container
|
|
353
|
+
|
|
354
|
+
CPU: 88%
|
|
355
|
+
|
|
356
|
+
[ Kill ]
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
instead of manually running:
|
|
360
|
+
|
|
361
|
+
```bash
|
|
362
|
+
ps -Ao pid,pcpu,pmem,comm | sort -k2 -nr
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
and then:
|
|
366
|
+
|
|
367
|
+
```bash
|
|
368
|
+
kill -9 <PID>
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
---
|
|
372
|
+
|
|
373
|
+
## Project Goals
|
|
374
|
+
|
|
375
|
+
MacUtility aims to become a practical toolbox for macOS developers.
|
|
376
|
+
|
|
377
|
+
The long-term goal is to bring frequently used commands and diagnostics into one lightweight desktop application.
|
|
378
|
+
|
|
379
|
+
Instead of remembering multiple Terminal commands, developers should be able to perform common tasks through a single interface.
|
|
380
|
+
|
|
381
|
+
---
|
|
382
|
+
|
|
383
|
+
## Contributing
|
|
384
|
+
|
|
385
|
+
Contributions, suggestions, and issue reports are welcome.
|
|
386
|
+
|
|
387
|
+
Before submitting a pull request:
|
|
388
|
+
|
|
389
|
+
1. Fork the repository.
|
|
390
|
+
2. Create a feature branch.
|
|
391
|
+
3. Make your changes.
|
|
392
|
+
4. Test the application on macOS.
|
|
393
|
+
5. Commit your changes.
|
|
394
|
+
6. Open a pull request.
|
|
395
|
+
|
|
396
|
+
Example:
|
|
397
|
+
|
|
398
|
+
```bash
|
|
399
|
+
git checkout -b feature/my-feature
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
---
|
|
403
|
+
|
|
404
|
+
## License
|
|
405
|
+
|
|
406
|
+
License information will be added before the first public release.
|
|
407
|
+
|
|
408
|
+
---
|
|
409
|
+
|
|
410
|
+
## Author
|
|
411
|
+
|
|
412
|
+
**Puji Ermanto**
|
|
413
|
+
|
|
414
|
+
GitHub:
|
|
415
|
+
|
|
416
|
+
https://github.com/codesyariah122
|
|
417
|
+
|
|
418
|
+
---
|
|
419
|
+
|
|
420
|
+
## Repository
|
|
421
|
+
|
|
422
|
+
GitHub:
|
|
423
|
+
|
|
424
|
+
https://github.com/codesyariah122/MacUtility
|
|
425
|
+
|
|
426
|
+
---
|
|
427
|
+
|
|
428
|
+
## Status
|
|
429
|
+
|
|
430
|
+
MacUtility is currently an active development project.
|
|
431
|
+
|
|
432
|
+
The current version focuses on the foundation of the process manager and system monitoring functionality. APIs, architecture, UI, and features may change before the `1.0.0` stable release.
|