omarchy
Original:🇺🇸 English
Translated
REQUIRED for ANY changes to Linux desktop, window manager, or system config. Use when editing ~/.config/hypr/, ~/.config/waybar/, ~/.config/walker/, ~/.config/alacritty/, ~/.config/kitty/, ~/.config/ghostty/, ~/.config/mako/, or ~/.config/omarchy/. Triggers: Hyprland, window rules, animations, keybindings, monitors, gaps, borders, blur, opacity, waybar, walker, terminal config, themes, wallpaper, night light, idle, lock screen, screenshots, layer rules, workspace settings, display config, or any omarchy-* commands.
8installs
Sourcebasecamp/omarchy
Added on
NPX Install
npx skill4agent add basecamp/omarchy omarchyTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Omarchy Skill
Manage Omarchy Linux systems - a beautiful, modern, opinionated Arch Linux distribution with Hyprland.
When This Skill MUST Be Used
ALWAYS invoke this skill when the user's request involves ANY of these:
- Editing ANY file in (window rules, animations, keybindings, monitors, etc.)
~/.config/hypr/ - Editing ANY file in ,
~/.config/waybar/,~/.config/walker/~/.config/mako/ - Editing terminal configs (alacritty, kitty, ghostty)
- Editing ANY file in
~/.config/omarchy/ - Window behavior, animations, opacity, blur, gaps, borders
- Layer rules, workspace settings, display/monitor configuration
- Themes, wallpapers, fonts, appearance changes
- Any command
omarchy-* - Screenshots, screen recording, night light, idle behavior, lock screen
If you're about to edit a config file in ~/.config/ on this system, STOP and use this skill first.
Critical Safety Rules
NEVER modify anything in - but READING is safe and encouraged.
~/.local/share/omarchy/This directory contains Omarchy's source files managed by git. Any changes will be:
- Lost on next
omarchy-update - Cause conflicts with upstream
- Break the system's update mechanism
~/.local/share/omarchy/ # READ-ONLY - NEVER EDIT (reading is OK)
├── bin/ # Source scripts (symlinked to PATH)
├── config/ # Default config templates
├── themes/ # Stock themes
├── default/ # System defaults
├── migrations/ # Update migrations
└── install/ # Installation scriptsReading is SAFE and useful - do it freely to:
~/.local/share/omarchy/- Understand how omarchy commands work:
cat $(which omarchy-theme-set) - See default configs before customizing:
cat ~/.local/share/omarchy/config/waybar/config.jsonc - Check stock theme files to copy for customization
- Reference default hyprland settings:
cat ~/.local/share/omarchy/default/hypr/*
Always use these safe locations instead:
- - User configuration (safe to edit)
~/.config/ - - Custom themes (must be real directories)
~/.config/omarchy/themes/<custom-name>/ - - Custom automation hooks
~/.config/omarchy/hooks/
System Architecture
Omarchy is built on:
| Component | Purpose | Config Location |
|---|---|---|
| Arch Linux | Base OS | |
| Hyprland | Wayland compositor/WM | |
| Waybar | Status bar | |
| Walker | App launcher | |
| Alacritty/Kitty/Ghostty | Terminals | |
| Mako | Notifications | |
| SwayOSD | On-screen display | |
Command Discovery
Omarchy provides ~145 commands following pattern.
omarchy-<category>-<action>bash
# List all omarchy commands
compgen -c | grep -E '^omarchy-' | sort -u
# Find commands by category
compgen -c | grep -E '^omarchy-theme'
compgen -c | grep -E '^omarchy-restart'
# Read a command's source to understand it
cat $(which omarchy-theme-set)Command Categories
| Prefix | Purpose | Example |
|---|---|---|
| Reset config to defaults (backs up first) | |
| Restart a service/app | |
| Toggle feature on/off | |
| Theme management | |
| Install optional software | |
| Launch apps | |
| System commands | |
| Package management | |
| Initial setup tasks | |
| System updates | |
Configuration Locations
Hyprland (Window Manager)
~/.config/hypr/
├── hyprland.conf # Main config (sources others)
├── bindings.conf # Keybindings
├── monitors.conf # Display configuration
├── input.conf # Keyboard/mouse settings
├── looknfeel.conf # Appearance (gaps, borders, animations)
├── envs.conf # Environment variables
├── autostart.conf # Startup applications
├── hypridle.conf # Idle behavior (screen off, lock, suspend)
├── hyprlock.conf # Lock screen appearance
└── hyprsunset.conf # Night light / blue light filterKey behaviors:
- Hyprland auto-reloads on config save (no restart needed for most changes)
- Use to force reload
hyprctl reload - Use to reset to defaults
omarchy-refresh-hyprland
Waybar (Status Bar)
~/.config/waybar/
├── config.jsonc # Bar layout and modules (JSONC format)
└── style.css # StylingWaybar does NOT auto-reload. You MUST run after any config changes.
omarchy-restart-waybarCommands: , ,
omarchy-restart-waybaromarchy-refresh-waybaromarchy-toggle-waybarTerminals
~/.config/alacritty/alacritty.toml
~/.config/kitty/kitty.conf
~/.config/ghostty/configCommand:
omarchy-restart-terminalOther Configs
| App | Location |
|---|---|
| btop | |
| fastfetch | |
| lazygit | |
| starship | |
| git | |
| walker | |
Safe Customization Patterns
Pattern 1: Edit User Config Directly
For simple changes, edit files in :
~/.config/bash
# 1. Read current config
cat ~/.config/hypr/bindings.conf
# 2. Backup before changes
cp ~/.config/hypr/bindings.conf ~/.config/hypr/bindings.conf.bak.$(date +%s)
# 3. Make changes with Edit tool
# 4. Apply changes
# - Hyprland: auto-reloads on save (no restart needed)
# - Waybar: MUST restart with omarchy-restart-waybar
# - Walker: MUST restart with omarchy-restart-walker
# - Terminals: MUST restart with omarchy-restart-terminalPattern 2: Make a new theme
- Create a directory under ~/.config/omarchy/themes.
- See how an existing theme is done via ~/.local/share/omarchy/themes/catppuccin.
- Download a matching background (or several) from the internet and put them in ~/.config/omarchy/themes/[name-of-new-theme]
- When done with the theme, run omarchy-theme-set "Name of new theme"
Pattern 3: Use Hooks for Automation
Create scripts in to run automatically on events:
~/.config/omarchy/hooks/bash
# Available hooks (see samples in ~/.config/omarchy/hooks/):
~/.config/omarchy/hooks/
├── theme-set # Runs after theme change (receives theme name as $1)
├── font-set # Runs after font change
└── post-update # Runs after omarchy-updateExample hook ():
~/.config/omarchy/hooks/theme-setbash
#!/bin/bash
THEME_NAME=$1
echo "Theme changed to: $THEME_NAME"
# Add custom actions herePattern 4: Reset to Defaults -- ALWAYS SEEK USER CONFIRMATION BEFORE RUNNING
When customizations go wrong:
bash
# Reset specific config (creates backup automatically)
omarchy-refresh-waybar
omarchy-refresh-hyprland
# The refresh command:
# 1. Backs up current config with timestamp
# 2. Copies default from ~/.local/share/omarchy/config/
# 3. Restarts the componentCommon Tasks
Themes
bash
omarchy-theme-list # Show available themes
omarchy-theme-current # Show current theme
omarchy-theme-set <name> # Apply theme (use "Tokyo Night" not "tokyo-night")
omarchy-theme-next # Cycle to next theme
omarchy-theme-bg-next # Cycle wallpaper
omarchy-theme-install <url> # Install from git repoKeybindings
Edit . Format:
~/.config/hypr/bindings.confbind = SUPER, Return, exec, xdg-terminal-exec
bind = SUPER, Q, killactive
bind = SUPER SHIFT, E, exitView current bindings:
omarchy-menu-keybindings --printIMPORTANT: When re-binding an existing key:
- First check existing bindings:
omarchy-menu-keybindings --print - If the key is already bound, you MUST add an directive BEFORE your new
unbindbind - Inform the user what the key was previously bound to
Example - rebinding SUPER+F (which is bound to fullscreen by default):
# Unbind existing SUPER+F (was: fullscreen)
unbind = SUPER, F
# New binding for file manager
bind = SUPER, F, exec, nautilusAlways tell the user: "Note: SUPER+F was previously bound to fullscreen. I've added an unbind directive to override it."
Display/Monitors
Edit . Format:
~/.config/hypr/monitors.confmonitor = eDP-1, 1920x1080@60, 0x0, 1
monitor = HDMI-A-1, 2560x1440@144, 1920x0, 1List monitors:
hyprctl monitorsWindow Rules
CRITICAL: Hyprland window rules syntax changes frequently between versions.
Before writing ANY window rules, you MUST fetch the current documentation from the official Hyprland wiki:
DO NOT rely on cached or memorized window rule syntax. The format has changed multiple times and using outdated syntax will cause errors or unexpected behavior.
Window rules go in or a sourced file. Always verify the current syntax from the wiki first.
~/.config/hypr/hyprland.confFonts
bash
omarchy-font-list # Available fonts
omarchy-font-current # Current font
omarchy-font-set <name> # Change fontSystem
bash
omarchy-update # Full system update
omarchy-version # Show Omarchy version
omarchy-debug --no-sudo --print # Debug info (ALWAYS use these flags)
omarchy-lock-screen # Lock screen
omarchy-cmd-shutdown # Shutdown
omarchy-cmd-reboot # RebootIMPORTANT: Always run with flags to avoid interactive sudo prompts that will hang the terminal.
omarchy-debug--no-sudo --printTroubleshooting
bash
# Get debug information (ALWAYS use these flags to avoid interactive prompts)
omarchy-debug --no-sudo --print
# Upload logs for support
omarchy-upload-log
# Reset specific config to defaults
omarchy-refresh-<app>
# Refresh specific config file
# config-file path is relative to ~/.config/
# eg. omarchy-refresh-config hypr/hyprlock.conf will refresh ~/.config/hypr/hyprlock.conf
omarchy-refresh-config <config-file>
# Full reinstall of configs (nuclear option)
omarchy-reinstallDecision Framework
When user requests system changes:
- Is it a stock omarchy command? Use it directly
- Is it a config edit? Edit in , never
~/.config/~/.local/share/omarchy/ - Is it a theme customization? Create a NEW custom theme directory
- Is it automation? Use hooks in
~/.config/omarchy/hooks/ - Is it a package install? Use
yay - Unsure if command exists? Search with
compgen -c | grep omarchy
Development (AI Agents)
When contributing to Omarchy itself (e.g., fixing bugs, adding features), migrations are used to apply changes to existing installations.
Creating Migrations
bash
# ALWAYS use --no-edit flag or you will get stuck
omarchy-dev-add-migration --no-editThis creates a new migration file and outputs its path without opening an editor. The migration filename is based on the git commit timestamp.
Migration files are shell scripts in that run once per system during . Use them for:
~/.local/share/omarchy/migrations/omarchy-update- Updating user configs with new defaults
- Installing new dependencies
- Running one-time setup tasks
Example Requests
- "Change my theme to catppuccin" ->
omarchy-theme-set catppuccin - "Add a keybinding for Super+E to open file manager" -> Check existing bindings first, add if needed, then add
unbindinbind~/.config/hypr/bindings.conf - "Configure my external monitor" -> Edit
~/.config/hypr/monitors.conf - "Make the window gaps smaller" -> Edit
~/.config/hypr/looknfeel.conf - "Set up night light to turn on at sunset" -> or edit
omarchy-toggle-nightlight~/.config/hypr/hyprsunset.conf - "Customize the catppuccin theme colors" -> Create by copying from stock, then edit
~/.config/omarchy/themes/catppuccin-custom/ - "Run a script every time I change themes" -> Create
~/.config/omarchy/hooks/theme-set - "Reset waybar to defaults" ->
omarchy-refresh-waybar