How to Apply a Theme in Omarchy: Complete CLI Guide
Use the omarchy-theme-apply command followed by the theme name to instantly switch color palettes across Hyprland, Quickshell, and GTK/Qt applications.
Omarchy is a declarative Linux desktop environment built on Hyprland and Quickshell. Changing its visual appearance is handled entirely through the command line using the built-in theming system. The repository omacom/omarchy stores theme definitions in the themes/ directory and provides dedicated CLI tools to activate them.
Understanding Omarchy Theme Structure
Before you apply a theme in Omarchy, it helps to understand how the system organizes visual assets.
Theme Directory Layout
Omarchy themes are self-contained packages located under the themes/ directory in the repository root. Each theme folder must contain a colors.toml file that defines the palette. Optional assets such as icons, wallpapers, or font configurations can be bundled within the same folder. When you run the apply command, the system reads from this location to validate and activate the requested theme.
The colors.toml Specification
The core of every theme is the colors.toml file. This configuration defines standard keys including accent, background, foreground, red, green, yellow, blue, magenta, cyan, and their bright variants (bright_red, etc.). These values are written as hexadecimal color codes. The file follows a strict schema that the validation logic in default/agents/skills/omarchy/theming.md checks before activation.
How to Apply a Theme in Omarchy (CLI Workflow)
Switching themes requires three steps: selecting the theme, running the activation command, and allowing the system to refresh dependent configurations.
Listing Available Themes
To see which themes are installed, run the list command. This utility scans the themes/ directory and outputs valid theme names.
omarchy-theme-list
#> default rose-pine nord dracula
The command excludes any folders missing a valid colors.toml file, ensuring only functional themes appear in the output.
Activating a Theme via CLI
To apply a theme in Omarchy, invoke the omarchy-theme-apply utility with the theme name as the sole argument. For example, to switch to the rose-pine theme:
omarchy-theme-apply rose-pine
According to the implementation in default/agents/skills/omarchy/theming.md, this command performs three operations: it validates that the theme exists, copies the source colors.toml to ~/.config/omarchy/theme/colors.toml, and triggers a cascade of configuration refreshes for all subsystems.
Verifying the Active Theme
To confirm which theme is currently active, use the current command:
omarchy-theme-current
#> rose-pine
This reads the symlink or metadata written during the last successful apply operation.
How the Theme System Works (Deep Dive)
Understanding the internals helps troubleshoot issues when you apply a theme in Omarchy.
The omarchy-theme-apply Implementation
The omarchy-theme-apply command is implemented as an Omarchy skill defined in default/agents/skills/omarchy/theming.md. The script first checks that the requested theme folder exists under themes/ and that it contains a valid colors.toml. If validation passes, it copies the color file to the user's configuration directory and records the active theme name. This source file acts as the single source of truth for all UI components.
Configuration Refresh Mechanism
After copying the color file, the skill invokes omarchy-refresh-config for every dependent component. This utility ensures that Hyprland reloads its window border and decoration settings, Quickshell re-sources its QML UI (reading colors via theme.colors), and GTK/Qt toolkits pick up the updated palette on the next widget draw. The refresh logic preserves manual edits to configuration files, only touching values that exist in the theme definition.
Creating and Applying Custom Themes
You can extend Omarchy by creating custom theme packages and applying them using the same CLI workflow.
Custom Theme Requirements
To create a valid custom theme:
- Create a new directory under
themes/, for examplethemes/midnight/. - Add a
colors.tomlfile with all required keys. Example structure:
accent = "#ff6600"
background = "#1e1e2e"
foreground = "#cdd6f4"
red = "#f38ba8"
green = "#a6e3a1"
yellow = "#f9e2af"
blue = "#89b4fa"
magenta = "#f5c2e7"
cyan = "#94e2d5"
bright_red = "#f38ba8"
# ... additional bright variants
- Apply the theme using the standard command:
omarchy-theme-apply midnight
Adding Assets and Advanced Configuration
Advanced themes can include wallpaper images or icon sets within the theme folder. While the primary colors.toml file is mandatory, auxiliary files referenced by custom Quickshell widgets or Hyprland configurations can be placed alongside it. When omarchy-theme-apply runs, it copies the entire theme folder contents, ensuring that relative paths in your configuration remain valid.
Summary
Applying a theme in Omarchy is a streamlined, CLI-driven process that centralizes color management through the omarchy-theme-apply command. Key takeaways include:
- Themes reside in
themes/: Each theme is a folder containing a mandatorycolors.tomland optional assets. - Single command activation: Running
omarchy-theme-apply <name>validates, copies, and activates the theme instantly. - Automatic cascading refresh: The system updates Hyprland, Quickshell, and GTK/Qt configurations without requiring manual restarts.
- Custom themes supported: Creating a new theme requires only a valid
colors.tomlfile and placement in the themes directory.
Frequently Asked Questions
Where are Omarchy themes stored?
Omarchy themes are stored in the themes/ directory at the repository root. Each theme occupies its own subfolder, such as themes/rose-pine/ or themes/nord/. The system scans this location when you run omarchy-theme-list or omarchy-theme-apply.
What file format does Omarchy use for color definitions?
Omarchy uses TOML files named colors.toml to define color palettes. These files must specify standard keys like accent, background, foreground, and ANSI color codes including their bright variants. The schema is validated by the theming skill before activation.
Do I need to restart Hyprland after applying a theme?
No. When you apply a theme in Omarchy using omarchy-theme-apply, the command automatically invokes omarchy-refresh-config for Hyprland and other components. This reloads configurations in-place, updating window borders, bar colors, and UI elements immediately without closing applications or logging out.
Can I override specific colors without creating a full theme?
The standard workflow requires a complete colors.toml file. However, after applying a base theme, you can manually edit ~/.config/omarchy/theme/colors.toml. Running omarchy-refresh-config will propagate those changes. For permanent overrides, it is recommended to create a custom theme folder rather than modifying the active configuration directly, as the apply command may overwrite manual edits on subsequent runs.
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 →