Skip to content

Commit 9d96ae3

Browse files
committed
fix: [DRO-64] Uninstall breaks OS
1 parent 131307e commit 9d96ae3

4 files changed

Lines changed: 359 additions & 66 deletions

File tree

README.md

Lines changed: 186 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,51 @@ If you love that vibe — welcome home.
6767

6868
---
6969

70+
## 📋 Prerequisites
71+
72+
**draphyOS requires Fedora Linux.** Install Fedora first, then run the draphyOS installer.
73+
74+
### Recommended: Fedora i3 Spin (Best Experience)
75+
76+
The [Fedora i3 Spin](https://fedoraproject.org/spins/i3/) is the ideal base — minimal, lightweight, and comes with i3 pre-configured.
77+
78+
1. **Download**[Fedora i3 Spin](https://fedoraproject.org/spins/i3/) (ISO ~1.8GB)
79+
2. **Create bootable USB** → Use [Fedora Media Writer](https://fedoraproject.org/workstation/download) or [Ventoy](https://ventoy.net/)
80+
3. **Install Fedora** → Boot from USB, follow the installer
81+
4. **Run draphyOS** → After first login, run the install command below
82+
83+
### Alternative: Other Fedora Variants
84+
85+
draphyOS also works on other Fedora editions. The installer will set up i3 alongside your existing desktop:
86+
87+
| Variant | Download | Notes |
88+
|---------|----------|-------|
89+
| **Fedora XFCE Spin** | [Download](https://fedoraproject.org/spins/xfce/) | ⭐ Recommended fallback — lightweight, stable |
90+
| **Fedora Workstation** | [Download](https://fedoraproject.org/workstation/) | GNOME desktop, most popular |
91+
| **Fedora KDE Spin** | [Download](https://fedoraproject.org/spins/kde/) | KDE Plasma desktop |
92+
| **Fedora Server** | [Download](https://fedoraproject.org/server/) | Minimal, headless (add GUI manually) |
93+
94+
> **💡 Tip:** If you're new to tiling window managers, **Fedora XFCE Spin** is a great choice. XFCE provides a familiar traditional desktop as a fallback if i3 feels overwhelming. You can switch between i3 and XFCE at the login screen (click the gear icon).
95+
96+
### System Requirements
97+
98+
| Requirement | Minimum | Recommended |
99+
|-------------|---------|-------------|
100+
| **RAM** | 1 GB | 2 GB+ |
101+
| **Storage** | 10 GB | 20 GB+ |
102+
| **CPU** | Any x86_64 ||
103+
| **GPU** | Any (Intel/AMD/NVIDIA) ||
104+
105+
---
106+
70107
## 🚀 Quick Start
71108

109+
> **⚠️ Make sure you have [Fedora installed](#-prerequisites) before proceeding.**
110+
72111
### One-Command Install
73112

74113
```bash
75-
curl -fsSL https://raw.githubusercontent.com/draphy/draphyOS/latest/install.sh | bash
114+
curl -fsSL https://raw.githubusercontent.com/draphy/draphyOS/main/install.sh | bash
76115
```
77116

78117
Or clone and run:
@@ -203,41 +242,39 @@ Every tool in draphyOS was chosen with a purpose. Here's why:
203242
| `powertop` | Power management |
204243
| `arandr` | Display configuration |
205244
| `tmux` | Terminal multiplexer |
206-
| `xarchiver` | Archive manager |
207-
| `nitrogen` | Wallpaper manager |
208245
| `lxappearance` | GTK theme switcher |
209246

210247
</details>
211248

212249
<details>
213250
<summary><strong>draphyOS Additions</strong></summary>
214251

215-
| Package | Description |
216-
| ---------------------- | ----------------------------------- |
217-
| `polybar` | Status bar (replaces i3status) |
218-
| `picom` | Compositor (transparency, shadows) |
219-
| `fish` | Modern shell with auto-suggestions |
220-
| `feh` | Image viewer, wallpaper setter |
221-
| `flameshot` | Screenshot tool |
222-
| `playerctl` | Media player control |
223-
| `xss-lock` | Automatic screen locker |
224-
| `blueman` | Bluetooth manager |
225-
| `redshift` | Night light / blue light filter |
226-
| `geoclue2` | Location services (for redshift) |
227-
| `xfce-polkit` | Authentication dialogs |
228-
| `gnome-keyring` | Password/secret storage |
229-
| `xfce4-settings` | Settings manager |
230-
| `yad` | Calendar popup dialogs |
231-
| `qt5ct` | Qt5 theme configuration |
232-
| `ImageMagick` | Image processing (lock screen blur) |
233-
| `xdotool` | X11 automation |
234-
| `xclip` | Clipboard manager |
235-
| `fira-code-fonts` | Programming font |
236-
| `google-noto-sans-mono-vf-fonts` | Fallback mono font |
237-
| `fontawesome-6-free-fonts` | Icon font (solid) |
238-
| `fontawesome-6-brands-fonts` | Icon font (brands) |
239-
| `mint-y-icons` | Icon theme |
240-
| `adwaita-cursor-theme` | Cursor theme |
252+
| Package | Description |
253+
| -------------------------------- | ----------------------------------- |
254+
| `polybar` | Status bar (replaces i3status) |
255+
| `picom` | Compositor (transparency, shadows) |
256+
| `fish` | Modern shell with auto-suggestions |
257+
| `feh` | Wallpaper setter, image viewer |
258+
| `flameshot` | Screenshot tool |
259+
| `playerctl` | Media player control |
260+
| `xss-lock` | Automatic screen locker |
261+
| `blueman` | Bluetooth manager |
262+
| `redshift` | Night light / blue light filter |
263+
| `geoclue2` | Location services (for redshift) |
264+
| `xfce-polkit` | Authentication dialogs |
265+
| `gnome-keyring` | Password/secret storage |
266+
| `xfce4-settings` | Settings manager |
267+
| `yad` | Calendar popup (click date in bar) |
268+
| `qt5ct` | Qt5 theme configuration |
269+
| `ImageMagick` | Image processing (lock screen blur) |
270+
| `xdotool` | X11 automation (cheatsheet execute) |
271+
| `xclip` | Clipboard (cheatsheet copy) |
272+
| `fira-code-fonts` | Programming font with ligatures |
273+
| `google-noto-sans-mono-vf-fonts` | Fallback mono font |
274+
| `fontawesome-6-free-fonts` | Icon font (polybar icons) |
275+
| `fontawesome-6-brands-fonts` | Icon font (brand logos) |
276+
| `mint-y-icons` | Icon theme |
277+
| `adwaita-cursor-theme` | Cursor theme |
241278

242279
</details>
243280

@@ -259,6 +296,126 @@ Every tool in draphyOS was chosen with a purpose. Here's why:
259296

260297
---
261298

299+
## 💡 Productivity Tips
300+
301+
draphyOS includes several tools to boost your productivity. Here's how to use them:
302+
303+
<details>
304+
<summary><strong>🎵 Media Controls (playerctl)</strong></summary>
305+
306+
Control any media player (Spotify, Firefox, VLC) with keyboard:
307+
- `Super + >` — Next track
308+
- `Super + <` — Previous track
309+
- `Super + .` — Play/Pause
310+
311+
Works across all MPRIS-compatible players.
312+
313+
</details>
314+
315+
<details>
316+
<summary><strong>📸 Screenshots (flameshot)</strong></summary>
317+
318+
- `Print` — Select area and capture
319+
- After capture: annotate, blur, add arrows, copy/save
320+
321+
Flameshot opens with editing tools. Draw, highlight, then save or copy to clipboard.
322+
323+
</details>
324+
325+
<details>
326+
<summary><strong>📋 Cheatsheet (Super+F1)</strong></summary>
327+
328+
Interactive cheatsheet with rofi:
329+
- **i3 keybindings**: Press Enter to execute the selected keybinding
330+
- **Other cheatsheets** (vim, git, etc.): Press Enter to copy command to clipboard
331+
332+
Add your own cheatsheets: create `~/.config/i3/scripts/cheatsheets/myapp.txt`
333+
334+
</details>
335+
336+
<details>
337+
<summary><strong>📅 Calendar Popup</strong></summary>
338+
339+
Click the **date** in polybar to open a calendar popup (yad).
340+
341+
</details>
342+
343+
<details>
344+
<summary><strong>🔵 Bluetooth (blueman)</strong></summary>
345+
346+
- Click the Bluetooth icon in system tray
347+
- Or run `blueman-manager` to pair/manage devices
348+
349+
</details>
350+
351+
<details>
352+
<summary><strong>🌙 Night Light (redshift)</strong></summary>
353+
354+
Automatically adjusts screen warmth based on time of day:
355+
- Uses your location (via geoclue2) to calculate sunrise/sunset
356+
- Reduces blue light at night for better sleep
357+
358+
Config: `~/.config/redshift/redshift.conf`
359+
360+
</details>
361+
362+
<details>
363+
<summary><strong>🖥️ Multi-Monitor Setup (arandr)</strong></summary>
364+
365+
- Run `arandr` to visually arrange displays
366+
- Drag monitors to position, set resolution
367+
- Save layout for later use
368+
369+
</details>
370+
371+
<details>
372+
<summary><strong>🔋 Power Management (powertop)</strong></summary>
373+
374+
- Run `sudo powertop` to analyze power usage
375+
- Use `--auto-tune` for automatic power optimization
376+
- Great for laptops to extend battery life
377+
378+
</details>
379+
380+
<details>
381+
<summary><strong>🖼️ Wallpaper (feh)</strong></summary>
382+
383+
Change wallpaper:
384+
```bash
385+
feh --bg-fill /path/to/image.jpg
386+
```
387+
388+
The wallpaper is set automatically on login via `~/.xprofile`.
389+
390+
</details>
391+
392+
<details>
393+
<summary><strong>🔐 Password Storage (gnome-keyring)</strong></summary>
394+
395+
Automatically stores:
396+
- Browser passwords (Firefox, Chrome)
397+
- SSH keys (unlocked on login)
398+
- Application secrets
399+
400+
No setup needed — works automatically with PAM.
401+
402+
</details>
403+
404+
<details>
405+
<summary><strong>⌨️ Terminal Multiplexer (tmux)</strong></summary>
406+
407+
Split terminal into panes/windows:
408+
- `tmux` — Start new session
409+
- `Ctrl+b %` — Split vertically
410+
- `Ctrl+b "` — Split horizontally
411+
- `Ctrl+b arrow` — Navigate panes
412+
413+
Great for remote work — sessions persist after disconnect.
414+
415+
</details>
416+
417+
---
418+
262419
## 🗑️ Uninstall
263420

264421
```bash

configs/polybar/config.ini

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,9 +170,9 @@ interface = eth0
170170
interval = 3.0
171171

172172
; Connected state - shows wired icon and label
173-
format-connected-prefix = " "
173+
format-connected-prefix = " "
174174
format-connected-prefix-foreground = ${colors.primary}
175-
label-connected = Wired ↓%downspeed% ↑%upspeed%
175+
label-connected = ↓%downspeed% ↑%upspeed%
176176
label-connected-foreground = ${colors.foreground}
177177

178178
; Disconnected state - hidden (empty format shows nothing)

install.sh

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,23 @@ setup_repo() {
206206
print_success "draphyOS files ready"
207207
}
208208

209+
# Save current package state (for clean uninstall later)
210+
save_package_state() {
211+
print_step "Saving current package state..."
212+
local pkg_state_file="$HOME/.draphyOS-packages-before"
213+
214+
# Save list of currently installed packages (just package names, no versions)
215+
dnf list installed 2>/dev/null | tail -n +2 | awk '{print $1}' | cut -d'.' -f1 | sort -u > "$pkg_state_file"
216+
217+
if [ -f "$pkg_state_file" ]; then
218+
local count
219+
count=$(wc -l < "$pkg_state_file")
220+
print_success "Package state saved ($count packages)"
221+
else
222+
print_warning "Could not save package state"
223+
fi
224+
}
225+
209226
# Install packages
210227
install_packages() {
211228
print_step "Installing required packages..."
@@ -638,6 +655,14 @@ configure_vm() {
638655
print_step "Applying VM-optimized picom settings..."
639656

640657
if [ -f "$picom_config" ]; then
658+
# If it's a symlink, copy to real file for editing (don't modify repo!)
659+
if [ -L "$picom_config" ]; then
660+
local target
661+
target=$(readlink -f "$picom_config")
662+
rm -f "$picom_config"
663+
cp "$target" "$picom_config"
664+
fi
665+
641666
# Change backend from glx to xrender
642667
sed -i 's/^backend = "glx";/backend = "xrender";/' "$picom_config" 2>/dev/null || true
643668

@@ -677,6 +702,7 @@ main() {
677702

678703
# Installation steps
679704
setup_repo
705+
save_package_state # Save state BEFORE installing, for clean uninstall
680706
install_packages
681707
backup_configs
682708
install_configs

0 commit comments

Comments
 (0)