Update Omarchy skill for Quattro's Lua configuration
The skill still described pre-Quattro .conf files and workflows, sending agents to inactive config files and stale commands. Now covers the Lua config layout, o.bind/hl.unbind/hl.monitor forms, .d hook directories with omarchy hook install, plugin cloning, and corrected command routes. Distilled from #6310. Co-Authored-By: ssupt <149246609+ssupt@users.noreply.github.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
ssupt
Claude Fable 5
parent
17c8af3f14
commit
1feb0250b4
@@ -126,31 +126,35 @@ Run `omarchy --help` for the full list. The most common groups:
|
|||||||
| Group | Purpose | Example |
|
| Group | Purpose | Example |
|
||||||
|-------|---------|---------|
|
|-------|---------|---------|
|
||||||
| `omarchy refresh` | Reset config to defaults (backs up first) | `omarchy refresh shell` |
|
| `omarchy refresh` | Reset config to defaults (backs up first) | `omarchy refresh shell` |
|
||||||
| `omarchy restart` | Restart a service/app | `omarchy-restart-shell` |
|
| `omarchy restart` | Restart a service/app | `omarchy restart shell` |
|
||||||
| `omarchy toggle` | Toggle feature on/off | `omarchy toggle nightlight` |
|
| `omarchy toggle` | Toggle feature on/off | `omarchy toggle nightlight` |
|
||||||
| `omarchy theme` | Theme management | `omarchy theme set <name>` |
|
| `omarchy theme` | Theme management | `omarchy theme set <name>` |
|
||||||
|
| `omarchy bar` | Bar layout and widgets | `omarchy bar plugin move omarchy.clock --section right` |
|
||||||
|
| `omarchy plugin` | Manage/clone shell plugins | `omarchy plugin clone omarchy.clock local.clock --replace` |
|
||||||
|
| `omarchy hook` | Install automation hooks | `omarchy hook install theme-set <script>` |
|
||||||
| `omarchy install` | Install optional software / packages | `omarchy install docker dbs` |
|
| `omarchy install` | Install optional software / packages | `omarchy install docker dbs` |
|
||||||
| `omarchy launch` | Launch apps | `omarchy launch browser` |
|
| `omarchy launch` | Launch apps | `omarchy launch browser` |
|
||||||
| `omarchy capture` | Screenshots and recordings | `omarchy capture screenshot` |
|
| `omarchy capture` | Screenshots and recordings | `omarchy capture screenshot` |
|
||||||
| `omarchy reminder` | Desktop notification reminders | `omarchy reminder 15 "Pickup Jack"` |
|
| `omarchy reminder` | Desktop notification reminders | `omarchy reminder 15 "Pickup Jack"` |
|
||||||
| `omarchy pkg` | Package management | `omarchy pkg install <pkg>` |
|
| `omarchy pkg` | Package management | `omarchy pkg add <pkg>` |
|
||||||
| `omarchy setup` | Initial setup tasks | `omarchy setup fingerprint` |
|
| `omarchy setup` | Interactive setup wizards | `omarchy setup security fingerprint` |
|
||||||
| `omarchy update` | System updates | `omarchy update` |
|
| `omarchy update` | System updates | `omarchy update` |
|
||||||
|
|
||||||
## Configuration Locations
|
## Configuration Locations
|
||||||
|
|
||||||
### Hyprland (Window Manager)
|
### Hyprland (Window Manager)
|
||||||
|
|
||||||
|
Omarchy configures Hyprland in Lua. User files are loaded after Omarchy's
|
||||||
|
defaults, so overrides go here:
|
||||||
|
|
||||||
```
|
```
|
||||||
~/.config/hypr/
|
~/.config/hypr/
|
||||||
├── hyprland.conf # Main config (sources others)
|
├── hyprland.lua # Main config (loads Omarchy defaults, then user files)
|
||||||
├── bindings.conf # Keybindings
|
├── bindings.lua # Keybindings
|
||||||
├── monitors.conf # Display configuration
|
├── monitors.lua # Display configuration
|
||||||
├── input.conf # Keyboard/mouse settings
|
├── input.lua # Keyboard/mouse settings
|
||||||
├── looknfeel.conf # Appearance (gaps, borders, animations)
|
├── looknfeel.lua # Appearance (gaps, borders, animations)
|
||||||
├── envs.conf # Environment variables
|
├── autostart.lua # Startup applications
|
||||||
├── autostart.conf # Startup applications
|
|
||||||
├── shell.json # Omarchy shell, bar, idle, and lock settings
|
|
||||||
└── hyprsunset.conf # Night light / blue light filter
|
└── hyprsunset.conf # Night light / blue light filter
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -167,14 +171,24 @@ The bar, notification daemon, settings panel, and assorted overlays all run
|
|||||||
inside a single long-running Quickshell process (`omarchy-shell`).
|
inside a single long-running Quickshell process (`omarchy-shell`).
|
||||||
|
|
||||||
```
|
```
|
||||||
~/.config/omarchy/shell.json # User overrides: bar.position, bar.layout, plugins[]
|
~/.config/omarchy/shell.json # User overrides: bar, plugins, idle
|
||||||
$OMARCHY_PATH/config/omarchy/shell.json # Canonical defaults
|
~/.config/omarchy/plugins/<plugin-id>/ # User-owned shell plugins
|
||||||
|
$OMARCHY_PATH/config/omarchy/shell.json # Canonical defaults
|
||||||
```
|
```
|
||||||
|
|
||||||
The shell hot-reloads `shell.json` on save — no restart needed for layout
|
The shell hot-reloads `shell.json` on save — no restart needed for layout
|
||||||
changes. For more invasive changes (new plugin, packaged update):
|
changes. `idle.screensaver` and `idle.lock` are seconds since user idle began.
|
||||||
|
|
||||||
**Commands:** `omarchy-restart-shell`, `omarchy refresh shell`
|
To customize a built-in bar widget, never edit `$OMARCHY_PATH/shell/plugins/`.
|
||||||
|
Clone it into the user plugin directory instead:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
omarchy plugin clone omarchy.workspaces local.workspaces --replace
|
||||||
|
# Edit ~/.config/omarchy/plugins/local.workspaces/, then:
|
||||||
|
omarchy plugin rescan
|
||||||
|
```
|
||||||
|
|
||||||
|
**Commands:** `omarchy restart shell`, `omarchy refresh shell`
|
||||||
|
|
||||||
### Terminals
|
### Terminals
|
||||||
|
|
||||||
@@ -205,10 +219,10 @@ For simple changes, edit files in `~/.config/`:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 1. Read current config
|
# 1. Read current config
|
||||||
cat ~/.config/hypr/bindings.conf
|
cat ~/.config/hypr/bindings.lua
|
||||||
|
|
||||||
# 2. Backup before changes
|
# 2. Backup before changes
|
||||||
cp ~/.config/hypr/bindings.conf ~/.config/hypr/bindings.conf.bak.$(date +%s)
|
cp ~/.config/hypr/bindings.lua ~/.config/hypr/bindings.lua.bak.$(date +%s)
|
||||||
|
|
||||||
# 3. Make changes with Edit tool
|
# 3. Make changes with Edit tool
|
||||||
|
|
||||||
@@ -228,17 +242,22 @@ cp ~/.config/hypr/bindings.conf ~/.config/hypr/bindings.conf.bak.$(date +%s)
|
|||||||
|
|
||||||
### Pattern 3: Use Hooks for Automation
|
### Pattern 3: Use Hooks for Automation
|
||||||
|
|
||||||
Create scripts in `~/.config/omarchy/hooks/` to run automatically on events:
|
Hooks live in `~/.config/omarchy/hooks/<name>.d/` — one directory per event,
|
||||||
|
holding any number of independent scripts. Install with
|
||||||
|
`omarchy hook install <name> <script>` (copies the script in and makes it
|
||||||
|
executable):
|
||||||
|
|
||||||
```bash
|
```
|
||||||
# Available hooks (see samples in ~/.config/omarchy/hooks/):
|
|
||||||
~/.config/omarchy/hooks/
|
~/.config/omarchy/hooks/
|
||||||
├── theme-set # Runs after theme change (receives theme name as $1)
|
├── battery-low.d/ # Low battery (percentage in $1)
|
||||||
├── font-set # Runs after font change
|
├── font-set.d/ # After font change (font name in $1)
|
||||||
└── post-update # Runs after `omarchy update`
|
├── post-boot.d/ # After the desktop starts
|
||||||
|
├── post-update.d/ # After `omarchy update`
|
||||||
|
├── pre-refresh-pacman.d/ # Before package sync during update
|
||||||
|
└── theme-set.d/ # After theme change (theme slug in $1)
|
||||||
```
|
```
|
||||||
|
|
||||||
Example hook (`~/.config/omarchy/hooks/theme-set`):
|
Example hook script:
|
||||||
```bash
|
```bash
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
THEME_NAME=$1
|
THEME_NAME=$1
|
||||||
@@ -268,18 +287,17 @@ omarchy refresh hyprland
|
|||||||
```bash
|
```bash
|
||||||
omarchy theme list # Show available themes
|
omarchy theme list # Show available themes
|
||||||
omarchy theme current # Show current theme
|
omarchy theme current # Show current theme
|
||||||
omarchy theme set <name> # Apply theme (use "Tokyo Night" not "tokyo-night")
|
omarchy theme set <name> # Apply theme ("Tokyo Night" and "tokyo-night" both work)
|
||||||
omarchy theme bg next # Cycle background
|
omarchy theme bg next # Cycle background
|
||||||
omarchy theme install <url> # Install from git repo
|
omarchy theme install <url> # Install from git repo
|
||||||
```
|
```
|
||||||
|
|
||||||
### Keybindings
|
### Keybindings
|
||||||
|
|
||||||
Edit `~/.config/hypr/bindings.conf`. Format:
|
Edit `~/.config/hypr/bindings.lua`. Format:
|
||||||
```
|
```lua
|
||||||
bind = SUPER, Return, exec, xdg-terminal-exec
|
o.bind("SUPER + SHIFT + R", "SSH", "alacritty -e ssh your-server")
|
||||||
bind = SUPER, Q, killactive
|
o.bind("SUPER + B", "Browser", { launch = "chromium" }) -- launch wraps with uwsm-app
|
||||||
bind = SUPER SHIFT, E, exit
|
|
||||||
```
|
```
|
||||||
|
|
||||||
View current bindings: `omarchy menu keybindings --print`
|
View current bindings: `omarchy menu keybindings --print`
|
||||||
@@ -287,39 +305,39 @@ View current bindings: `omarchy menu keybindings --print`
|
|||||||
**IMPORTANT: When re-binding an existing key:**
|
**IMPORTANT: When re-binding an existing key:**
|
||||||
|
|
||||||
1. First check existing bindings: `omarchy menu keybindings --print`
|
1. First check existing bindings: `omarchy menu keybindings --print`
|
||||||
2. If the key is already bound, you MUST add an `unbind` directive BEFORE your new `bind`
|
2. If the key is already bound, you MUST call `hl.unbind(...)` BEFORE the new `o.bind(...)`
|
||||||
3. Inform the user what the key was previously bound to
|
3. Inform the user what the key was previously bound to
|
||||||
|
|
||||||
Example - rebinding SUPER+F (which is bound to fullscreen by default):
|
Example - rebinding SUPER+F (which is bound to fullscreen by default):
|
||||||
```
|
```lua
|
||||||
# Unbind existing SUPER+F (was: fullscreen)
|
-- Unbind existing SUPER+F (was: fullscreen)
|
||||||
unbind = SUPER, F
|
hl.unbind("SUPER + F")
|
||||||
# New binding for file manager
|
-- New binding for file manager
|
||||||
bind = SUPER, F, exec, nautilus
|
o.bind("SUPER + F", "File manager", { launch = "nautilus" })
|
||||||
```
|
```
|
||||||
|
|
||||||
Always tell the user: "Note: SUPER+F was previously bound to fullscreen. I've added an unbind directive to override it."
|
Always tell the user: "Note: SUPER+F was previously bound to fullscreen. I've added an unbind to override it."
|
||||||
|
|
||||||
### Display/Monitors
|
### Display/Monitors
|
||||||
|
|
||||||
Edit `~/.config/hypr/monitors.conf`. Format:
|
Edit `~/.config/hypr/monitors.lua`. Format:
|
||||||
```
|
```lua
|
||||||
monitor = eDP-1, 1920x1080@60, 0x0, 1
|
hl.monitor({ output = "eDP-1", mode = "1920x1080@60", position = "0x0", scale = 1 })
|
||||||
monitor = HDMI-A-1, 2560x1440@144, 1920x0, 1
|
hl.monitor({ output = "HDMI-A-1", mode = "2560x1440@144", position = "1920x0", scale = 1 })
|
||||||
```
|
```
|
||||||
|
|
||||||
List monitors: `hyprctl monitors`
|
List monitors and supported modes: `hyprctl monitors all`
|
||||||
|
|
||||||
### Window Rules
|
### Window Rules
|
||||||
|
|
||||||
**CRITICAL: Hyprland window rules syntax changes frequently between versions.**
|
**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:
|
Before writing ANY window rules, you MUST fetch the current documentation from the official Hyprland wiki:
|
||||||
- https://github.com/hyprwm/hyprland-wiki/blob/main/content/Configuring/Window-Rules.md
|
- https://wiki.hypr.land/Configuring/Window-Rules/
|
||||||
|
|
||||||
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.
|
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.
|
Window rules go in `~/.config/hypr/hyprland.lua` or a required Lua module. Prefer Omarchy's `o.window(match, rules)` helper — see examples in `$OMARCHY_PATH/default/hypr/windows.lua`.
|
||||||
|
|
||||||
### Fonts
|
### Fonts
|
||||||
|
|
||||||
@@ -348,9 +366,6 @@ omarchy system reboot # Reboot
|
|||||||
# Get debug information (ALWAYS use these flags to avoid interactive prompts)
|
# Get debug information (ALWAYS use these flags to avoid interactive prompts)
|
||||||
omarchy debug --no-sudo --print
|
omarchy debug --no-sudo --print
|
||||||
|
|
||||||
# Upload logs for support
|
|
||||||
omarchy upload log
|
|
||||||
|
|
||||||
# Reset specific config to defaults
|
# Reset specific config to defaults
|
||||||
omarchy refresh <app>
|
omarchy refresh <app>
|
||||||
|
|
||||||
@@ -370,9 +385,10 @@ When user requests system changes:
|
|||||||
1. **Is it a stock omarchy command?** Use it directly
|
1. **Is it a stock omarchy command?** Use it directly
|
||||||
2. **Is it a config edit?** Edit in `~/.config/`, never `/usr/share/omarchy/`
|
2. **Is it a config edit?** Edit in `~/.config/`, never `/usr/share/omarchy/`
|
||||||
3. **Is it a theme customization?** Create a NEW custom theme directory
|
3. **Is it a theme customization?** Create a NEW custom theme directory
|
||||||
4. **Is it automation?** Use hooks in `~/.config/omarchy/hooks/`
|
4. **Is it automation?** Use `omarchy hook install` and the hook `.d` directories
|
||||||
5. **Is it a package install?** Use `omarchy pkg add <pkgs...>` (or `omarchy pkg aur add <pkgs...>` for AUR-only packages)
|
5. **Is it a package install?** Use `omarchy pkg add <pkgs...>` (or `omarchy pkg aur add <pkgs...>` for AUR-only packages)
|
||||||
6. **Unsure if command exists?** Run `omarchy commands` (or `omarchy <group> --help` for one group)
|
6. **Is it built-in shell/plugin code?** Clone it with `omarchy plugin clone`; never edit the packaged copy
|
||||||
|
7. **Unsure if command exists?** Run `omarchy commands` (or `omarchy <group> --help` for one group)
|
||||||
|
|
||||||
### Reminder Requests
|
### Reminder Requests
|
||||||
|
|
||||||
@@ -395,13 +411,15 @@ This skill intentionally does not cover Omarchy source development. Do not use t
|
|||||||
## Example Requests
|
## Example Requests
|
||||||
|
|
||||||
- "Change my theme to catppuccin" -> `omarchy theme set catppuccin`
|
- "Change my theme to catppuccin" -> `omarchy theme set catppuccin`
|
||||||
- "Add a keybinding for Super+E to open file manager" -> Check existing bindings first, add `unbind` if needed, then add `bind` in `~/.config/hypr/bindings.conf`
|
- "Add a keybinding for Super+E to open file manager" -> Check existing bindings first, call `hl.unbind` if needed, then `o.bind` in `~/.config/hypr/bindings.lua`
|
||||||
- "Configure my external monitor" -> Edit `~/.config/hypr/monitors.conf`
|
- "Configure my external monitor" -> Edit `~/.config/hypr/monitors.lua`
|
||||||
- "Make the window gaps smaller" -> Edit `~/.config/hypr/looknfeel.conf`
|
- "Make the window gaps smaller" -> Edit `~/.config/hypr/looknfeel.lua`
|
||||||
- "Set up night light to turn on at sunset" -> `omarchy toggle nightlight` or edit `~/.config/hypr/hyprsunset.conf`
|
- "Set up night light to turn on at sunset" -> `omarchy toggle nightlight` or edit `~/.config/hypr/hyprsunset.conf`
|
||||||
- "Set a reminder to pickup jack in 15 minutes" -> `omarchy reminder 15 "Pickup Jack"`
|
- "Set a reminder to pickup jack in 15 minutes" -> `omarchy reminder 15 "Pickup Jack"`
|
||||||
- "Show my reminders" -> `omarchy reminder show`
|
- "Show my reminders" -> `omarchy reminder show`
|
||||||
- "Clear all reminders" -> `omarchy reminder clear`
|
- "Clear all reminders" -> `omarchy reminder clear`
|
||||||
- "Customize the catppuccin theme colors" -> Create `~/.config/omarchy/themes/catppuccin-custom/` by copying from stock, then edit
|
- "Customize the catppuccin theme colors" -> Create `~/.config/omarchy/themes/catppuccin-custom/` by copying from stock, then edit
|
||||||
- "Run a script every time I change themes" -> Create `~/.config/omarchy/hooks/theme-set`
|
- "Run a script every time I change themes" -> Install it with `omarchy hook install theme-set <script>`
|
||||||
|
- "Change how workspace labels are rendered" -> Clone `omarchy.workspaces` to a user plugin with `--replace`, then edit the clone
|
||||||
|
- "Lock after ten minutes" -> Set `idle.lock` to `600` in `~/.config/omarchy/shell.json`
|
||||||
- "Reset shell/bar to defaults" -> `omarchy refresh shell`
|
- "Reset shell/bar to defaults" -> `omarchy refresh shell`
|
||||||
|
|||||||
Reference in New Issue
Block a user