major-ai-skills
Version:
Installable agentic skills / AI agent skills (SKILL.md) for Claude Code, Cursor, Codex CLI, Gemini CLI & Antigravity - 402+ professional app, token-efficiency, and common-sense skills. SEO/GEO ready.
404 lines (337 loc) • 19.8 kB
Markdown
---
name: omarchy
description: "Configure and extend the Omarchy Linux desktop, troubleshoot Hyprland and Quickshell, and customize Neovim or desktop themes."
category: linux
risk: safe
source: self
source_type: self
date_added: "2026-08-26"
tags: ["omarchy", "arch-linux", "hyprland", "quickshell", "neovim", "tiling-wm", "linux-distribution", "dhh", "wayland", "claude"]
tools: ["claude", "cursor", "gemini", "codex"]
---
# Omarchy Linux Distribution AI Skill Guide (Claude)
## Overview & System Architecture
Omarchy is a **beautiful, modern, and opinionated** omakase Linux distribution created by **David Heinemeier Hansson (DHH)** of Ruby on Rails and Basecamp/37signals fame. Built on **Arch Linux**, it combines the **Hyprland** Wayland tiling compositor, the **Quickshell** Qt/QML desktop construction kit, and a carefully curated set of modern CLI tools, TUIs, GUIs, and development utilities into a cohesive, aesthetically-driven desktop operating system. Omarchy v4.0 (codename "Quattro") is the current release. Claude operates as a Principal Linux Systems Architect and Omarchy Power User, specializing in **Hyprland configuration**, **Quickshell QML panel development**, **Omarchy CLI management**, **Neovim Lua plugin authoring**, **Zsh shell customization**, and **system-level Arch Linux administration**.
### Omarchy Multi-Layer System Architecture
```
┌─────────────────────────────────────────────────────────────────┐
│ Omarchy System Architecture │
│ │
│ Desktop Shell & Compositor │
│ ├── Hyprland (Wayland Tiling Compositor & Window Manager) │
│ ├── Quickshell (Qt/QML Desktop Panel & Widget Construction) │
│ ├── Theming Engine (Wallpapers, Colors, Bar Styles) │
│ └── Rofi-Wayland (Application Launcher & dmenu replacement) │
│ │
│ Terminal & Editor Stack │
│ ├── Ghostty (GPU-accelerated Wayland-native Terminal) │
│ ├── Tmux (Terminal Multiplexer with custom keybindings) │
│ ├── Neovim (Lua-configured IDE with LSP, Treesitter, Snacks) │
│ └── Zsh (Shell with zsh-autosuggestions, syntax-highlighting) │
│ │
│ System & Package Management │
│ ├── pacman (Arch Linux official package manager) │
│ ├── paru (AUR helper, yay-compatible) │
│ ├── Omarchy CLI (omarchy update/theme/install/plugin) │
│ └── Dotfile Management (~/.config/omarchy/) │
│ │
│ Bundled Application Ecosystem │
│ ├── Chromium, LibreOffice, Obsidian, Kdenlive, OBS Studio │
│ ├── Qimgv (image viewer), Qmmp (Winamp-style music player) │
│ ├── Steam + Lutris (Gaming via Proton/Wine) │
│ └── Claude Code, Zed Editor (AI-powered development) │
└─────────────────────────────────────────────────────────────────┘
```
---
## Operational Capabilities & Agent Directives
1. **Hyprland Configuration**: Edit `~/.config/hypr/hyprland.conf` for monitor layouts, workspace rules, window rules, keybindings, animations, and input device configuration.
2. **Quickshell QML Panel Development**: Author and modify Quickshell panels (top bar, notification center, clipboard manager) using Qt Quick/QML declarative UI.
3. **Omarchy CLI Operations**: Execute `omarchy update`, `omarchy theme`, `omarchy install`, `omarchy plugin`, and `omarchy dotfiles` commands for system management.
4. **Neovim Lua Configuration**: Configure Neovim with `lazy.nvim` plugin manager, Treesitter grammars, LSP servers via `mason.nvim`, and custom keymaps.
5. **Zsh & Shell Customization**: Manage Zsh plugins (autosuggestions, syntax-highlighting, fzf-tab), aliases, shell functions, and prompt (Starship).
6. **Theme Creation & Customization**: Create custom Omarchy themes by defining color palettes, wallpapers, Hyprland border colors, and Quickshell QML style overrides.
7. **System Administration**: Perform Arch Linux package management (pacman/paru), systemd service management, kernel updates, and hardware troubleshooting.
---
## Production Bash Script: Omarchy System Health Check & Auto-Repair
Save this file as `~/.local/bin/omarchy-health-check.sh` and run with `bash omarchy-health-check.sh`:
```bash
#!/usr/bin/env bash
# ==============================================================================
# Omarchy System Health Check & Auto-Repair Script
# Validates core Omarchy subsystems, repairs common issues, and reports status.
# Compatible with Omarchy 4.0 (Quattro) on Arch Linux.
# ==============================================================================
set -euo pipefail
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m'
log_ok() { echo -e "${GREEN}[✓]${NC} $1"; }
log_fail() { echo -e "${RED}[✗]${NC} $1"; }
log_warn() { echo -e "${YELLOW}[!]${NC} $1"; }
log_info() { echo -e "${CYAN}[i]${NC} $1"; }
echo -e "${CYAN}═══════════════════════════════════════════════════${NC}"
echo -e "${CYAN} Omarchy System Health Check (v4.0 Quattro)${NC}"
echo -e "${CYAN}═══════════════════════════════════════════════════${NC}"
echo ""
# 1. Verify Hyprland Compositor
if pgrep -x Hyprland > /dev/null 2>&1; then
HYPR_VER=$(hyprctl version 2>/dev/null | grep -oP 'v[\d.]+' | head -1)
log_ok "Hyprland compositor running (${HYPR_VER:-unknown})"
else
log_fail "Hyprland is NOT running"
log_info "Start Hyprland: exec Hyprland (from TTY login)"
fi
# 2. Verify Quickshell Desktop Panels
if pgrep -x quickshell > /dev/null 2>&1; then
log_ok "Quickshell desktop panels active"
else
log_warn "Quickshell not running - top bar and widgets unavailable"
log_info "Restart: quickshell &"
fi
# 3. Verify Ghostty Terminal
if command -v ghostty &> /dev/null; then
log_ok "Ghostty terminal emulator installed"
else
log_fail "Ghostty not found"
log_info "Install: paru -S ghostty"
fi
# 4. Verify Neovim Installation & Config
if command -v nvim &> /dev/null; then
NVIM_VER=$(nvim --version | head -1)
log_ok "Neovim: ${NVIM_VER}"
if [ -d "${XDG_CONFIG_HOME:-$HOME/.config}/nvim" ]; then
log_ok "Neovim config directory exists"
else
log_warn "Neovim config missing at ~/.config/nvim"
fi
else
log_fail "Neovim not installed"
fi
# 5. Check Omarchy CLI
if command -v omarchy &> /dev/null; then
log_ok "Omarchy CLI available"
else
log_warn "Omarchy CLI not found in PATH"
log_info "Ensure ~/.local/bin is in PATH or source Omarchy shell config"
fi
# 6. Check Core Development Tools
TOOLS=("git" "mise" "fzf" "bat" "eza" "fd" "rg" "lazygit" "lazydocker" "zoxide" "starship")
MISSING=()
for tool in "${TOOLS[@]}"; do
if ! command -v "$tool" &> /dev/null; then
MISSING+=("$tool")
fi
done
if [ ${#MISSING[@]} -eq 0 ]; then
log_ok "All ${#TOOLS[@]} core dev tools present"
else
log_warn "Missing tools: ${MISSING[*]}"
log_info "Install missing: paru -S ${MISSING[*]}"
fi
# 7. Check Wayland Session Variables
if [ "${XDG_SESSION_TYPE:-}" = "wayland" ]; then
log_ok "Wayland session active (XDG_SESSION_TYPE=wayland)"
else
log_warn "Not in a Wayland session (XDG_SESSION_TYPE=${XDG_SESSION_TYPE:-unset})"
fi
# 8. Check pacman Database & Updates
UPDATES=$(checkupdates 2>/dev/null | wc -l || echo "0")
if [ "$UPDATES" -gt 0 ]; then
log_info "${UPDATES} package updates available (run: omarchy update)"
else
log_ok "System packages up to date"
fi
# 9. Check Disk Space
ROOT_USAGE=$(df / --output=pcent | tail -1 | tr -d ' %')
if [ "$ROOT_USAGE" -lt 85 ]; then
log_ok "Root filesystem usage: ${ROOT_USAGE}%"
else
log_warn "Root filesystem usage: ${ROOT_USAGE}% - consider cleanup"
fi
# 10. Check Theme Configuration
THEME_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/omarchy/themes"
if [ -d "$THEME_DIR" ]; then
THEME_COUNT=$(find "$THEME_DIR" -maxdepth 1 -type d | wc -l)
log_ok "Theme directory found (${THEME_COUNT} themes)"
else
log_info "No custom themes directory at $THEME_DIR"
fi
echo ""
echo -e "${CYAN}═══════════════════════════════════════════════════${NC}"
echo -e "${CYAN} Health check complete.${NC}"
echo -e "${CYAN}═══════════════════════════════════════════════════${NC}"
```
---
## Hyprland Configuration Reference
### Essential Keybindings (Omarchy Defaults)
```conf
# ~/.config/hypr/hyprland.conf - Omarchy Default Keybindings (Super = Mod key)
# Window Navigation
bind = SUPER, H, movefocus, l # Focus left
bind = SUPER, L, movefocus, r # Focus right
bind = SUPER, K, movefocus, u # Focus up
bind = SUPER, J, movefocus, d # Focus down
# Window Movement
bind = SUPER SHIFT, H, movewindow, l # Move window left
bind = SUPER SHIFT, L, movewindow, r # Move window right
bind = SUPER SHIFT, K, movewindow, u # Move window up
bind = SUPER SHIFT, J, movewindow, d # Move window down
# Workspace Switching (1-9)
bind = SUPER, 1, workspace, 1
bind = SUPER, 2, workspace, 2
bind = SUPER, 3, workspace, 3
bind = SUPER, 4, workspace, 4
bind = SUPER, 5, workspace, 5
# Move Window to Workspace
bind = SUPER SHIFT, 1, movetoworkspace, 1
bind = SUPER SHIFT, 2, movetoworkspace, 2
bind = SUPER SHIFT, 3, movetoworkspace, 3
# Application Launchers
bind = SUPER, RETURN, exec, ghostty # Terminal
bind = SUPER, D, exec, rofi -show drun # App launcher
bind = SUPER, B, exec, chromium # Browser
bind = SUPER, E, exec, thunar # File manager
bind = SUPER, Q, killactive # Close window
bind = SUPER SHIFT, Q, exit # Exit Hyprland
# Layout Toggles
bind = SUPER, F, fullscreen, 0 # Fullscreen
bind = SUPER, T, togglefloating # Toggle floating
bind = SUPER, P, pseudo # Pseudo-tile
# Screenshots (grim + slurp)
bind = , Print, exec, grim ~/Pictures/screenshot-$(date +%Y%m%d-%H%M%S).png
bind = SUPER, Print, exec, grim -g "$(slurp)" ~/Pictures/screenshot-$(date +%Y%m%d-%H%M%S).png
```
### Monitor Configuration
```conf
# Multi-monitor setup example
monitor = DP-1, 3840x2160@144, 0x0, 1.5 # Primary 4K monitor
monitor = HDMI-A-1, 2560x1440@60, 2560x0, 1 # Secondary monitor
monitor = , preferred, auto, 1 # Fallback for any other
# Workspace assignment to monitors
workspace = 1, monitor:DP-1, default:true
workspace = 2, monitor:DP-1
workspace = 3, monitor:HDMI-A-1, default:true
```
---
## Omarchy CLI Command Reference
```bash
# System Updates
omarchy update # Full system update (pacman + paru + omarchy)
omarchy update --packages-only # Update only system packages
# Theme Management
omarchy theme # List available themes
omarchy theme set <name> # Apply theme (changes wallpaper, colors, bar)
omarchy theme preview <name> # Preview theme without applying
# Plugin Management
omarchy plugin list # List installed shell plugins
omarchy plugin install <name> # Install a shell plugin
omarchy plugin remove <name> # Remove a shell plugin
# Dotfiles
omarchy dotfiles # Show dotfile status
omarchy dotfiles sync # Sync dotfiles from repository
omarchy dotfiles diff # Show changes between local and repo
# Installation
omarchy install # Re-run Omarchy installer/setup
```
---
## Omarchy Theme Creation Guide
Create a custom theme at `~/.config/omarchy/themes/my-theme/`:
```bash
# Theme directory structure
~/.config/omarchy/themes/my-theme/
├── theme.toml # Theme metadata and color definitions
├── wallpaper.jpg # Desktop wallpaper (any resolution)
├── hyprland.conf # Hyprland overrides (border colors, gaps, animations)
└── quickshell/ # Quickshell QML style overrides
└── colors.qml # Panel color definitions
```
### theme.toml Example
```toml
[theme]
name = "Nordic Frost"
author = "your-name"
version = "1.0"
[colors]
background = "#2E3440"
foreground = "#ECEFF4"
accent = "#88C0D0"
border_active = "#81A1C1"
border_inactive = "#3B4252"
bar_background = "#2E3440"
bar_foreground = "#D8DEE9"
```
---
## Technical Troubleshooting Matrix
| Issue & Failure Signature | Root Cause Analysis | Diagnostic & Resolution Pathway |
| :--- | :--- | :--- |
| **Black screen after login / Hyprland fails to start** | GPU driver incompatibility (especially Nvidia) or missing Wayland session. | 1. Switch to TTY2: `Ctrl+Alt+F2`.<br>2. Check logs: `journalctl -xb -u sddm` or `cat ~/.local/share/hyprland/hyprland.log`.<br>3. For Nvidia: install `nvidia-dkms`, add `nvidia_drm.modeset=1` to kernel params, add `env = LIBVA_DRIVER_NAME,nvidia` to hyprland.conf. |
| **Top bar / panels not rendering** | Quickshell process crashed or QML config error. | 1. Check status: `pgrep quickshell`.<br>2. Restart: `killall quickshell && quickshell &`.<br>3. Validate QML: check `~/.config/quickshell/` for syntax errors.<br>4. Debug: `quickshell --debug 2>&1 \| tee /tmp/qs.log`. |
| **Ghostty terminal crashes or won't open** | Missing GPU acceleration drivers or config error. | 1. Test: `ghostty --check-config`.<br>2. Fallback: `LIBGL_ALWAYS_SOFTWARE=1 ghostty`.<br>3. Config: check `~/.config/ghostty/config`. |
| **Screen tearing or stuttering** | VSync not enabled in Hyprland or incorrect refresh rate. | 1. Add to hyprland.conf: `misc { vfr = true }`.<br>2. Check monitor config: `hyprctl monitors`.<br>3. For Nvidia: set `env = __GL_GSYNC_ALLOWED,1`. |
| **Keybindings not working** | Keybinding conflict or modifier key misconfigured. | 1. Check active binds: `hyprctl binds`.<br>2. Debug: `hyprctl dispatch exec 'notify-send test'`.<br>3. Verify Super key mapping in `hyprland.conf`. |
| **Audio not working** | PipeWire/WirePlumber service not running. | 1. Check: `systemctl --user status pipewire wireplumber`.<br>2. Restart: `systemctl --user restart pipewire wireplumber`.<br>3. Verify: `wpctl status` and `wpctl set-default <sink-id>`. |
| **Clipboard not syncing between apps** | Wayland clipboard protocol issue or cliphist not running. | 1. Check: `wl-paste --list-types`.<br>2. Verify cliphist: `pgrep wl-clip-persist`.<br>3. Test: `echo test \| wl-copy && wl-paste`. |
| **Updates failing with pacman lock** | Another pacman instance running or stale lock file. | 1. Check: `pgrep pacman`.<br>2. Remove stale lock: `sudo rm /var/lib/pacman/db.lck`.<br>3. Retry: `omarchy update`. |
| **Multi-monitor layout broken after wake from sleep** | Hyprland does not re-detect monitors on resume. | 1. Re-apply: `hyprctl reload`.<br>2. Check monitors: `hyprctl monitors`.<br>3. If persistent, add `exec-once = sleep 2 && hyprctl reload` to hyprland.conf. |
---
## Essential File Locations & Directories
```
~/.config/hypr/hyprland.conf # Hyprland compositor configuration
~/.config/hypr/hyprlock.conf # Lock screen configuration
~/.config/hypr/hypridle.conf # Idle timeout & screensaver settings
~/.config/quickshell/ # Quickshell QML panel configuration
~/.config/ghostty/config # Ghostty terminal configuration
~/.config/nvim/ # Neovim Lua configuration (init.lua)
~/.config/tmux/tmux.conf # Tmux multiplexer configuration
~/.config/rofi/ # Rofi launcher theme & configuration
~/.config/starship.toml # Starship prompt configuration
~/.config/omarchy/ # Omarchy-specific settings & themes
~/.local/bin/ # User scripts (Omarchy CLI lives here)
~/.local/share/hyprland/ # Hyprland logs and runtime data
/etc/omarchy/ # System-wide Omarchy configuration
```
---
## Bundled Software Ecosystem Reference
### Terminal & Development
| Tool | Purpose |
| :--- | :--- |
| **Ghostty** | GPU-accelerated Wayland-native terminal emulator |
| **Neovim** | Lua-configured text editor with LSP, Treesitter, telescope.nvim |
| **Tmux** | Terminal multiplexer with Omarchy-custom keybindings |
| **Zsh** | Shell with autosuggestions, syntax-highlighting, fzf-tab |
| **Starship** | Cross-shell prompt with git status and language indicators |
| **mise** | Polyglot version manager (Ruby, Node, Python, Go, Rust) |
| **lazygit** | TUI Git client with interactive rebase and staging |
| **lazydocker** | TUI Docker container and image management |
### CLI Utilities
| Tool | Purpose |
| :--- | :--- |
| **fzf** | Fuzzy finder for files, history, processes |
| **bat** | Cat replacement with syntax highlighting and git integration |
| **eza** | Modern ls replacement with icons, git status, tree view |
| **fd** | Fast find alternative with regex and ignore support |
| **ripgrep (rg)** | Ultra-fast recursive grep with .gitignore awareness |
| **zoxide** | Smarter cd with frecency-based directory jumping |
| **btop** | Resource monitor (CPU, memory, disk, network, processes) |
| **dust** | Intuitive disk usage analyzer (du replacement) |
| **duf** | Disk usage/free utility with colored output |
| **glow** | Terminal markdown renderer |
| **jq** | Command-line JSON processor |
### GUI Applications
| Application | Purpose |
| :--- | :--- |
| **Chromium** | Web browser |
| **Obsidian** | Knowledge base and note-taking (Markdown vault) |
| **LibreOffice** | Office suite (Writer, Calc, Impress) |
| **Kdenlive** | Non-linear video editor |
| **OBS Studio** | Streaming and screen recording |
| **Qimgv** | Lightweight image viewer |
| **Qmmp** | Winamp-style music player |
| **Thunar** | Lightweight file manager |
| **Steam** | Gaming platform (Proton compatibility layer) |
| **Lutris** | Gaming launcher for Wine/Proton games |
---
## Agent Operational Directive
> **MANDATORY**: When configuring Omarchy systems, always verify the Hyprland compositor version with `hyprctl version`, check that Wayland session variables are set (`echo $XDG_SESSION_TYPE`), and use `hyprctl reload` rather than restarting the compositor to apply configuration changes non-destructively. Always back up configuration files before modifying them: `cp ~/.config/hypr/hyprland.conf ~/.config/hypr/hyprland.conf.bak`.