REQUIRED for ANY changes to Linux desktop, window manager, or system config...
Manage Omarchy Linux systems - a beautiful, modern, opinionated Arch Linux distribution with Hyprland.
This skill is for end-user customization on installed systems. It is not for contributing to Omarchy source code.
ALWAYS invoke this skill for end-user requests involving ANY of these:
~/.config/hypr/ (window rules, animations, keybindings, monitors, etc.)~/.config/waybar/, ~/.config/walker/, ~/.config/mako/~/.config/omarchy/omarchy commands (omarchy theme ..., omarchy refresh ..., omarchy restart ..., etc.)If you're about to edit a config file in ~/.config/ on this system, STOP and use this skill first.
Do NOT use this skill for Omarchy development tasks (editing files in ~/.local/share/omarchy/, creating migrations, or running omarchy dev ... workflows).
For end-user customization tasks, NEVER modify anything in ~/.local/share/omarchy/ - but READING is safe and encouraged.
This directory contains Omarchy's source files managed by git. Any changes will be:
omarchy update~/.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 scripts
Reading ~/.local/share/omarchy/ is SAFE and useful - do it freely to:
omarchy theme set --help or cat $(which omarchy-theme-set)cat ~/.local/share/omarchy/config/waybar/config.jsonccat ~/.local/share/omarchy/default/hypr/*Always use these safe locations instead:
~/.config/ - User configuration (safe to edit)~/.config/omarchy/themes/<custom-name>/ - Custom themes (must be real directories)~/.config/omarchy/hooks/ - Custom automation hooksIf the request is to develop Omarchy itself, this skill is out of scope. Follow repository development instructions instead of this skill.
Omarchy is built on:
| Component | Purpose | Config Location |
|---|---|---|
| Arch Linux | Base OS | /etc/, ~/.config/ |
| Hyprland | Wayland compositor/WM | ~/.config/hypr/ |
| Waybar | Status bar | ~/.config/waybar/ |
| Walker | App launcher | ~/.config/walker/ |
| Alacritty/Foot/Kitty/Ghostty | Terminals | ~/.config/<terminal>/ |
| Mako | Notifications | ~/.config/mako/ |
| SwayOSD | On-screen display | ~/.config/swayosd/ |
Omarchy ships a single omarchy CLI that dispatches to all omarchy-* binaries via omarchy <group> <action>. Always prefer this form — it is self-documenting and stable. The underlying omarchy-* binaries still exist on PATH and remain safe to read for source.
# List every documented command and its summary
omarchy commands
# Show the commands inside a group
omarchy theme --help
omarchy refresh --help
omarchy restart --help
# Show help for a specific command (does not execute it)
omarchy theme set --help
# Machine-readable listing (binary, route, summary, args, aliases)
omarchy commands --json
# Read a command's source to understand it
cat $(which omarchy-theme-set)
Run omarchy --help for the full list. The most common groups:
| Group | Purpose | Example |
|---|---|---|
omarchy refresh |
Reset config to defaults (backs up first) | omarchy refresh waybar |
omarchy restart |
Restart a service/app | omarchy restart waybar |
omarchy toggle |
Toggle feature on/off | omarchy toggle nightlight |
omarchy theme |
Theme management | omarchy theme set <name> |
omarchy install |
Install optional software / packages | omarchy install docker dbs |
omarchy launch |
Launch apps | omarchy launch browser |
omarchy capture |
Screenshots and recordings | omarchy capture screenshot |
omarchy reminder |
Desktop notification reminders | omarchy reminder 15 "Pickup Jack" |
omarchy pkg |
Package management | omarchy pkg install <pkg> |
omarchy setup |
Initial setup tasks | omarchy setup fingerprint |
omarchy update |
System updates | omarchy update |
~/.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 filter
Key behaviors:
hyprctl reload to force reloadhyprctl reload followed by hyprctl configerrorshyprctl configerrors reports errors, address them and rerun validation until clean or until a real blocker is identifiedomarchy refresh hyprland to reset to defaults~/.config/waybar/
├── config.jsonc # Bar layout and modules (JSONC format)
└── style.css # Styling
Waybar does NOT auto-reload. You MUST run omarchy restart waybar after any config changes.
Commands: omarchy restart waybar, omarchy refresh waybar, omarchy toggle waybar
~/.config/alacritty/alacritty.toml
~/.config/foot/foot.ini
~/.config/kitty/kitty.conf
~/.config/ghostty/config
Command: omarchy restart terminal
| App | Location |
|---|---|
| btop | ~/.config/btop/btop.conf |
| fastfetch | ~/.config/fastfetch/config.jsonc |
| lazygit | ~/.config/lazygit/config.yml |
| starship | ~/.config/starship.toml |
| git | ~/.config/git/config |
| walker | ~/.config/walker/config.toml |
For simple changes, edit files in ~/.config/:
# 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, but MUST validate with `hyprctl reload` and `hyprctl configerrors`
# - Waybar: MUST restart with `omarchy restart waybar`
# - Walker: MUST restart with `omarchy restart walker`
# - Terminals: MUST restart with `omarchy restart terminal`
omarchy theme set "Name of new theme"Create scripts in ~/.config/omarchy/hooks/ to run automatically on events:
# 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 update`
Example hook (~/.config/omarchy/hooks/theme-set):
#!/bin/bash
THEME_NAME=$1
echo "Theme changed to: $THEME_NAME"
# Add custom actions here
When customizations go wrong:
# 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 component
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 bg next # Cycle background
omarchy theme install <url> # Install from git repo
Edit ~/.config/hypr/bindings.conf. Format:
bind = SUPER, Return, exec, xdg-terminal-exec
bind = SUPER, Q, killactive
bind = SUPER SHIFT, E, exit
View current bindings: omarchy menu keybindings --print
IMPORTANT: When re-binding an existing key:
omarchy menu keybindings --printunbind directive BEFORE your new bindExample - 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, nautilus
Always tell the user: "Note: SUPER+F was previously bound to fullscreen. I've added an unbind directive to override it."
Edit ~/.config/hypr/monitors.conf. Format:
monitor = eDP-1, 1920x1080@60, 0x0, 1
monitor = HDMI-A-1, 2560x1440@144, 1920x0, 1
List monitors: hyprctl monitors
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 ~/.config/hypr/hyprland.conf or a sourced file. Always verify the current syntax from the wiki first.
omarchy font list # Available fonts
omarchy font current # Current font
omarchy font set <name> # Change font
omarchy update # Full system update
omarchy version # Show Omarchy version
omarchy debug --no-sudo --print # Debug info (ALWAYS use these flags)
omarchy system lock # Lock screen
omarchy system shutdown # Shutdown
omarchy system reboot # Reboot
IMPORTANT: Always run omarchy debug with --no-sudo --print flags to avoid interactive sudo prompts that will hang the terminal.
# 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 reinstall
When user requests system changes:
~/.config/, never ~/.local/share/omarchy/~/.config/omarchy/hooks/omarchy pkg add <pkgs...> (or omarchy pkg aur add <pkgs...> for AUR-only packages)omarchy commands (or omarchy <group> --help for one group)When the user asks to set a reminder, use omarchy reminder <minutes> [message] directly. Convert natural language durations to minutes and title-case short reminder labels when appropriate.
omarchy reminder 15 "Pickup Jack"
omarchy reminder 60 "Check laundry"
omarchy reminder show
omarchy reminder clear
This skill intentionally does not cover Omarchy source development. Do not use this skill for:
~/.local/share/omarchy/ (bin/, config/, default/, themes/, migrations/, etc.)omarchy dev ... commandsomarchy theme set catppuccinunbind if needed, then add bind in ~/.config/hypr/bindings.conf~/.config/hypr/monitors.conf~/.config/hypr/looknfeel.confomarchy toggle nightlight or edit ~/.config/hypr/hyprsunset.confomarchy reminder 15 "Pickup Jack"omarchy reminder showomarchy reminder clear~/.config/omarchy/themes/catppuccin-custom/ by copying from stock, then edit~/.config/omarchy/hooks/theme-setomarchy refresh waybar