Omarchy System Defaults Location: Where Configuration Files Are Stored and How to Refresh Them
Omarchy system defaults are stored in the default/ directory at the repository root, which serves as the source of truth for all configuration files copied to user home directories via the omarchy-refresh-config command.
Omarchy uses a refresh-based configuration model where built-in defaults live in version control and are selectively copied into ~/.config/ only when invoked. This design keeps the repository as the authoritative baseline while giving users full control over which defaults they adopt. Understanding where Omarchy system defaults are located is essential for customizing your desktop environment without losing the ability to revert to known-good configurations.
The default/ Directory Structure
The default/ folder at the repository root contains reference implementations for every configurable Omarchy component. When you run omarchy-refresh-config, the tool resolves paths relative to $OMARCHY_PATH and copies files into your user configuration tree.
Core Subdirectories
default/hypr/— Hyprland window manager configuration written in Lua, including layouts, bindings, appearance, and runtime helpersdefault/omarchy/— Core Omarchy assets such as menu definitions and launcher configurationsdefault/systemd/— Systemd unit overrides and sleep-hook scripts for shutdown behavior, zram settings, and hardware wake handlingdefault/uwsm/— UW-SM session manager integration files with environment variable bootstrappingdefault/fonts/omarchy/— The bundled Omarchy icon font used by UI components
Key Default Configuration Files
These specific files represent the most commonly referenced Omarchy system defaults:
| File Path | Purpose |
|---|---|
default/hypr/omarchy.lua |
Central Hyprland configuration that loads other defaults |
default/hypr/bindings.lua |
Default key-binding definitions for the window manager |
default/omarchy/omarchy-menu.jsonc |
Menu schema powering the Omarchy desktop UI |
default/systemd/faster-shutdown.conf |
Systemd override reducing shutdown timeouts |
default/fonts/omarchy/omarchy.ttf |
Icon font for Omarchy interface elements |
default/uwsm/env.d/10-omarchy |
Environment bootstrap for UW-SM sessions |
default/chromium/native-messaging-hosts/com.omarchy.copy_url.json |
Chromium extension host registration |
default/xdg-terminal-exec/hyprland-xdg-terminals.list |
Terminal emulator list for XDG integration |
default/systemd/user@.service.d/faster-shutdown.conf |
Per-user systemd service override |
Refreshing Defaults with omarchy-refresh-config
The omarchy-refresh-config command copies files from default/ to your user configuration while backing up existing files. This is the primary mechanism for adopting or resetting Omarchy system defaults.
Common Refresh Commands
# Copy Hyprland default configuration to ~/.config/hypr/hyprland.lua
omarchy-refresh-config hypr/hyprland.lua
# Refresh the Omarchy menu definition
omarchy-refresh-config omarchy/omarchy-menu.jsonc
# Refresh all defaults under the systemd subtree
omarchy-refresh-config systemd/
Each command performs three operations:
- Locates the source file under
default/relative to$OMARCHY_PATH - Creates a backup of any existing user file at the destination
- Copies the default into the appropriate
~/.config/subdirectory
How Omarchy Resolves Default Paths
The refresh mechanism uses $OMARCHY_PATH to locate the repository root, then constructs source paths by prepending default/ to your argument. For example:
omarchy-refresh-config hypr/omarchy.lua
# Reads from: $OMARCHY_PATH/default/hypr/omarchy.lua
# Writes to: ~/.config/hypr/omarchy.lua
This resolution happens consistently across all Omarchy subsystems, ensuring that the default/ directory remains the single source of truth for system-wide configuration baselines.
Customizing Without Losing Defaults
Because Omarchy only copies files when explicitly refreshed, you can safely edit user configurations without repository conflicts. To revert a customized file to its original state:
# Restore a single file to its default
omarchy-refresh-config hypr/bindings.lua
# Backup is automatically created as: ~/.config/hypr/bindings.lua.backup
This workflow lets you experiment freely while maintaining an escape hatch to known-good configurations.
Summary
- Omarchy system defaults are located in the
default/directory at the repository root - The
omarchy-refresh-configcommand copies defaults into~/.config/on demand default/hypr/contains Hyprland Lua configurations;default/omarchy/holds core UI assetsdefault/systemd/anddefault/uwsm/manage system services and session initialization- Files are only overwritten when you explicitly refresh, making customization safe
Frequently Asked Questions
Where is the main Hyprland configuration stored in Omarchy?
The primary Hyprland configuration is default/hypr/omarchy.lua. This file serves as the entry point that loads other Hyprland defaults including bindings, appearance settings, and runtime helpers. Refresh it with omarchy-refresh-config hypr/omarchy.lua to deploy the latest window manager defaults.
What happens to my existing config when I run omarchy-refresh-config?
Omarchy automatically creates a .backup suffix copy of any existing user file before overwriting it. This preserves your customizations and allows manual restoration if needed. The backup is created in the same ~/.config/ subdirectory as the target file.
Can I refresh multiple defaults at once?
Yes. Pass a directory path to omarchy-refresh-config to recursively process all files under that subtree. For example, omarchy-refresh-config systemd/ refreshes all systemd overrides, sleep hooks, and service configurations in a single operation.
How do I inspect defaults without installing them?
Browse the default/ directory directly in the Omarchy repository. All files are plain text (Lua, JSONC, or systemd unit files) viewable in any editor or on GitHub. This lets you review configurations before deciding whether to adopt them via refresh.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →