A minimal i3 rice for Fedora
Curated configs built on official Fedora i3 Spin packages
draphyOS is an i3 rice (desktop configuration) — not an operating system, spin, or remix. It's a collection of carefully tuned dotfiles and configs that transform a fresh Fedora i3 installation into a polished, productive desktop environment.
"Choosing a main OS is like marriage to me."
When I commit to a setup, I commit fully. Here's what I look for:
| Priority | Why It Matters |
|---|---|
| Lightweight | Every MB counts. No wasted resources on things I don't use. |
| Performance | Instant response. No lag. No waiting. |
| Hardware Support | It should just work — WiFi, Bluetooth, GPU, everything. |
| Privacy | No telemetry. No tracking. My machine, my data. |
| Community | When things break, someone's been there before. |
| Customizable | I decide how my desktop looks and works. |
| Stability | Updates shouldn't break my workflow. |
| No Bloat | I hate pre-installed software I'll never use. Clean slate only. |
This is why Fedora i3 Spin + draphyOS exists:
- Fedora = stability, security, up-to-date packages, strong community
- i3 Spin = minimal base, no bloat, just what you need
- draphyOS = polished configs that respect these values
I'm a minimalist at heart. No fancy animations. No smooth transitions that waste CPU cycles. No bloated features I'll never use. Just raw performance and function over form. Less is more — every tool earns its place, or it's gone.
If you love that vibe — welcome home.
- ⌨️ Pre-configured i3 window manager with vim-style keybindings
- 📊 Clean polybar status bar (replaces i3status)
- 🚀 Beautiful rofi app launcher with dark theme
- 💻 Alacritty terminal with Mint-Y-Dark colors
- 🐟 Fish shell with auto-suggestions and zoxide integration
- 🔧 Automatic hardware detection (battery, network, display, NVIDIA GPU)
- 🔒 Lock screen with centered logo (auto-sleep after 15 min)
- 🌙 Night light (gammastep) with IP-based location auto-detection
- 📁 yazi terminal file manager with image preview
- 📋 Comprehensive keybinding cheatsheet (
Super+F1)
- 🔄 System updater (
update-draphyOS) — Interactive tool for system updates, security patches, and Fedora version upgrades - 🖼️ Wallpaper manager (
set-wallpaper) — Updates desktop, lock screen, and login screen wallpaper - ⬆️ Config updates — Update draphyOS configs from GitHub with intelligent three-way merge (preserves your customizations)
- 📦 Smart uninstall — Tracks packages installed by draphyOS for clean removal (full reset to pre-install state)
- 🔋 Battery health — Configurable charge limit with auto-detection for 10+ laptop vendors
- 🔀 Version migrations — Seamless upgrades between draphyOS versions
- 🖥️ VM mode — Optional picom optimizations for virtual machines (
--vmflag)
- 🐳 Docker — Container runtime with rootless setup (user added to docker group)
- 🟢 Node.js — fnm version manager with LTS pre-installed
- 🐘 PostgreSQL — Database server with user/database auto-created
- 🤖 Claude Code — AI coding assistant CLI
- 🎮 NVIDIA — Auto-detection, Secure Boot handling, hybrid graphics support (akmod-nvidia)
draphyOS requires Fedora Linux. Install Fedora first, then run the draphyOS installer.
The Fedora i3 Spin is the ideal base — minimal, lightweight, and comes with i3 pre-configured.
- Download → Fedora i3 Spin (ISO ~1.8GB)
- Create bootable USB → Use Fedora Media Writer or Ventoy
- Install Fedora → Boot from USB, follow the installer
- Run draphyOS → After first login, run the install command below
draphyOS also works on other Fedora editions. The installer will set up i3 alongside your existing desktop:
| Variant | Download | Notes |
|---|---|---|
| Fedora XFCE Spin | Download | ⭐ Recommended fallback — lightweight, stable |
| Fedora Workstation | Download | GNOME desktop, most popular |
| Fedora KDE Spin | Download | KDE Plasma desktop |
| Fedora Server | Download | 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).
| Requirement | Minimum | Recommended |
|---|---|---|
| RAM | 1 GB | 2 GB+ |
| Storage | 10 GB | 20 GB+ |
| CPU | Any x86_64 | — |
| GPU | Any (Intel/AMD/NVIDIA) | — |
⚠️ Make sure you have Fedora installed before proceeding.
git clone https://github.com/draphy/draphyOS ~/.draphyOS && ~/.draphyOS/install.shIf installing in a virtual machine, use the --vm flag:
git clone https://github.com/draphy/draphyOS ~/.draphyOS && ~/.draphyOS/install.sh --vm- Log out of your current session
- Select i3 from the login screen
- Press
Super + F1for keybindings cheatsheet - Docker users: Log out/in again to use Docker without sudo
The installer adds several third-party repositories:
- RPMFusion (free + nonfree) — Multimedia codecs, NVIDIA drivers
- Brave Browser — Privacy-focused browser
- VS Code — Microsoft's code editor
- Docker CE — Container runtime
- yazi COPR — Terminal file manager
NVIDIA GPU owners will be prompted to install proprietary drivers (akmod-nvidia).
draphyOS includes update-draphyOS, a safe, interactive system update tool.
update-draphyOS # Interactive menu
update-draphyOS -u # Quick system update
update-draphyOS -d # Update draphyOS configs
update-draphyOS -v # Fedora version upgrade
update-draphyOS --vm # Enable VM mode
update-draphyOS --no-vm # Disable VM mode| Option | Description |
|---|---|
| System Update | Update all packages with dnf upgrade |
| Security Only | Install only security patches |
| Check Updates | Check for available updates without installing |
| Full Maintenance | Update + clean cache + remove orphans |
| Fedora Upgrade | Upgrade to next Fedora version (e.g., F41 → F42) |
| draphyOS Update | Pull latest configs from GitHub |
When you update draphyOS configs, the updater:
- Backs up your current configs automatically
- Fetches the latest version from GitHub
- Preserves your changes using three-way merge:
- If you haven't modified a config → updates automatically
- If only upstream changed → updates automatically
- If both changed → attempts auto-merge, asks you on conflicts
- Runs migrations for version upgrades (e.g., new keybindings, config format changes)
- Installs new packages if required by the update
When a config conflict is detected, you choose:
- Keep mine — Ignore upstream changes
- Use new — Replace with upstream version
- Backup & use new — Save your version as
.backup-TIMESTAMP, use new
| Key | Action |
|---|---|
Super + Return |
Terminal (Alacritty) |
Super + d |
App Launcher (rofi) |
Super + Shift + q |
Close Window |
Super + F1 |
Cheatsheet |
Super + h/j/k/l |
Navigate (vim-style) |
Super + Shift + h/j/k/l |
Move window |
Super + 1-0 |
Switch Workspace |
Super + Shift + 1-0 |
Move to Workspace |
Super + Shift + x |
Lock Screen |
Super + Shift + f |
File Manager (Thunar) |
Super + Shift + y |
yazi (terminal file manager) |
Super + Shift + b |
Browser (Firefox) |
Super + Shift + v |
Text Editor |
Print |
Screenshot (select area) |
Super + r |
Resize mode |
Press Super + F1 for the complete cheatsheet.
Every tool in draphyOS was chosen with a purpose. Here's why:
| Component | Choice | Why? | Alternatives Considered |
|---|---|---|---|
| Window Manager | i3 | Stable, mature, excellent docs, official Fedora spin | Sway (Wayland issues), bspwm (less docs) |
| Status Bar | Polybar | Highly customizable, beautiful, active development | i3status (too basic), i3blocks (harder to configure) |
| App Launcher | Rofi | Themeable, fast, supports multiple modes | dmenu (too minimal), ulauncher (heavier) |
| Compositor | Picom | Lightweight, blur/shadows/transparency | Compton (deprecated), none (screen tearing) |
| Terminal | Alacritty | GPU-accelerated, minimal, fast, actively maintained | urxvt (declining community), st (needs compilation) |
| Shell | Fish | Lightweight, best out-of-box experience | Bash (no features), Zsh (needs plugins) |
| Notifications | Dunst | Lightweight, highly configurable, keyboard-friendly | notify-osd (less features), mako (Wayland-only) |
| Element | Choice | Why? |
|---|---|---|
| GTK Theme | Adwaita-dark | Official GNOME dark theme, best app compatibility |
| Icons | Mint-Y-Dark | Clean, modern, good coverage, dark variant |
| Cursor | Adwaita | System default, works everywhere |
| Font | Fira Code | Programming ligatures, excellent readability |
| Colors | Mint-Y-Dark palette | Consistent green accent (#9ab87c), easy on eyes |
| Omitted | Reason |
|---|---|
| Fancy animations | Waste CPU cycles. Windows appear instantly — done. |
| Smooth transitions | Eye candy that eats resources. Not here. |
| Conky | Polybar handles system info; conky is redundant |
| Oh-my-zsh/Starship | Fish doesn't need plugins to be good |
| Consideration | i3 (X11) | Sway/Hyprland (Wayland) |
|---|---|---|
| NVIDIA Support | Excellent | Problematic — requires --unsupported-gpu, screen tearing, crashes |
| Stability | Battle-tested, mature | Newer, occasional bugs |
| Compatibility | Works with all apps | Some X11 apps need XWayland |
| Fedora Official | Fedora i3 Spin exists | No official spin |
| Screen Sharing | Works everywhere | Needs pipewire setup |
| Gaming | Proven compatibility | Mixed results |
Why not GNOME/KDE?
- draphyOS is for users who want minimal resource usage and keyboard-driven workflow
- Full DEs use 600MB-2GB RAM idle; i3 uses ~10-50MB (full draphyOS setup ~300MB)
- Tiling WMs maximize screen real estate and reduce mouse dependency
Every package in draphyOS was chosen for a reason. Here's the complete list with explanations:
Fedora i3 Spin — Core (Pre-installed)
These come with Fedora i3 Spin. draphyOS builds on top of them.
| Package | What it does | Why it's here |
|---|---|---|
i3 |
Tiling window manager | The foundation — lightweight, keyboard-driven, tiling workflow |
i3lock |
Screen locker | Security — locks screen with custom draphyOS logo |
i3status |
Default status bar | Replaced by polybar, but kept for fallback |
dmenu |
Default app launcher | Replaced by rofi, but kept for fallback |
dunst |
Notification daemon | Lightweight, keyboard-friendly, highly configurable notifications |
lightdm |
Display manager | Login screen — minimal, reliable, easy to theme |
alacritty |
Terminal emulator | GPU-accelerated, fast, configurable via TOML |
NetworkManager |
Network management | WiFi/Ethernet — auto-connect, easy switching |
network-manager-applet |
Network tray icon | Quick network switching from system tray |
firefox |
Web browser | Default browser — privacy-respecting, open source |
pulseaudio-utils |
Audio tools (pactl) |
Volume control from keybindings and polybar |
pavucontrol |
Volume control GUI | Per-application volume, input/output device selection |
brightnessctl |
Brightness control | Laptop screen brightness from keybindings |
htop |
Process viewer | Quick system overview, kill processes |
mousepad |
Text editor | Simple GUI editor for quick config edits |
Thunar |
File manager | Lightweight GUI file manager (GTK-based) |
Fedora i3 Spin — Extended (Pre-installed)
Additional tools from i3 Spin that draphyOS uses or enhances.
| Package | What it does | Why it's here |
|---|---|---|
rofi |
App launcher | Beautiful, themeable launcher — replaces dmenu |
powertop |
Power analysis | Identify power-hungry processes, optimize battery |
arandr |
Display config | Visual multi-monitor setup and arrangement |
tmux |
Terminal multiplexer | Split terminal, persistent sessions, remote work |
lxappearance |
GTK theme switcher | Change GTK themes, icons, fonts without editing files |
Desktop Environment — draphyOS Additions
Core packages that make draphyOS look and function the way it does.
| Package | What it does | Why it's here |
|---|---|---|
polybar |
Status bar | Highly customizable bar — replaces i3status with icons, modules |
picom |
Compositor | Window transparency, shadows, blur, rounded corners |
fish |
Shell | Modern shell — syntax highlighting, autosuggestions out-of-box |
feh |
Image viewer | Sets wallpaper on login, lightweight image viewing |
flameshot |
Screenshots | Select area, annotate, blur, save/copy — full-featured screenshots |
playerctl |
Media control | Control any media player (Spotify, Firefox, VLC) via keybindings |
xss-lock |
Screen lock trigger | Auto-locks screen after idle timeout (15 min) |
blueman |
Bluetooth manager | Easy Bluetooth pairing and device management |
gammastep |
Blue light filter | Reduces eye strain at night — auto-adjusts by time/location |
xfce-polkit |
Auth dialogs | Prompts for password when apps need root (package installs, etc.) |
gnome-keyring |
Secret storage | Stores passwords, SSH keys — auto-unlocks on login |
xfce4-settings |
Settings manager | Central place for appearance, keyboard, display settings |
yad |
Dialog boxes | Powers the calendar popup when clicking date in polybar |
qt5ct |
Qt5 theming | Makes Qt apps respect the GTK dark theme |
ImageMagick |
Image processing | Creates the logo overlay for the lock screen |
xdotool |
X11 automation | Executes keybindings from cheatsheet |
xclip |
Clipboard | Copies commands from cheatsheet to clipboard |
Fonts & Theming
Visual consistency across the entire desktop.
| Package | What it does | Why it's here |
|---|---|---|
fira-code-fonts |
Programming font | Ligatures (=> becomes arrow), excellent readability |
google-noto-sans-mono-vf-fonts |
Fallback mono font | Unicode coverage for characters Fira Code doesn't have |
fontawesome-6-free-fonts |
Icon font | All the icons in polybar (volume, wifi, battery, etc.) |
fontawesome-6-brands-fonts |
Brand icons | Logos for Spotify, Discord, etc. in polybar |
mint-y-icons |
Icon theme | Clean, modern folder/app icons — dark variant |
adwaita-cursor-theme |
Cursor theme | System default cursor — works everywhere |
Terminal File Manager — yazi
Modern terminal file manager with image preview support.
| Package | What it does | Why it's here |
|---|---|---|
yazi |
File manager | Blazing fast, vim-style navigation, image/PDF preview |
ueberzugpp |
Image preview | Displays images in terminal for yazi previews |
ffmpegthumbnailer |
Video thumbnails | Generates video thumbnails for yazi preview |
poppler-utils |
PDF tools | PDF preview in yazi (pdftotext, pdftoppm) |
atool |
Archive helper | Preview archive contents (zip, tar, etc.) in yazi |
CLI Tools
Command-line utilities that improve daily workflows.
| Package | What it does | Why it's here |
|---|---|---|
git |
Version control | Foundation for code management, draphyOS updates |
btop |
System monitor | Beautiful resource monitor — replaces htop for detailed view |
zoxide |
Smart cd | Remembers directories, jump with z instead of full path |
fd-find |
File finder | Fast, user-friendly alternative to find |
ripgrep |
Code search | Fast grep replacement — respects .gitignore |
fzf |
Fuzzy finder | Interactive search for files, history, anything |
jq |
JSON processor | Parse JSON in scripts (used for location detection) |
ffmpeg |
Media converter | Video/audio conversion, used by other tools |
p7zip |
Archive tool | Extract 7z, zip, rar, and other archive formats |
neovim |
Text editor | Modern vim — better defaults, Lua config, plugins |
Media & Documents
Applications for viewing and creating content.
| Package | What it does | Why it's here |
|---|---|---|
mpv |
Video player | Minimal, keyboard-driven, plays anything |
audacious |
Music player | Lightweight audio player with playlists |
zathura |
PDF viewer | Vim-style PDF reader — minimal, fast |
zathura-pdf-poppler |
PDF backend | Enables PDF rendering in zathura |
obs-studio |
Screen recording | Record screen, stream — industry standard |
kdenlive |
Video editor | Full-featured video editing (KDE-based) |
libreoffice-writer |
Documents | Word-compatible document editor |
libreoffice-calc |
Spreadsheets | Excel-compatible spreadsheet editor |
libreoffice-impress |
Presentations | PowerPoint-compatible slideshows |
libreoffice-draw |
Diagrams | Vector graphics, flowcharts, PDF editing |
gparted |
Disk utility | Partition disks, format drives — GUI tool |
Browsers & Privacy
Multiple browser options for different needs.
| Package | What it does | Why it's here |
|---|---|---|
firefox |
Browser (default) | Privacy-respecting, open source — pre-installed |
brave-browser |
Browser | Chromium-based, built-in ad blocker, privacy-focused |
google-chrome-stable |
Browser | For sites that require Chrome (some Google services) |
torbrowser-launcher |
Tor Browser | Anonymous browsing, access .onion sites |
proton-vpn-gnome-desktop |
VPN client | ProtonVPN — Swiss-based, no-logs VPN |
Development Tools
Everything needed for software development.
| Package | What it does | Why it's here |
|---|---|---|
code |
VS Code | Most popular code editor — extensions, debugging, Git |
docker-ce |
Container runtime | Run isolated containers for dev/deployment |
docker-ce-cli |
Docker CLI | Command-line interface for Docker |
containerd.io |
Container daemon | Low-level container runtime (Docker dependency) |
docker-buildx-plugin |
Build tool | Multi-platform Docker image builds |
docker-compose-plugin |
Compose | Define multi-container apps in YAML |
postgresql-server |
Database | Relational database — auto-configured with your user |
postgresql-contrib |
DB extensions | Additional PostgreSQL modules and utilities |
fnm (via install script) |
Node.js manager | Fast Node.js version switching per project |
NVIDIA Support (Optional)
Auto-detected and installed only if NVIDIA GPU is present.
| Package | What it does | Why it's here |
|---|---|---|
akmod-nvidia |
NVIDIA driver | Proprietary driver — auto-rebuilds on kernel updates |
switcheroo-control |
GPU switching | Enables hybrid graphics (Intel/AMD + NVIDIA) on laptops |
Features:
- Automatic GPU detection via
lspci - Secure Boot detection with MOK enrollment guidance
- Hybrid graphics support (switcheroo-control for laptops with dual GPUs)
| Config | Location | Description |
|---|---|---|
| i3 | ~/.config/i3/config |
Window manager |
| Polybar | ~/.config/polybar/config.ini |
Status bar |
| Rofi | ~/.config/rofi/config.rasi |
App launcher |
| Dunst | ~/.config/dunst/dunstrc |
Notifications |
| Picom | ~/.config/picom/picom.conf |
Compositor |
| Fish | ~/.config/fish/config.fish |
Shell |
| Alacritty | ~/.config/alacritty/alacritty.toml |
Terminal |
| Gammastep | ~/.config/gammastep/config.ini |
Night light |
| yazi | ~/.config/yazi/yazi.toml |
File manager |
| btop | ~/.config/btop/btop.conf |
System monitor |
| environment.d | ~/.config/environment.d/defaults.conf |
App defaults |
| mimeapps | ~/.config/mimeapps.list |
Default apps |
| GTK | ~/.config/gtk-3.0/settings.ini |
Theme settings |
| File | Location | Description |
|---|---|---|
| Install marker | ~/.draphyOS-installed |
Tracks installation state, version, base system |
| Package state | ~/.draphyOS-packages-before |
Snapshot of packages before install (for clean uninstall) |
| Config checksums | ~/.draphyOS-config-checksums |
MD5 checksums for three-way merge during updates |
| Update script | /usr/local/bin/update-draphyOS |
System-wide update command |
| Wallpaper script | /usr/local/bin/set-wallpaper |
Manages wallpaper for desktop/lock/login |
| VERSION | ~/.draphyOS/VERSION |
Current draphyOS version number |
| PACKAGES | ~/.draphyOS/PACKAGES |
Package manifest with version requirements |
draphyOS includes several tools to boost your productivity. Here's how to use them:
🎵 Media Controls (playerctl)
Control any media player (Spotify, Firefox, VLC) with keyboard:
XF86AudioNext— Next track (media key on keyboard)XF86AudioPrev— Previous track (media key on keyboard)XF86AudioPlay— Play/Pause (media key on keyboard)
Works across all MPRIS-compatible players. Uses your keyboard's dedicated media keys.
📸 Screenshots (flameshot)
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.
📋 Cheatsheet (Super+F1)
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
📅 Calendar Popup
Click the date in polybar to open a calendar popup (yad).
🔵 Bluetooth (blueman)
- Click the Bluetooth icon in system tray
- Or run
blueman-managerto pair/manage devices
🌙 Night Light (gammastep)
Automatically adjusts screen warmth based on time of day:
- Location is auto-detected via IP geolocation during install
- Reduces blue light at night for better sleep
- No geoclue2 dependency — coordinates stored directly in config
Config: ~/.config/gammastep/config.ini
🖥️ Multi-Monitor Setup (arandr)
- Run
arandrto visually arrange displays - Drag monitors to position, set resolution
- Save layout for later use
🔋 Power Management (powertop)
- Run
sudo powertopto analyze power usage - Use
--auto-tunefor automatic power optimization - Great for laptops to extend battery life
TLP vs power-profiles-daemon: The installer automatically handles conflicts between TLP and power-profiles-daemon. If you have TLP installed, power-profiles-daemon is disabled to avoid conflicts.
🖼️ Wallpaper
draphyOS includes a wallpaper management command that updates desktop, lock screen, and login screen:
set-wallpaper /path/to/image.png # Set new wallpaper
set-wallpaper --current # Show current wallpaper paths
set-wallpaper --reset # Reset to default draphyOS wallpaperWhat it does:
- Copies image to
~/.config/wallpaper.png(desktop/lock) - Copies to
/usr/share/backgrounds/draphyOS/(login screen) - Clears lock screen cache (regenerates on next lock)
- Applies immediately to desktop
Supported formats: PNG, JPG, JPEG, BMP, WEBP
Manual method (feh only):
feh --bg-fill /path/to/image.jpgNote: This only changes the desktop, not lock/login screens.
🔐 Password Storage (gnome-keyring)
Automatically stores:
- Browser passwords (Firefox, Chrome)
- SSH keys (unlocked on login)
- Application secrets
No setup needed — works automatically with PAM.
📂 Default Applications
draphyOS sets sensible defaults for opening files. Edit ~/.config/mimeapps.list to customize:
| File Type | Default App |
|---|---|
| Documents (.doc, .docx, .odt) | LibreOffice Writer |
| Spreadsheets (.xls, .xlsx, .ods, .csv) | LibreOffice Calc |
| Presentations (.ppt, .pptx, .odp) | LibreOffice Impress |
| Diagrams (.odg) | LibreOffice Draw |
| PDF, EPUB | Zathura |
| Images | feh |
| Video | mpv |
| Audio | Audacious |
| Code/Text | VS Code |
| Directories | Thunar |
🔋 Battery Charge Limit
During installation, you can set a charge limit to extend battery lifespan. The installer automatically detects your laptop brand and uses the appropriate interface.
Supported Laptops:
| Brand | Interface | Limit Type | Notes |
|---|---|---|---|
| ThinkPad (2012+) | natacpi | 60-100% | Native kernel support |
| ThinkPad (pre-2012) | tp_smapi | 60-100% | Requires tp_smapi module |
| ASUS | asus-nb-wmi | 40/60/80/100 | Only these 4 values work |
| Dell | dell-wmi | 55-100% | Requires kernel 6.12+ |
| Lenovo IdeaPad | ideapad_acpi | ~60% toggle | Conservation mode on/off |
| Huawei MateBook | huawei-wmi | 1-100% | Supports start/stop thresholds |
| LG Gram | lg_laptop | 80% toggle | Battery care on/off |
| Samsung | samsung_laptop | ~80% toggle | Battery life extender on/off |
| MSI | msi_ec | Variable | Hardware enforces start=stop-10 |
| Framework | Standard | 1-100% | Stop threshold only |
| System76 | Standard | Variable | Open EC firmware only |
To check/change the limit later:
# Check current limit (standard interface)
cat /sys/class/power_supply/BAT0/charge_control_end_threshold
# Set to 80% (standard interface)
echo 80 | sudo tee /sys/class/power_supply/BAT0/charge_control_end_threshold
# Lenovo IdeaPad conservation mode
cat /sys/bus/platform/drivers/ideapad_acpi/VPC*/conservation_mode
echo 1 | sudo tee /sys/bus/platform/drivers/ideapad_acpi/VPC*/conservation_mode
# Diagnostic info (install TLP first)
sudo tlp-stat -bNote: VMs, desktops, and some older laptops don't support charge limits. The installer auto-detects support.
🐳 Docker
Docker is pre-configured with your user added to the docker group:
- Log out and back in after install to use Docker without sudo
- cgroups v2 delegation enabled for rootless resource limits
- Verify:
docker run hello-world
# Common commands
docker ps # List running containers
docker images # List images
docker compose up -d # Start compose project🐘 PostgreSQL
PostgreSQL is initialized with your user as superuser:
- Database and user auto-created matching your username
- Connect immediately:
psql
# Common commands
psql # Connect to your database
psql -l # List databases
createdb myapp # Create new database🟢 Node.js (fnm)
Node.js is managed via fnm (Fast Node Manager):
- LTS version pre-installed
- Automatic version switching per project
- System Node.js conflict detection (warns if
nodejspackage is installed)
# Common commands
fnm list # List installed versions
fnm install 20 # Install Node.js 20
fnm use 20 # Switch to Node.js 20
fnm default 20 # Set default versionAdd a .node-version or .nvmrc file to project directories for automatic switching.
Note: If you have system-installed Node.js (
dnf install nodejs), fnm will still work but you may see version conflicts. The installer warns about this.
📁 yazi (Terminal File Manager)
yazi is a blazing fast terminal file manager with image preview:
- Launch:
Super + Shift + yor typeyazi - Preview images, PDFs, code with syntax highlighting
- Vim-style navigation
# Keybindings in yazi
h/j/k/l # Navigate (vim-style)
Enter # Open file/directory
q # Quit
y # Copy (yank)
p # Paste
d # Cut
Space # Select file🔄 System Updates
Use update-draphyOS for all system maintenance:
update-draphyOS # Interactive menu with all options
update-draphyOS -u # Quick update (equivalent to dnf upgrade)
update-draphyOS -s # Security updates only
update-draphyOS -c # Check for updates without installing
update-draphyOS -f # Full maintenance (update + clean + autoremove)
update-draphyOS -d # Update draphyOS configs from GitHub
update-draphyOS -v # Upgrade to next Fedora version
update-draphyOS --resume # Cleanup after Fedora version upgrade
update-draphyOS -h # Show helpThe tool handles:
- Package updates with proper metadata refresh
- Security-only updates when you need stability
- Orphaned package cleanup
- Fedora version upgrades (F41 → F42)
- Reboot prompts when kernel updates require it
- draphyOS config updates with conflict resolution
⌨️ Terminal Multiplexer (tmux)
Split terminal into panes/windows:
tmux— Start new sessionCtrl+b %— Split verticallyCtrl+b "— Split horizontallyCtrl+b arrow— Navigate panes
Great for remote work — sessions persist after disconnect.
~/.draphyOS/uninstall.shdraphyOS tracks which packages it installed. On uninstall:
- If package state was saved (installations after v1): Precisely removes only packages added by draphyOS, restoring your system to its exact pre-install state
- Legacy installations: Falls back to predefined package lists
The uninstaller is smart about your base system:
Fedora i3 Spin:
- Keeps core i3 packages (your system needs them!)
- Only removes draphyOS additions (polybar, picom, fish, etc.)
- Strongly recommends restoring your original configs
- Falls back to
/etc/skeldefaults if no backup exists
Other Fedora variants (XFCE, Workstation, etc.):
- Option to remove only draphyOS additions
- Option to fully remove all i3 packages
- Restore backup or skip
Automatic:
- draphyOS config symlinks (all 25 config files)
- System update script (
/usr/local/bin/update-draphyOS) - Battery charge limit service and udev rules
- cgroup delegation config (Docker rootless)
- LightDM customization (restored from backup)
- GNOME/GTK dark mode settings (reset to defaults)
- Third-party repositories (Brave, Chrome, VS Code, Docker, yazi COPR)
- draphyOS state files (checksums, package state, etc.)
Interactive prompts:
- fnm and all Node.js versions
- Claude Code CLI
- Docker group membership and service
- PostgreSQL service
- switcheroo-control (GPU switching)
- NVIDIA drivers (with dracut regeneration)
- Orphaned dependency packages (dnf autoremove)
- Shell revert to bash
- Backup restoration
i3 not starting?
- Check
~/.xsession-errorsfor errors - Run
i3 -Cto validate config syntax
Polybar not showing?
- Run
~/.config/polybar/launch.shmanually - Check
cat /tmp/polybar-$(id -u).logfor errors
Network module not showing?
draphyOS has separate WiFi and Ethernet modules that auto-hide when disconnected.
- Interfaces are auto-detected on each login via
~/.xprofile - If not working, check your interface names:
ip link show - Edit
~/.config/polybar/config.ini:- WiFi:
[module/network-wifi]→interface = wlan0(or your interface) - Ethernet:
[module/network-eth]→interface = eth0(or your interface)
- WiFi:
Screen looks wrong?
- Press
Super + Shift + rto restart i3 - Check picom:
pgrep picom || picom &
Terminal colors wrong?
- Check
~/.config/alacritty/alacritty.tomlfor color settings - Restart Alacritty to apply changes
Running in a VM? Display not refreshing?
Picom's glx backend doesn't work well in virtual machines. Use VM mode:
Option 1: Use the --vm flag during install:
~/.draphyOS/install.sh --vmOption 2: Enable VM mode after installation:
update-draphyOS --vmOption 3: Manual fix:
- Edit
~/.config/picom/picom.conf:backend = "xrender"; corner-radius = 0; vsync = false; use-damage = false;
- Restart picom:
pkill picom && picom -b
To disable VM mode and restore GLX backend:
update-draphyOS --no-vmNote: Rounded corners and blur aren't supported with
xrender, but opacity and shadows still work.
update-draphyOS command not found?
The update script is installed to /usr/local/bin/update-draphyOS during installation. If it's missing:
# Reinstall the update script
sudo cp ~/.draphyOS/update.sh /usr/local/bin/update-draphyOS
sudo chmod +x /usr/local/bin/update-draphyOSConfig update shows conflicts for unchanged files?
This can happen if you installed draphyOS before version tracking was added. The updater will create the checksum file on first update, so future updates will work correctly.
To reset checksums manually:
rm ~/.draphyOS-config-checksums
update-draphyOS -dNVIDIA driver not loading with Secure Boot?
NVIDIA's proprietary drivers need to be signed for Secure Boot. The installer detects this and provides guidance:
- After install, reboot and watch for MOK (Machine Owner Key) enrollment prompt
- Select "Enroll MOK" → "Continue" → Enter the password shown during install
- Reboot again — NVIDIA driver should now load
To check if Secure Boot is blocking the driver:
mokutil --sb-state # Check Secure Boot status
lsmod | grep nvidia # Check if driver loaded
journalctl -b | grep -i nvidia # Check for errorsHybrid graphics (laptop with dual GPU)?
For laptops with Intel/AMD integrated + NVIDIA discrete GPU, switcheroo-control is auto-enabled:
# Check GPU switching status
switcherooctl list
# Run app on discrete GPU
switcherooctl launch <app>
# Or use environment variable
DRI_PRIME=1 <app>Contributions are welcome! Whether it's fixing a typo, improving configs, or adding new features — all help is appreciated.
See CONTRIBUTING.md for guidelines on:
- Branch naming and commit format
- Running ShellCheck locally
- PR requirements and CI checks
MIT License — Feel free to use and modify.
Credits: Theme inspired by Mint-Y-Dark · Icons by Mint-Y · Font: Fira Code · Base: Fedora i3 Spin
draphyOS is an independent project and is not affiliated with, endorsed by, or sponsored by Fedora Project, Red Hat, Inc., or Linux Mint.
