Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
215 changes: 186 additions & 29 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,12 +67,51 @@ If you love that vibe — welcome home.

---

## 📋 Prerequisites

**draphyOS requires Fedora Linux.** Install Fedora first, then run the draphyOS installer.

### Recommended: Fedora i3 Spin (Best Experience)

The [Fedora i3 Spin](https://fedoraproject.org/spins/i3/) is the ideal base — minimal, lightweight, and comes with i3 pre-configured.

1. **Download** → [Fedora i3 Spin](https://fedoraproject.org/spins/i3/) (ISO ~1.8GB)
2. **Create bootable USB** → Use [Fedora Media Writer](https://fedoraproject.org/workstation/download) or [Ventoy](https://ventoy.net/)
3. **Install Fedora** → Boot from USB, follow the installer
4. **Run draphyOS** → After first login, run the install command below

### Alternative: Other Fedora Variants

draphyOS also works on other Fedora editions. The installer will set up i3 alongside your existing desktop:

| Variant | Download | Notes |
|---------|----------|-------|
| **Fedora XFCE Spin** | [Download](https://fedoraproject.org/spins/xfce/) | ⭐ Recommended fallback — lightweight, stable |
| **Fedora Workstation** | [Download](https://fedoraproject.org/workstation/) | GNOME desktop, most popular |
| **Fedora KDE Spin** | [Download](https://fedoraproject.org/spins/kde/) | KDE Plasma desktop |
| **Fedora Server** | [Download](https://fedoraproject.org/server/) | Minimal, headless (add GUI manually) |

> **💡 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).

### System Requirements

| Requirement | Minimum | Recommended |
|-------------|---------|-------------|
| **RAM** | 1 GB | 2 GB+ |
| **Storage** | 10 GB | 20 GB+ |
| **CPU** | Any x86_64 | — |
| **GPU** | Any (Intel/AMD/NVIDIA) | — |

---

## 🚀 Quick Start

> **⚠️ Make sure you have [Fedora installed](#-prerequisites) before proceeding.**

### One-Command Install

```bash
curl -fsSL https://raw.githubusercontent.com/draphy/draphyOS/latest/install.sh | bash
curl -fsSL https://raw.githubusercontent.com/draphy/draphyOS/main/install.sh | bash
```

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

</details>

<details>
<summary><strong>draphyOS Additions</strong></summary>

| Package | Description |
| ---------------------- | ----------------------------------- |
| `polybar` | Status bar (replaces i3status) |
| `picom` | Compositor (transparency, shadows) |
| `fish` | Modern shell with auto-suggestions |
| `feh` | Image viewer, wallpaper setter |
| `flameshot` | Screenshot tool |
| `playerctl` | Media player control |
| `xss-lock` | Automatic screen locker |
| `blueman` | Bluetooth manager |
| `redshift` | Night light / blue light filter |
| `geoclue2` | Location services (for redshift) |
| `xfce-polkit` | Authentication dialogs |
| `gnome-keyring` | Password/secret storage |
| `xfce4-settings` | Settings manager |
| `yad` | Calendar popup dialogs |
| `qt5ct` | Qt5 theme configuration |
| `ImageMagick` | Image processing (lock screen blur) |
| `xdotool` | X11 automation |
| `xclip` | Clipboard manager |
| `fira-code-fonts` | Programming font |
| `google-noto-sans-mono-vf-fonts` | Fallback mono font |
| `fontawesome-6-free-fonts` | Icon font (solid) |
| `fontawesome-6-brands-fonts` | Icon font (brands) |
| `mint-y-icons` | Icon theme |
| `adwaita-cursor-theme` | Cursor theme |
| Package | Description |
| -------------------------------- | ----------------------------------- |
| `polybar` | Status bar (replaces i3status) |
| `picom` | Compositor (transparency, shadows) |
| `fish` | Modern shell with auto-suggestions |
| `feh` | Wallpaper setter, image viewer |
| `flameshot` | Screenshot tool |
| `playerctl` | Media player control |
| `xss-lock` | Automatic screen locker |
| `blueman` | Bluetooth manager |
| `redshift` | Night light / blue light filter |
| `geoclue2` | Location services (for redshift) |
| `xfce-polkit` | Authentication dialogs |
| `gnome-keyring` | Password/secret storage |
| `xfce4-settings` | Settings manager |
| `yad` | Calendar popup (click date in bar) |
| `qt5ct` | Qt5 theme configuration |
| `ImageMagick` | Image processing (lock screen blur) |
| `xdotool` | X11 automation (cheatsheet execute) |
| `xclip` | Clipboard (cheatsheet copy) |
| `fira-code-fonts` | Programming font with ligatures |
| `google-noto-sans-mono-vf-fonts` | Fallback mono font |
| `fontawesome-6-free-fonts` | Icon font (polybar icons) |
| `fontawesome-6-brands-fonts` | Icon font (brand logos) |
| `mint-y-icons` | Icon theme |
| `adwaita-cursor-theme` | Cursor theme |

</details>

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

---

## 💡 Productivity Tips

draphyOS includes several tools to boost your productivity. Here's how to use them:

<details>
<summary><strong>🎵 Media Controls (playerctl)</strong></summary>

Control any media player (Spotify, Firefox, VLC) with keyboard:
- `Super + >` — Next track
- `Super + <` — Previous track
- `Super + .` — Play/Pause

Works across all MPRIS-compatible players.

</details>

<details>
<summary><strong>📸 Screenshots (flameshot)</strong></summary>

- `Print` — Select area and capture
- After capture: annotate, blur, add arrows, copy/save

Flameshot opens with editing tools. Draw, highlight, then save or copy to clipboard.

</details>

<details>
<summary><strong>📋 Cheatsheet (Super+F1)</strong></summary>

Interactive cheatsheet with rofi:
- **i3 keybindings**: Press Enter to execute the selected keybinding
- **Other cheatsheets** (vim, git, etc.): Press Enter to copy command to clipboard

Add your own cheatsheets: create `~/.config/i3/scripts/cheatsheets/myapp.txt`

</details>

<details>
<summary><strong>📅 Calendar Popup</strong></summary>

Click the **date** in polybar to open a calendar popup (yad).

</details>

<details>
<summary><strong>🔵 Bluetooth (blueman)</strong></summary>

- Click the Bluetooth icon in system tray
- Or run `blueman-manager` to pair/manage devices

</details>

<details>
<summary><strong>🌙 Night Light (redshift)</strong></summary>

Automatically adjusts screen warmth based on time of day:
- Uses your location (via geoclue2) to calculate sunrise/sunset
- Reduces blue light at night for better sleep

Config: `~/.config/redshift/redshift.conf`

</details>

<details>
<summary><strong>🖥️ Multi-Monitor Setup (arandr)</strong></summary>

- Run `arandr` to visually arrange displays
- Drag monitors to position, set resolution
- Save layout for later use

</details>

<details>
<summary><strong>🔋 Power Management (powertop)</strong></summary>

- Run `sudo powertop` to analyze power usage
- Use `--auto-tune` for automatic power optimization
- Great for laptops to extend battery life

</details>

<details>
<summary><strong>🖼️ Wallpaper (feh)</strong></summary>

Change wallpaper:
```bash
feh --bg-fill /path/to/image.jpg
```

The wallpaper is set automatically on login via `~/.xprofile`.

</details>

<details>
<summary><strong>🔐 Password Storage (gnome-keyring)</strong></summary>

Automatically stores:
- Browser passwords (Firefox, Chrome)
- SSH keys (unlocked on login)
- Application secrets

No setup needed — works automatically with PAM.

</details>

<details>
<summary><strong>⌨️ Terminal Multiplexer (tmux)</strong></summary>

Split terminal into panes/windows:
- `tmux` — Start new session
- `Ctrl+b %` — Split vertically
- `Ctrl+b "` — Split horizontally
- `Ctrl+b arrow` — Navigate panes

Great for remote work — sessions persist after disconnect.

</details>

---

## 🗑️ Uninstall

```bash
Expand Down
4 changes: 2 additions & 2 deletions configs/polybar/config.ini
Original file line number Diff line number Diff line change
Expand Up @@ -170,9 +170,9 @@ interface = eth0
interval = 3.0

; Connected state - shows wired icon and label
format-connected-prefix = " "
format-connected-prefix = " "
format-connected-prefix-foreground = ${colors.primary}
label-connected = Wired ↓%downspeed% ↑%upspeed%
label-connected = ↓%downspeed% ↑%upspeed%
label-connected-foreground = ${colors.foreground}

; Disconnected state - hidden (empty format shows nothing)
Expand Down
26 changes: 26 additions & 0 deletions install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,23 @@ setup_repo() {
print_success "draphyOS files ready"
}

# Save current package state (for clean uninstall later)
save_package_state() {
print_step "Saving current package state..."
local pkg_state_file="$HOME/.draphyOS-packages-before"

# Save list of currently installed packages (just package names, no versions)
dnf list installed 2>/dev/null | tail -n +2 | awk '{print $1}' | cut -d'.' -f1 | sort -u > "$pkg_state_file"

if [ -f "$pkg_state_file" ]; then
local count
count=$(wc -l < "$pkg_state_file")
print_success "Package state saved ($count packages)"
else
print_warning "Could not save package state"
fi
}

# Install packages
install_packages() {
print_step "Installing required packages..."
Expand Down Expand Up @@ -638,6 +655,14 @@ configure_vm() {
print_step "Applying VM-optimized picom settings..."

if [ -f "$picom_config" ]; then
# If it's a symlink, copy to real file for editing (don't modify repo!)
if [ -L "$picom_config" ]; then
local target
target=$(readlink -f "$picom_config")
rm -f "$picom_config"
cp "$target" "$picom_config"
fi

# Change backend from glx to xrender
sed -i 's/^backend = "glx";/backend = "xrender";/' "$picom_config" 2>/dev/null || true

Expand Down Expand Up @@ -677,6 +702,7 @@ main() {

# Installation steps
setup_repo
save_package_state # Save state BEFORE installing, for clean uninstall
install_packages
backup_configs
install_configs
Expand Down
Loading