Welcome to Omarchy Customizer.
If you're a Hyprland user, you know the pain: You find an amazing theme on GitHub. You clone the repo, dig through folders, edit config files manually, copy things around, test if it works. Then you want to try something else? Repeat the entire process. Sometimes you break your config and spend an hour recovering.
Omarchy Customizer solves this with one simple idea: Browse → Click → Apply.
Instead of hunting for themes across GitHub and manually editing files, you open a web browser, see beautiful previews of themes for your entire desktop ecosystem (taskbar, lock screen, system info display, search UI, and main environment), click "Apply," and it just works. Your system changes instantly, safely, and locally—no accounts, no cloud uploads, no waiting.
This is a local-first desktop customization hub built for Linux enthusiasts who want their Hyprland setup to look and feel exactly how they want it—without the friction.
Omarchy Customizer is a full-stack web application that centralizes desktop customization for Hyprland users. It gives you control over five interconnected layers of your desktop:
- Omarchy — The main Hyprland environment (colors, fonts, borders, gaps, animations)
- Waybar — Your taskbar/panel (layout, colors, widgets)
- Hyprlock — Your lock screen (appearance, animations)
- Walker — Your application launcher (UI theme)
- Fastfetch — Your system information display (layout, ASCII art, colors)
Traditionally, you'd manually manage each of these. Omarchy Customizer brings them all into one unified interface where you can:
- Browse hundreds of pre-built themes across all five components
- Preview themes before applying them (with images and metadata)
- Apply themes instantly with one click
- Combine multiple themes into reusable presets (called "Buckets")
- Backup your current configuration safely before making changes
- Edit raw config files directly within the app (with version history)
- Restore previous configurations if something goes wrong
Core philosophy: Your system stays your system. All changes happen locally on your machine. Internet only required cloning repos and themes. No data leaves your computer. Just you, your desktop, and your themes.
┌─────────────────────────────────────────────────────────┐
│ USER BROWSER │
│ ┌─────────────────────────────────────────────────────┐│
│ │ React Frontend (localhost:5173) ││
│ │ - Theme browsing UI ││
│ │ - Preset (Bucket) management ││
│ │ - File editor ││
│ │ - Backup interface ││
│ └─────────────────────────────────────────────────────┘│
└──────────────┬──────────────────────────────────────────┘
│ HTTP/REST API
┌──────────────▼──────────────────────────────────────────┐
│ BACKEND SERVER (Python FastAPI, localhost:8000) │
│ ┌─────────────────────────────────────────────────────┐│
│ │ API Routes ││
│ │ - Theme routes (browse, apply) ││
│ │ - Bucket routes (save, apply presets) ││
│ │ - Backup routes (create, restore) ││
│ │ - Editor routes (load, save files) ││
│ └─────────────────────────────────────────────────────┘│
│ ┌─────────────────────────────────────────────────────┐│
│ │ Service Layer ││
│ │ - Execute shell commands ││
│ │ - Manage file operations ││
│ │ - Orchestrate multi-component changes ││
│ └─────────────────────────────────────────────────────┘│
└──────────────┬──────────────────────────────────────────┘
│ Exec (bash), File I/O, rsync
┌──────────────▼──────────────────────────────────────────┐
│ YOUR LINUX SYSTEM │
│ ┌─────────────────────────────────────────────────────┐│
│ │ ~/.config/ ││
│ │ ├── omarchy/ (Hyprland main config) ││
│ │ ├── waybar/ (Taskbar config) ││
│ │ ├── hyprlock/ (Lock screen config) ││
│ │ ├── fastfetch/ (System info config) ││
│ │ └── walker/ (Launcher UI config) ││
│ │ ││
│ │ ~/.customizer/ (App data & backups) ││
│ │ ├── buckets/ (Your saved presets) ││
│ │ ├── backups/ (Config snapshots) ││
│ │ └── editors/ (File history) ││
│ └─────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────┘
Let's trace what happens when you apply an Omarchy theme:
- Frontend: You open the app, browse to "Theme Collections" → "Omarchy Themes" → click "Apply" on a theme card
- API Call: Browser sends:
POST /api/theme/hypr/change { theme_id: "dracula-blue" } - Backend Route: FastAPI endpoint receives the request, looks up the theme metadata in the local store
- Service Layer: Calls
theme_services.change_theme()which:- Reads the theme's GitHub repository URL from local storage
- Creates a backup of your current
~/.config/omarchy/(safety first) - Executes a system command:
omarchy-theme-install https://github.com/user/repo
- System Execution: The command runs on your machine:
- Clones the theme repository
- Copies theme files to
~/.config/omarchy/ - Reloads Hyprland configuration
- Response: Backend sends success message back to frontend
- UI Update: Frontend displays a toast notification "Theme applied successfully"
- Your desktop environment updates in real-time
- Taskbar, colors, fonts all change instantly
Why local execution? Because:
- Speed: Direct filesystem access = instant changes (no network latency)
- Offline capability: Once themes are downloaded once, you don't need the internet
- System integration: The backend can execute shell commands that only make sense on your specific machine
- Privacy: All data stays local; nothing is tracked or uploaded
What it does: Browse and apply pre-built themes for your entire desktop ecosystem.
The 5 theme types:
| Component | What it controls | Example change |
|---|---|---|
| Omarchy | Main Hyprland environment | Colors, fonts, window borders, gaps, animations, overall look |
| Waybar | Taskbar/panel | Layout, widget styling, colors, transparency |
| Hyprlock | Lock screen | Visual design, blur effects, text colors, unlock animation |
| Walker | Application launcher (search UI) | Theme colors, button styles, font sizing |
| Fastfetch | System info display | ASCII art style, color palette, information layout |
How you use it:
- Navigate to Theme Collections from the homepage
- Pick a category (e.g., "Omarchy Themes")
- Browse a grid of theme cards with preview images
- Click a theme to see details
- Click "Apply" → theme instantly changes your system
- OR click "Add to Bucket" to include it in a preset (see Feature 2)
Behind the scenes:
- Theme metadata (names, preview images, GitHub URLs) is stored locally in
Backend/app/store/as JSON files - These were pre-scraped from GitHub repositories to avoid needing the internet at runtime
- Applying a theme triggers system commands that download and install the theme files to
~/.config/
Example workflow: You want a dark theme with blue accents. You browse Omarchy Themes, find "Dracula Blue," apply it. Your desktop colors change immediately. Then you browse Waybar themes, find "Minimal Dark," apply it. Your taskbar updates. Two clicks, two theme changes, zero manual file editing.
What it does: Save combinations of themes as reusable presets, then apply your entire setup with one click.
Problem it solves: You've found the perfect Omarchy theme, Waybar, and Fastfetch combination. But next month you want to try something different. Then a month after that, you want your original setup back. Instead of remembering which themes to apply each time, save them as a "Bucket."
How you use it:
- Browse and apply individual themes (Omarchy, Waybar, Fastfetch, etc.)
- After you've selected multiple themes you like, click "Add to Bucket" on any theme
- A modal pops up asking for a name: e.g., "Dark Minimal Setup" or "Cyberpunk Neon"
- Click "Save Bucket"
- Your preset is saved as a JSON file in
~/.customizer/buckets/
Later:
- Go to Buckets page
- See your saved presets listed
- Click "Apply" on any bucket
- All themes in that preset apply automatically (Omarchy first, then others)
- Your entire desktop changes to match that preset in seconds
Real-world scenario: You have three setups:
- "Dark Minimal" (Omarchy dark, Waybar minimal, Fastfetch compact)
- "Cyberpunk Neon" (Omarchy neon, Waybar glowing, Fastfetch matrix)
- "Light Productive" (Omarchy light, Waybar functional, Fastfetch detailed)
Each bucket is one click. Switch between your three favorite setups instantly.
Technical detail: Buckets are stored as JSON files with theme references. When you apply a bucket, the backend orchestrates applying each theme in the correct priority order (Omarchy first, since it's the foundation).
What it does: Snapshot your current configuration, then restore it if you break something or want to go back.
Problem it solves: You apply a theme and something looks off. Or you experiment with raw config editing and want your old setup back. Backups let you undo changes easily.
How you use it:
Creating a backup:
- Go to Backups page
- See a list of your
~/.config/directories (omarchy, waybar, hyprlock, etc.) - Check the boxes for items you want to backup (or select all)
- Click "Create Backup"
- System snapshots those directories using
rsync - A backup is saved in
~/.customizer/backups/and also zipped to your~/Downloads/
Restoring a backup:
- Go to Backups page
- See your backup history (with timestamps)
- Click "Restore" on a backup
- Your
~/.config/is replaced with that backup's contents (rsync again) - Your desktop reverts to how it looked at that time
Safety features:
- Before applying any theme, the app automatically creates a
.bakbackup file - You can create manual backups anytime
- Restores are reversible (just create another backup first)
Real scenario: You apply a theme that breaks your lock screen. You restore a backup from 10 minutes ago. Lock screen works again.
What it does: Edit raw configuration files directly in the app, with keyboard shortcuts and version history.
Problem it solves: Sometimes you want fine-grained control—tweak a color value, adjust a spacing parameter, or add a custom setting that no pre-built theme provides. Instead of opening a text editor and navigating to the file, do it in the app.
How you use it:
- Go to Editor page
- Paste or type a file path:
/home/user/.config/omarchy/hyprland.conf - Click "Load"
- The file content appears in an editor textarea
- Make changes directly in the app
- Press Cmd+S (or Ctrl+S) to save
- File is updated on your system instantly
Bonus features:
- Recent files: The app remembers the last 10 files you edited
- History: Previous content of each file is saved, so you can reference what changed
- Keyboard shortcut: Cmd/Ctrl+S works just like in your OS
Real scenario: You like a theme but want to tweak the window border color from red to purple. Instead of closing the app and opening a text editor, you load the config file in the Editor, change the color value, and save. Done.
What it does: See information about each theme collection—who created it, where to find it, what components it includes.
Problem it solves: You want to explore themes but don't know where to start. Collections give you curated groups with metadata.
How you use it:
- From homepage or "Theme Collections" page
- You see 5 collection cards displayed:
- Omarchy (main Hyprland environment themes)
- Waybar (taskbar themes)
- Hyprlock (lock screen themes)
- Walker (launcher UI themes)
- Fastfetch (system info themes)
Each card shows:
- Preview image
- Creator/community link
- Brief description
- Link to browse themes in that collection
Behind the scenes: Metadata is fetched from /api/meta/collection endpoint, which provides information about all available theme sources.
1. Speed
- No network latency. Apply a theme? Instant. Save a bucket? Instant.
- Your browser ↔ backend ↔ your system = all local, no internet round-trips for every action.Only internet required is for cloing the repos to you local to get the patricular theme you want to apply.
2. Offline Capability
- Once theme data is downloaded, the app works offline.
- You can browse, apply, and manage your setup even if your internet goes down.
- The app syncs theme data once (via scrapers), then operates independently.
3. System Integration
- The backend can execute shell commands (
omarchy-theme-install,hyprctl reload, etc.) - It can directly manipulate your
~/.config/directory. - It can read system information to understand what you have installed.
- This is only possible when running locally on your machine.
4. Privacy
- All your configuration files stay on your computer.
- No backup, preset, or edit history is uploaded anywhere.
- You are not tracked. Your settings are not profiled.
- 100% user-owned data.
For Omarchy Customizer to work, your system must have:
| Requirement | Why | Where it matters |
|---|---|---|
| Hyprland | The main window manager being customized | Core feature; without it, most themes don't apply |
| Waybar | For taskbar customization | Waybar theme feature |
| Hyprlock | For lock screen customization | Hyprlock theme feature |
| Fastfetch | For system info display | Fastfetch feature |
| Walker | For launcher UI | Walker theme feature |
| Python 3.10+ | Backend runtime | Server can't run without it |
| Node.js 18+ | Frontend build tool | UI can't be developed/served without it |
| ~/.config/ directories | Where user configs live | All changes applied here |
| ~/.customizer/ directory | Where app stores buckets, backups, history | Created automatically on first run |
"Bring the themes to the user's system, not the user's system to the cloud."
This means:
- Themes are discovered once, then stored locally
- Your configuration never leaves your computer
- The app adapts to your system, not vice versa
- You're always in control
Because of local-first design:
- ✅ No loading screens: Changes are instant
- ✅ No latency: No waiting for servers
- ✅ No accounts: No need to create or manage credentials
- ✅ No tracking: Your usage isn't logged anywhere
- ✅ No limits: Apply as many themes as you want, as many times as you want
- ✅ No subscription: It's genuinely yours, forever
Before starting, ensure you have:
- Linux OS (Ubuntu, Arch, Fedora, etc.)
- Hyprland installed and configured
- Python 3.10 or higher
- Node.js 18 or higher (npm included)
- git (for cloning themes)
- System tools: rsync, bash
# If you haven't already
git clone <repository-url>
cd ConfigAPI# Navigate to Backend directory
cd Backend
# Create a Python virtual environment
python3 -m venv venv
# Activate the virtual environment
source venv/bin/activate
# Install Python dependencies
pip install -r requirements.txt
# Start the FastAPI server
python run.pyExpected output:
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
The backend is now running on http://localhost:8000 and serving both:
- REST API endpoints (
/api/*) - Static files from the store (
/store/*→ theme images and metadata)
Keep this terminal running. Open a new terminal for the frontend.
# In a new terminal, navigate to Frontend directory
cd Frontend
# Install JavaScript dependencies
npm install
# Create a .env file (if it doesn't exist)
# The file should contain:
echo "VITE_CUSTOMIZER_API_URL=http://127.0.0.1:8000" > .env
# Start the development server
npm run devExpected output:
VITE v5.0.0 ready in 123 ms
➜ Local: http://localhost:5173/
Open your browser and go to http://localhost:5173/
You should see the Omarchy Customizer homepage.
If you prefer, you can run both backend and frontend with a single script:
# From project root
bash runapplication.shThis script starts both servers in the background (adjust as needed).
| Problem | Solution |
|---|---|
| Backend won't start (port 8000 in use) | Kill process on port 8000: lsof -ti:8000 | xargs kill -9 |
| Frontend won't connect to backend | Verify .env has correct VITE_CUSTOMIZER_API_URL |
| Themes don't apply (permission denied) | Ensure ~/.config/ and ~/.customizer/ directories are writable |
| Modules not found errors | Ensure you ran pip install (backend) or npm install (frontend) |
| Hyprland commands not recognized | Ensure Hyprland is installed and in your PATH |
Time to complete: ~5-10 minutes
- Open app → Homepage appears with 6 command cards
- "Browse Themes," "Manage Presets," "Backups," "Edit Config," "Documentation," etc.
- Click "Browse Themes" → see 5 collection cards
- Click "Omarchy Themes" → grid of theme cards with preview images loads
- Scroll through, read theme names, preview different styles
- Find a theme you like (e.g., "Dracula Blue")
- Click the theme card → theme details page opens
- Shows preview image, description, creator link
- Click "Apply" button
- Backend executes commands, system reloads
- Your desktop colors change instantly
- Toast notification: "Theme applied successfully"
- Go back to collections
- Click "Waybar Themes" to customize your taskbar
- Browse and apply a Waybar theme
- Your taskbar styling updates
- You've now applied:
- Omarchy theme (main desktop)
- Waybar theme (taskbar)
- You want to save this combination for later
- Go to any theme detail page, click "Add to Bucket"
- Modal pops up: "Enter bucket name"
- Type: "My First Setup"
- Click "Save Bucket"
- Success! Your preset is saved
- Go to Backups page
- Click "Create Backup" → your current setup is snapshot
- Go back to themes, apply completely different themes
- Customize your desktop some more
- If you don't like it, go to Backups page
- Click "Restore" on your earlier backup
- Everything goes back to how it was
- Go to Editor page
- Paste a config file path:
/home/you/.config/omarchy/hyprland.conf - Click "Load"
- Edit the file directly (change a color, adjust spacing)
- Press Cmd+S to save
- Changes apply immediately
- Go to Buckets page
- See "My First Setup" listed
- Click "Apply" → entire preset applies instantly
- Desktop switches back to your saved configuration
- Create multiple buckets for different use cases:
- "Work Mode" (minimal, productivity-focused)
- "Gaming Mode" (vibrant, performance-focused)
- "Relaxing" (calm colors, minimal distractions)
- Use keyboard shortcuts:
Cmd+K(orCtrl+K) to search documentationCmd+S(orCtrl+S) in editor to save
- Automate with editor: Load a config file, make bulk changes, save
- Backup before major changes: Before trying 5 new themes, create a backup first
- Reference documentation anytime for keyboard shortcuts and tips
Frontend (Frontend/)
src/pages/— All 6 pages (Homepage, Collections, Buckets, Backups, Editor, Docs)src/components/— Theme collection UI components (OmarchyThemeCollection, WaybarCollection, etc.)src/context/— State management (ThemeContext, BucketContext)src/api/api.js— Axios HTTP client configuration
Backend (Backend/)
app/api/routes/— All API endpoints (organized by feature)app/services/— Business logic (theme, bucket, backup, editor, file operations)app/core/config_map.py— System configuration and hardcoded pathsapp/store/— Static theme data (JSON files, images)app/scraper/— Tools that pre-populate theme data from GitHub
Root
package.json— Project metadatarunapplication.sh— Convenience script to start both serversSERVICE.md— High-level service overviewREADME.md— Quick start guide
In-app Documentation:
- Press
Cmd+KorCtrl+Kto open the searchable documentation page - Documentation is viewable without leaving the app
External Documentation:
SERVICE.md— Overview of services and featuresREADME.md— Quick start and setupFrontend/DESIGN.md— Design system and component documentationBackend/TO_BE_FEATURES.md— Planned features for future development
Omarchy Customizer is a full-stack, local-first desktop customization application that solves the problem of manual Hyprland theme management. It provides:
✅ Five integrated theme systems (Omarchy, Waybar, Hyprlock, Walker, Fastfetch)
✅ Instant theme application via local shell execution
✅ Bucket presets for saving and reusing theme combinations
✅ Automatic backups and one-click restoration
✅ In-app file editor with history and keyboard shortcuts
✅ 100% local operation — no accounts, no cloud, no tracking
✅ Simple setup — Python backend + Node frontend, both run locally
The architecture is clean: React frontend sends API requests to a FastAPI backend, which executes system commands and manipulates configuration files directly. Everything is stored locally. Everything is instantaneous.
Whether you're recording a demo, onboarding a developer, or just understanding the full system, this document provides the complete picture.
Ready to customize your desktop? Start with the setup instructions above, and you'll be applying themes in minutes.