projectgrub 1.0.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.
- projectgrub-1.0.0/PKG-INFO +301 -0
- projectgrub-1.0.0/license +22 -0
- projectgrub-1.0.0/pyproject.toml +70 -0
- projectgrub-1.0.0/readme.md +269 -0
- projectgrub-1.0.0/setup.cfg +4 -0
- projectgrub-1.0.0/src/projectgrub/__init__.py +41 -0
- projectgrub-1.0.0/src/projectgrub/__main__.py +6 -0
- projectgrub-1.0.0/src/projectgrub/cli.py +860 -0
- projectgrub-1.0.0/src/projectgrub/constants.py +75 -0
- projectgrub-1.0.0/src/projectgrub/exceptions.py +75 -0
- projectgrub-1.0.0/src/projectgrub/grub_installer.py +327 -0
- projectgrub-1.0.0/src/projectgrub/preflight.py +291 -0
- projectgrub-1.0.0/src/projectgrub/py.typed +1 -0
- projectgrub-1.0.0/src/projectgrub/theme_manager.py +301 -0
- projectgrub-1.0.0/src/projectgrub/utils.py +283 -0
- projectgrub-1.0.0/src/projectgrub/validators.py +264 -0
- projectgrub-1.0.0/src/projectgrub.egg-info/PKG-INFO +301 -0
- projectgrub-1.0.0/src/projectgrub.egg-info/SOURCES.txt +24 -0
- projectgrub-1.0.0/src/projectgrub.egg-info/dependency_links.txt +1 -0
- projectgrub-1.0.0/src/projectgrub.egg-info/entry_points.txt +2 -0
- projectgrub-1.0.0/src/projectgrub.egg-info/requires.txt +7 -0
- projectgrub-1.0.0/src/projectgrub.egg-info/top_level.txt +1 -0
- projectgrub-1.0.0/tests/test_exceptions.py +52 -0
- projectgrub-1.0.0/tests/test_preflight.py +44 -0
- projectgrub-1.0.0/tests/test_theme_manager.py +129 -0
- projectgrub-1.0.0/tests/test_validators.py +72 -0
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: projectgrub
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Interactive GRUB theme manager for Linux - Browse, install, and manage GRUB boot themes
|
|
5
|
+
Author-email: Roshan Kr Singh <roshellwett@icloud.com>
|
|
6
|
+
Maintainer-email: Roshan Kr Singh <roshellwett@icloud.com>
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
Project-URL: Homepage, https://github.com/zenithopensourceprojects/projectgrub
|
|
9
|
+
Project-URL: Repository, https://github.com/zenithopensourceprojects/projectgrub
|
|
10
|
+
Project-URL: Documentation, https://github.com/zenithopensourceprojects/projectgrub#readme
|
|
11
|
+
Project-URL: Issues, https://github.com/zenithopensourceprojects/projectgrub/issues
|
|
12
|
+
Project-URL: Funding, https://zenithopensourceprojects.vercel.app/
|
|
13
|
+
Keywords: grub,theme,boot,linux,bootloader,customization
|
|
14
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
15
|
+
Classifier: Environment :: Console
|
|
16
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
17
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Requires-Python: >=3.10
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
License-File: license
|
|
25
|
+
Requires-Dist: typer[all]>=0.12.0
|
|
26
|
+
Requires-Dist: rich>=13.0.0
|
|
27
|
+
Provides-Extra: dev
|
|
28
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
29
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
|
|
30
|
+
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
31
|
+
Dynamic: license-file
|
|
32
|
+
|
|
33
|
+
<!-- PROJECT GRUB README -->
|
|
34
|
+
|
|
35
|
+
<h1 align="center">PROJECT GRUB - GRUB Theme Manager</h1>
|
|
36
|
+
|
|
37
|
+
<p align="center">
|
|
38
|
+
<img src="https://img.shields.io/badge/Platform-Linux-2ea44f?style=for-the-badge&logo=linux&logoColor=white" />
|
|
39
|
+
<img src="https://img.shields.io/badge/License-MIT-blue?style=for-the-badge" />
|
|
40
|
+
<img src="https://img.shields.io/badge/Python-3.10+-3776AB?style=for-the-badge&logo=python&logoColor=white" />
|
|
41
|
+
<img src="https://img.shields.io/badge/Status-Stable-success?style=for-the-badge" />
|
|
42
|
+
</p>
|
|
43
|
+
|
|
44
|
+
<p align="center">
|
|
45
|
+
<strong>Developer:</strong> roshhellwett<br/>
|
|
46
|
+
<strong>Copyright:</strong> Zenith Open Source Projects
|
|
47
|
+
</p>
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
<p align="center">
|
|
52
|
+
<em>The ultimate tool to customize your Linux boot loader.</em>
|
|
53
|
+
</p>
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 🌟 Overview
|
|
58
|
+
|
|
59
|
+
**ProjectGRUB** is an interactive CLI tool that helps you browse, install, and manage GRUB boot themes on Linux. Instead of manually copying files and editing configurations, just run the menu and pick your theme.
|
|
60
|
+
|
|
61
|
+
## ✨ Features
|
|
62
|
+
|
|
63
|
+
- 🎨 **Browse Themes** - View all available GRUB themes with details
|
|
64
|
+
- 🚀 **Quick Install** - Install a theme in 3 clicks
|
|
65
|
+
- ⚙️ **Advanced Install** - Choose resolution (1080p, 2K, 4K) and options
|
|
66
|
+
- 🔍 **Theme Validation** - Verify themes before installing
|
|
67
|
+
- 🔧 **System Diagnostics** - Check GRUB health and compatibility
|
|
68
|
+
- 📦 **Auto-Discovery** - New themes appear automatically in the menu
|
|
69
|
+
- 🛡️ **Safe Operations** - Backup before changes, rollback on failure
|
|
70
|
+
- 💾 **Pre-flight Checks** - Validates system readiness before any operation
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## 🚀 Quick Start
|
|
75
|
+
|
|
76
|
+
### Step 1: Install Python
|
|
77
|
+
If you don't have Python, download it here: https://www.python.org/downloads/
|
|
78
|
+
|
|
79
|
+
### Step 2: Install ProjectGRUB
|
|
80
|
+
```bash
|
|
81
|
+
pip install projectgrub
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Step 3: Run the Interactive Menu
|
|
85
|
+
```bash
|
|
86
|
+
python -m projectgrub start
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
That's it! The tool will guide you through everything.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## 📋 Installation Options
|
|
94
|
+
|
|
95
|
+
### Option 1: Install via pip (Recommended)
|
|
96
|
+
```bash
|
|
97
|
+
pip install projectgrub
|
|
98
|
+
projectgrub
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Option 2: Run from local clone
|
|
102
|
+
```bash
|
|
103
|
+
git clone https://github.com/zenithopensourceprojects/projectgrub.git
|
|
104
|
+
cd projectgrub
|
|
105
|
+
pip install -e .
|
|
106
|
+
projectgrub
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Option 3: Run without installing
|
|
110
|
+
```bash
|
|
111
|
+
git clone https://github.com/zenithopensourceprojects/projectgrub.git
|
|
112
|
+
cd projectgrub
|
|
113
|
+
pip install -e .
|
|
114
|
+
python -m projectgrub start
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## 🎯 Menu Options
|
|
120
|
+
|
|
121
|
+
| Option | Description |
|
|
122
|
+
|--------|-------------|
|
|
123
|
+
| **1. Browse Themes** | View all available GRUB themes with previews |
|
|
124
|
+
| **2. Quick Install** | Install a theme with recommended settings |
|
|
125
|
+
| **3. Advanced Install** | Choose resolution (1080p/2K/4K) and custom options |
|
|
126
|
+
| **4. Preview Theme** | View detailed theme information |
|
|
127
|
+
| **5. Uninstall Theme** | Remove current GRUB theme |
|
|
128
|
+
| **6. System Diagnostics** | Check GRUB health and compatibility |
|
|
129
|
+
| **7. Theme Validation** | Validate a theme before install |
|
|
130
|
+
| **8. Contribute Guide** | Learn how to add new themes |
|
|
131
|
+
| **9. Refresh Themes** | Reload themes from disk |
|
|
132
|
+
| **10. Help** | Documentation and tips |
|
|
133
|
+
| **0. Exit** | Exit the application |
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## 🛡️ Safety Features
|
|
138
|
+
|
|
139
|
+
### Pre-flight Checks
|
|
140
|
+
Before any operation, ProjectGRUB validates:
|
|
141
|
+
- ✅ Running on Linux
|
|
142
|
+
- ✅ Root privileges available
|
|
143
|
+
- ✅ GRUB installed
|
|
144
|
+
- ✅ GRUB directory accessible
|
|
145
|
+
- ✅ Write permissions available
|
|
146
|
+
- ✅ Sufficient disk space
|
|
147
|
+
|
|
148
|
+
### Rollback on Failure
|
|
149
|
+
If installation fails:
|
|
150
|
+
1. GRUB config is restored from backup
|
|
151
|
+
2. Partially copied files are removed
|
|
152
|
+
3. User receives clear error message with suggestions
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## 🎨 Available Themes
|
|
157
|
+
|
|
158
|
+
The tool automatically discovers themes from the `themes/` folder. Current themes include:
|
|
159
|
+
|
|
160
|
+
| Theme | Author | Description |
|
|
161
|
+
|-------|--------|-------------|
|
|
162
|
+
| Vimix | Vimix | Clean, modern flat-design |
|
|
163
|
+
| Xenlism | Xenlism | Minimal and elegant |
|
|
164
|
+
| Tela | Tela | Minimalist aesthetics |
|
|
165
|
+
| Dark Matter | VandalByte | Dark and sleek |
|
|
166
|
+
| DedSec | VandalByte | Cyberpunk hacker style |
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## 🤝 Contributing Themes
|
|
171
|
+
|
|
172
|
+
Want to add your own theme? Easy!
|
|
173
|
+
|
|
174
|
+
### Step 1: Create Theme Folder
|
|
175
|
+
```
|
|
176
|
+
themes/your-theme-name/
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Step 2: Add Resolution Subfolders
|
|
180
|
+
```
|
|
181
|
+
themes/your-theme-name/
|
|
182
|
+
├── 1080p/
|
|
183
|
+
│ ├── theme.txt
|
|
184
|
+
│ ├── background.png
|
|
185
|
+
│ └── ... assets
|
|
186
|
+
├── 2k/
|
|
187
|
+
│ └── ...
|
|
188
|
+
└── 4k/
|
|
189
|
+
└── ...
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Step 3: Create theme.txt
|
|
193
|
+
```txt
|
|
194
|
+
title-text: ""
|
|
195
|
+
desktop-image: "background.png"
|
|
196
|
+
desktop-color: "#000000"
|
|
197
|
+
terminal-font: "Terminus Regular 14"
|
|
198
|
+
terminal-box: "terminal_box_*.png"
|
|
199
|
+
|
|
200
|
+
+ boot_menu {
|
|
201
|
+
left = 30%
|
|
202
|
+
top = 30%
|
|
203
|
+
width = 45%
|
|
204
|
+
height = 60%
|
|
205
|
+
item_font = "Unifont Regular 16"
|
|
206
|
+
item_color = "#cccccc"
|
|
207
|
+
selected_item_color = "#ffffff"
|
|
208
|
+
selected_item_pixmap_style = "select_*.png"
|
|
209
|
+
}
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Step 4: Add metadata.json (optional)
|
|
213
|
+
```json
|
|
214
|
+
{
|
|
215
|
+
"name": "Your Theme Name",
|
|
216
|
+
"author": "Your Name",
|
|
217
|
+
"description": "A beautiful GRUB theme",
|
|
218
|
+
"version": "1.0.0",
|
|
219
|
+
"license": "MIT"
|
|
220
|
+
}
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Step 5: Submit
|
|
224
|
+
1. Fork the repository
|
|
225
|
+
2. Add your theme to the `themes/` folder
|
|
226
|
+
3. Create a pull request
|
|
227
|
+
|
|
228
|
+
Your theme will automatically appear in the menu!
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## 🔧 CLI Commands
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
# Interactive menu
|
|
236
|
+
python -m projectgrub start
|
|
237
|
+
|
|
238
|
+
# List all themes
|
|
239
|
+
python -m projectgrub list
|
|
240
|
+
|
|
241
|
+
# Show theme info
|
|
242
|
+
python -m projectgrub info themename
|
|
243
|
+
|
|
244
|
+
# Run system checks
|
|
245
|
+
python -m projectgrub check
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## 📋 Requirements
|
|
251
|
+
|
|
252
|
+
- Linux operating system
|
|
253
|
+
- Python 3.10 or higher
|
|
254
|
+
- GRUB bootloader installed
|
|
255
|
+
- Root/sudo privileges
|
|
256
|
+
- At least 50MB free space in /boot
|
|
257
|
+
|
|
258
|
+
### Supported Distributions
|
|
259
|
+
- Ubuntu / Debian
|
|
260
|
+
- Arch / Manjaro
|
|
261
|
+
- Fedora / RHEL
|
|
262
|
+
- openSUSE
|
|
263
|
+
- And other Linux distributions with GRUB
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
## 🐛 Troubleshooting
|
|
268
|
+
|
|
269
|
+
### "Root privileges required"
|
|
270
|
+
Run with sudo:
|
|
271
|
+
```bash
|
|
272
|
+
sudo python -m projectgrub start
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### "GRUB not found"
|
|
276
|
+
Make sure GRUB is installed and /boot is mounted.
|
|
277
|
+
|
|
278
|
+
### "Theme not working after install"
|
|
279
|
+
1. Reboot your system
|
|
280
|
+
2. Check /etc/default/grub for GRUB_THEME line
|
|
281
|
+
3. Run `sudo grub-mkconfig` manually
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## 📄 License
|
|
286
|
+
|
|
287
|
+
MIT License - See [LICENSE](license) file for details.
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## 🙏 Credits
|
|
292
|
+
|
|
293
|
+
- GRUB Theme: [Vimix](https://github.com/vinceliuice/vimix-grub-themes)
|
|
294
|
+
- Dark Matter & DedSec: [VandalByte](https://gitlab.com/VandalByte)
|
|
295
|
+
- Xenlism: [Xenlism](https://github.com/xenlism)
|
|
296
|
+
- Tela: [Tela](https://github.com/vinceliuice/Tela-grub-theme)
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
© 2026 [Zenith Open Source Projects](https://zenithopensourceprojects.vercel.app/). All Rights Reserved.
|
|
301
|
+
Zenith is an Open Source Project Idea by @roshhellwett
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Zenith Open Source Projects
|
|
4
|
+
Developed by: roshhellwett (roshellwett@icloud.com)
|
|
5
|
+
|
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
in the Software without restriction, including without limitation the rights
|
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
furnished to do so, subject to the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
+
SOFTWARE.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "projectgrub"
|
|
7
|
+
version = "1.0.0"
|
|
8
|
+
description = "Interactive GRUB theme manager for Linux - Browse, install, and manage GRUB boot themes"
|
|
9
|
+
readme = "readme.md"
|
|
10
|
+
license = "MIT"
|
|
11
|
+
requires-python = ">=3.10"
|
|
12
|
+
authors = [
|
|
13
|
+
{name = "Roshan Kr Singh", email = "roshellwett@icloud.com"}
|
|
14
|
+
]
|
|
15
|
+
maintainers = [
|
|
16
|
+
{name = "Roshan Kr Singh", email = "roshellwett@icloud.com"}
|
|
17
|
+
]
|
|
18
|
+
keywords = ["grub", "theme", "boot", "linux", "bootloader", "customization"]
|
|
19
|
+
classifiers = [
|
|
20
|
+
"Development Status :: 5 - Production/Stable",
|
|
21
|
+
"Environment :: Console",
|
|
22
|
+
"Intended Audience :: End Users/Desktop",
|
|
23
|
+
"Operating System :: POSIX :: Linux",
|
|
24
|
+
"Programming Language :: Python :: 3",
|
|
25
|
+
"Programming Language :: Python :: 3.10",
|
|
26
|
+
"Programming Language :: Python :: 3.11",
|
|
27
|
+
"Programming Language :: Python :: 3.12",
|
|
28
|
+
]
|
|
29
|
+
dependencies = [
|
|
30
|
+
"typer[all]>=0.12.0",
|
|
31
|
+
"rich>=13.0.0",
|
|
32
|
+
]
|
|
33
|
+
|
|
34
|
+
[project.optional-dependencies]
|
|
35
|
+
dev = [
|
|
36
|
+
"pytest>=7.0.0",
|
|
37
|
+
"pytest-cov>=4.0.0",
|
|
38
|
+
"ruff>=0.1.0",
|
|
39
|
+
]
|
|
40
|
+
|
|
41
|
+
[project.scripts]
|
|
42
|
+
projectgrub = "projectgrub.cli:app"
|
|
43
|
+
|
|
44
|
+
[project.urls]
|
|
45
|
+
Homepage = "https://github.com/zenithopensourceprojects/projectgrub"
|
|
46
|
+
Repository = "https://github.com/zenithopensourceprojects/projectgrub"
|
|
47
|
+
Documentation = "https://github.com/zenithopensourceprojects/projectgrub#readme"
|
|
48
|
+
Issues = "https://github.com/zenithopensourceprojects/projectgrub/issues"
|
|
49
|
+
Funding = "https://zenithopensourceprojects.vercel.app/"
|
|
50
|
+
|
|
51
|
+
[tool.setuptools.packages.find]
|
|
52
|
+
where = ["src"]
|
|
53
|
+
include = ["projectgrub*"]
|
|
54
|
+
|
|
55
|
+
[tool.setuptools.package-data]
|
|
56
|
+
projectgrub = ["py.typed"]
|
|
57
|
+
|
|
58
|
+
[tool.ruff]
|
|
59
|
+
line-length = 100
|
|
60
|
+
target-version = "py310"
|
|
61
|
+
|
|
62
|
+
[tool.ruff.lint]
|
|
63
|
+
select = ["E", "F", "W", "I", "N", "UP", "B", "C4"]
|
|
64
|
+
ignore = ["E501"]
|
|
65
|
+
|
|
66
|
+
[tool.pytest.ini_options]
|
|
67
|
+
testpaths = ["tests"]
|
|
68
|
+
python_files = ["test_*.py"]
|
|
69
|
+
python_functions = ["test_*"]
|
|
70
|
+
addopts = "-v --tb=short"
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
<!-- PROJECT GRUB README -->
|
|
2
|
+
|
|
3
|
+
<h1 align="center">PROJECT GRUB - GRUB Theme Manager</h1>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<img src="https://img.shields.io/badge/Platform-Linux-2ea44f?style=for-the-badge&logo=linux&logoColor=white" />
|
|
7
|
+
<img src="https://img.shields.io/badge/License-MIT-blue?style=for-the-badge" />
|
|
8
|
+
<img src="https://img.shields.io/badge/Python-3.10+-3776AB?style=for-the-badge&logo=python&logoColor=white" />
|
|
9
|
+
<img src="https://img.shields.io/badge/Status-Stable-success?style=for-the-badge" />
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<p align="center">
|
|
13
|
+
<strong>Developer:</strong> roshhellwett<br/>
|
|
14
|
+
<strong>Copyright:</strong> Zenith Open Source Projects
|
|
15
|
+
</p>
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
<p align="center">
|
|
20
|
+
<em>The ultimate tool to customize your Linux boot loader.</em>
|
|
21
|
+
</p>
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 🌟 Overview
|
|
26
|
+
|
|
27
|
+
**ProjectGRUB** is an interactive CLI tool that helps you browse, install, and manage GRUB boot themes on Linux. Instead of manually copying files and editing configurations, just run the menu and pick your theme.
|
|
28
|
+
|
|
29
|
+
## ✨ Features
|
|
30
|
+
|
|
31
|
+
- 🎨 **Browse Themes** - View all available GRUB themes with details
|
|
32
|
+
- 🚀 **Quick Install** - Install a theme in 3 clicks
|
|
33
|
+
- ⚙️ **Advanced Install** - Choose resolution (1080p, 2K, 4K) and options
|
|
34
|
+
- 🔍 **Theme Validation** - Verify themes before installing
|
|
35
|
+
- 🔧 **System Diagnostics** - Check GRUB health and compatibility
|
|
36
|
+
- 📦 **Auto-Discovery** - New themes appear automatically in the menu
|
|
37
|
+
- 🛡️ **Safe Operations** - Backup before changes, rollback on failure
|
|
38
|
+
- 💾 **Pre-flight Checks** - Validates system readiness before any operation
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 🚀 Quick Start
|
|
43
|
+
|
|
44
|
+
### Step 1: Install Python
|
|
45
|
+
If you don't have Python, download it here: https://www.python.org/downloads/
|
|
46
|
+
|
|
47
|
+
### Step 2: Install ProjectGRUB
|
|
48
|
+
```bash
|
|
49
|
+
pip install projectgrub
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Step 3: Run the Interactive Menu
|
|
53
|
+
```bash
|
|
54
|
+
python -m projectgrub start
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
That's it! The tool will guide you through everything.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## 📋 Installation Options
|
|
62
|
+
|
|
63
|
+
### Option 1: Install via pip (Recommended)
|
|
64
|
+
```bash
|
|
65
|
+
pip install projectgrub
|
|
66
|
+
projectgrub
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Option 2: Run from local clone
|
|
70
|
+
```bash
|
|
71
|
+
git clone https://github.com/zenithopensourceprojects/projectgrub.git
|
|
72
|
+
cd projectgrub
|
|
73
|
+
pip install -e .
|
|
74
|
+
projectgrub
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Option 3: Run without installing
|
|
78
|
+
```bash
|
|
79
|
+
git clone https://github.com/zenithopensourceprojects/projectgrub.git
|
|
80
|
+
cd projectgrub
|
|
81
|
+
pip install -e .
|
|
82
|
+
python -m projectgrub start
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 🎯 Menu Options
|
|
88
|
+
|
|
89
|
+
| Option | Description |
|
|
90
|
+
|--------|-------------|
|
|
91
|
+
| **1. Browse Themes** | View all available GRUB themes with previews |
|
|
92
|
+
| **2. Quick Install** | Install a theme with recommended settings |
|
|
93
|
+
| **3. Advanced Install** | Choose resolution (1080p/2K/4K) and custom options |
|
|
94
|
+
| **4. Preview Theme** | View detailed theme information |
|
|
95
|
+
| **5. Uninstall Theme** | Remove current GRUB theme |
|
|
96
|
+
| **6. System Diagnostics** | Check GRUB health and compatibility |
|
|
97
|
+
| **7. Theme Validation** | Validate a theme before install |
|
|
98
|
+
| **8. Contribute Guide** | Learn how to add new themes |
|
|
99
|
+
| **9. Refresh Themes** | Reload themes from disk |
|
|
100
|
+
| **10. Help** | Documentation and tips |
|
|
101
|
+
| **0. Exit** | Exit the application |
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## 🛡️ Safety Features
|
|
106
|
+
|
|
107
|
+
### Pre-flight Checks
|
|
108
|
+
Before any operation, ProjectGRUB validates:
|
|
109
|
+
- ✅ Running on Linux
|
|
110
|
+
- ✅ Root privileges available
|
|
111
|
+
- ✅ GRUB installed
|
|
112
|
+
- ✅ GRUB directory accessible
|
|
113
|
+
- ✅ Write permissions available
|
|
114
|
+
- ✅ Sufficient disk space
|
|
115
|
+
|
|
116
|
+
### Rollback on Failure
|
|
117
|
+
If installation fails:
|
|
118
|
+
1. GRUB config is restored from backup
|
|
119
|
+
2. Partially copied files are removed
|
|
120
|
+
3. User receives clear error message with suggestions
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## 🎨 Available Themes
|
|
125
|
+
|
|
126
|
+
The tool automatically discovers themes from the `themes/` folder. Current themes include:
|
|
127
|
+
|
|
128
|
+
| Theme | Author | Description |
|
|
129
|
+
|-------|--------|-------------|
|
|
130
|
+
| Vimix | Vimix | Clean, modern flat-design |
|
|
131
|
+
| Xenlism | Xenlism | Minimal and elegant |
|
|
132
|
+
| Tela | Tela | Minimalist aesthetics |
|
|
133
|
+
| Dark Matter | VandalByte | Dark and sleek |
|
|
134
|
+
| DedSec | VandalByte | Cyberpunk hacker style |
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## 🤝 Contributing Themes
|
|
139
|
+
|
|
140
|
+
Want to add your own theme? Easy!
|
|
141
|
+
|
|
142
|
+
### Step 1: Create Theme Folder
|
|
143
|
+
```
|
|
144
|
+
themes/your-theme-name/
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Step 2: Add Resolution Subfolders
|
|
148
|
+
```
|
|
149
|
+
themes/your-theme-name/
|
|
150
|
+
├── 1080p/
|
|
151
|
+
│ ├── theme.txt
|
|
152
|
+
│ ├── background.png
|
|
153
|
+
│ └── ... assets
|
|
154
|
+
├── 2k/
|
|
155
|
+
│ └── ...
|
|
156
|
+
└── 4k/
|
|
157
|
+
└── ...
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Step 3: Create theme.txt
|
|
161
|
+
```txt
|
|
162
|
+
title-text: ""
|
|
163
|
+
desktop-image: "background.png"
|
|
164
|
+
desktop-color: "#000000"
|
|
165
|
+
terminal-font: "Terminus Regular 14"
|
|
166
|
+
terminal-box: "terminal_box_*.png"
|
|
167
|
+
|
|
168
|
+
+ boot_menu {
|
|
169
|
+
left = 30%
|
|
170
|
+
top = 30%
|
|
171
|
+
width = 45%
|
|
172
|
+
height = 60%
|
|
173
|
+
item_font = "Unifont Regular 16"
|
|
174
|
+
item_color = "#cccccc"
|
|
175
|
+
selected_item_color = "#ffffff"
|
|
176
|
+
selected_item_pixmap_style = "select_*.png"
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Step 4: Add metadata.json (optional)
|
|
181
|
+
```json
|
|
182
|
+
{
|
|
183
|
+
"name": "Your Theme Name",
|
|
184
|
+
"author": "Your Name",
|
|
185
|
+
"description": "A beautiful GRUB theme",
|
|
186
|
+
"version": "1.0.0",
|
|
187
|
+
"license": "MIT"
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Step 5: Submit
|
|
192
|
+
1. Fork the repository
|
|
193
|
+
2. Add your theme to the `themes/` folder
|
|
194
|
+
3. Create a pull request
|
|
195
|
+
|
|
196
|
+
Your theme will automatically appear in the menu!
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## 🔧 CLI Commands
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
# Interactive menu
|
|
204
|
+
python -m projectgrub start
|
|
205
|
+
|
|
206
|
+
# List all themes
|
|
207
|
+
python -m projectgrub list
|
|
208
|
+
|
|
209
|
+
# Show theme info
|
|
210
|
+
python -m projectgrub info themename
|
|
211
|
+
|
|
212
|
+
# Run system checks
|
|
213
|
+
python -m projectgrub check
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## 📋 Requirements
|
|
219
|
+
|
|
220
|
+
- Linux operating system
|
|
221
|
+
- Python 3.10 or higher
|
|
222
|
+
- GRUB bootloader installed
|
|
223
|
+
- Root/sudo privileges
|
|
224
|
+
- At least 50MB free space in /boot
|
|
225
|
+
|
|
226
|
+
### Supported Distributions
|
|
227
|
+
- Ubuntu / Debian
|
|
228
|
+
- Arch / Manjaro
|
|
229
|
+
- Fedora / RHEL
|
|
230
|
+
- openSUSE
|
|
231
|
+
- And other Linux distributions with GRUB
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## 🐛 Troubleshooting
|
|
236
|
+
|
|
237
|
+
### "Root privileges required"
|
|
238
|
+
Run with sudo:
|
|
239
|
+
```bash
|
|
240
|
+
sudo python -m projectgrub start
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### "GRUB not found"
|
|
244
|
+
Make sure GRUB is installed and /boot is mounted.
|
|
245
|
+
|
|
246
|
+
### "Theme not working after install"
|
|
247
|
+
1. Reboot your system
|
|
248
|
+
2. Check /etc/default/grub for GRUB_THEME line
|
|
249
|
+
3. Run `sudo grub-mkconfig` manually
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
## 📄 License
|
|
254
|
+
|
|
255
|
+
MIT License - See [LICENSE](license) file for details.
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## 🙏 Credits
|
|
260
|
+
|
|
261
|
+
- GRUB Theme: [Vimix](https://github.com/vinceliuice/vimix-grub-themes)
|
|
262
|
+
- Dark Matter & DedSec: [VandalByte](https://gitlab.com/VandalByte)
|
|
263
|
+
- Xenlism: [Xenlism](https://github.com/xenlism)
|
|
264
|
+
- Tela: [Tela](https://github.com/vinceliuice/Tela-grub-theme)
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
© 2026 [Zenith Open Source Projects](https://zenithopensourceprojects.vercel.app/). All Rights Reserved.
|
|
269
|
+
Zenith is an Open Source Project Idea by @roshhellwett
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"""ProjectGRUB - Interactive GRUB theme manager for Linux."""
|
|
2
|
+
|
|
3
|
+
import logging
|
|
4
|
+
|
|
5
|
+
__version__ = "1.0.0"
|
|
6
|
+
__author__ = "roshellwett"
|
|
7
|
+
__email__ = "roshellwett@icloud.com"
|
|
8
|
+
__copyright__ = "Zenith Open Source Projects"
|
|
9
|
+
|
|
10
|
+
from projectgrub.exceptions import (
|
|
11
|
+
GRUBConfigError,
|
|
12
|
+
InstallationError,
|
|
13
|
+
PermissionError,
|
|
14
|
+
ProjectGRUBError,
|
|
15
|
+
RollbackError,
|
|
16
|
+
SystemCheckError,
|
|
17
|
+
ThemeValidationError,
|
|
18
|
+
)
|
|
19
|
+
from projectgrub.grub_installer import GRUBInstaller, InstallationResult
|
|
20
|
+
from projectgrub.theme_manager import Theme, ThemeManager, ThemeResolution
|
|
21
|
+
|
|
22
|
+
logger = logging.getLogger(__name__)
|
|
23
|
+
logger.addHandler(logging.NullHandler())
|
|
24
|
+
|
|
25
|
+
__all__ = [
|
|
26
|
+
"__version__",
|
|
27
|
+
"__author__",
|
|
28
|
+
"__email__",
|
|
29
|
+
"ProjectGRUBError",
|
|
30
|
+
"SystemCheckError",
|
|
31
|
+
"ThemeValidationError",
|
|
32
|
+
"PermissionError",
|
|
33
|
+
"GRUBConfigError",
|
|
34
|
+
"InstallationError",
|
|
35
|
+
"RollbackError",
|
|
36
|
+
"ThemeManager",
|
|
37
|
+
"Theme",
|
|
38
|
+
"ThemeResolution",
|
|
39
|
+
"GRUBInstaller",
|
|
40
|
+
"InstallationResult",
|
|
41
|
+
]
|