| name | solace |
| description | REQUIRED for end-user customization of Linux desktop, window manager, or system config. Use when editing ~/.config/hypr/, ~/.config/waybar/, ~/.config/walker/, ~/.config/alacritty/, ~/.config/foot/, ~/.config/kitty/, ~/.config/ghostty/, ~/.config/mako/, or ~/.config/solace/. Triggers: Hyprland, window rules, animations, keybindings, monitors, gaps, borders, blur, opacity, waybar, walker, terminal config, themes, wallpaper, night light, idle, lock screen, screenshots, reminders, layer rules, workspace settings, display config, and user-facing solace commands. Excludes Solace source development in ~/.local/share/solace/ and `solace dev` workflows.
|
Solace Skill
Manage Solace 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 Solace source code.
When This Skill MUST Be Used
ALWAYS invoke this skill for end-user requests involving ANY of these:
- Editing ANY file in
~/.config/hypr/ (window rules, animations, keybindings, monitors, etc.)
- Editing ANY file in
~/.config/waybar/, ~/.config/walker/, ~/.config/mako/
- Editing terminal configs (alacritty, foot, kitty, ghostty)
- Editing ANY file in
~/.config/solace/
- Window behavior, animations, opacity, blur, gaps, borders
- Layer rules, workspace settings, display/monitor configuration
- Themes, wallpapers, fonts, appearance changes
- User-facing
solace commands (solace theme ..., solace refresh ..., solace restart ..., etc.)
- Screenshots, screen recording, reminders, 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.
Do NOT use this skill for Solace development tasks (editing files in ~/.local/share/solace/, creating migrations, or running solace dev ... workflows).
Critical Safety Rules
For end-user customization tasks, NEVER modify anything in ~/.local/share/solace/ - but READING is safe and encouraged.
This directory contains Solace's source files managed by git. Any changes will be:
- Lost on next
solace update
- Cause conflicts with upstream
- Break the system's update mechanism
~/.local/share/solace/ # 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/solace/ is SAFE and useful - do it freely to:
- Understand how solace commands work:
solace theme set --help or cat $(which solace-theme-set)
- See default configs before customizing:
cat ~/.local/share/solace/config/waybar/config.jsonc
- Check stock theme files to copy for customization
- Reference default hyprland settings:
cat ~/.local/share/solace/default/hypr/*
Always use these safe locations instead:
~/.config/ - User configuration (safe to edit)
~/.config/solace/themes/<custom-name>/ - Custom themes (must be real directories)
~/.config/solace/hooks/ - Custom automation hooks
If the request is to develop Solace itself, this skill is out of scope. Follow repository development instructions instead of this skill.
System Architecture
Solace 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/ |
Command Discovery
Solace ships a single solace CLI that dispatches to all solace-* binaries via solace <group> <action>. Always prefer this form — it is self-documenting and stable. The underlying solace-* binaries still exist on PATH and remain safe to read for source.
solace commands
solace theme --help
solace refresh --help
solace restart --help
solace theme set --help
solace commands --json
cat $(which solace-theme-set)
Command Groups
Run solace --help for the full list. The most common groups:
| Group | Purpose | Example |
|---|
solace refresh | Reset config to defaults (backs up first) | solace refresh waybar |
solace restart | Restart a service/app | solace restart waybar |
solace toggle | Toggle feature on/off | solace toggle nightlight |
solace theme | Theme management | solace theme set <name> |
solace install | Install optional software / packages | solace install docker dbs |
solace launch | Launch apps | solace launch browser |
solace capture | Screenshots and recordings | solace capture screenshot |
solace reminder | Desktop notification reminders | solace reminder 15 "Pickup Jack" |
solace pkg | Package management | solace pkg install <pkg> |
solace setup | Initial setup tasks | solace setup fingerprint |
solace update | System updates | solace update |
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 filter
Key behaviors:
- Hyprland auto-reloads on config save (no restart needed for most changes)
- Use
hyprctl reload to force reload
- After ANY Hyprland config change, validate with
hyprctl reload followed by hyprctl configerrors
- If
hyprctl configerrors reports errors, address them and rerun validation until clean or until a real blocker is identified
- Use
solace refresh hyprland to reset to defaults
Waybar (Status Bar)
~/.config/waybar/
├── config.jsonc # Bar layout and modules (JSONC format)
└── style.css # Styling
Waybar does NOT auto-reload. You MUST run solace restart waybar after any config changes.
Commands: solace restart waybar, solace refresh waybar, solace toggle waybar
Terminals
~/.config/alacritty/alacritty.toml
~/.config/foot/foot.ini
~/.config/kitty/kitty.conf
~/.config/ghostty/config
Command: solace restart terminal
Other Configs
| 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 |
Safe Customization Patterns
Pattern 1: Edit User Config Directly
For simple changes, edit files in ~/.config/:
cat ~/.config/hypr/bindings.conf
cp ~/.config/hypr/bindings.conf ~/.config/hypr/bindings.conf.bak.$(date +%s)
Pattern 2: Make a new theme
- Create a directory under ~/.config/solace/themes.
- See how an existing theme is done via ~/.local/share/solace/themes/catppuccin.
- Download a matching background (or several) from the internet and put them in ~/.config/solace/themes/[name-of-new-theme]
- When done with the theme, run
solace theme set "Name of new theme"
Pattern 3: Use Hooks for Automation
Create scripts in ~/.config/solace/hooks/ to run automatically on events:
~/.config/solace/hooks/
├── theme-set
├── font-set
└── post-update
Example hook (~/.config/solace/hooks/theme-set):
#!/bin/bash
THEME_NAME=$1
echo "Theme changed to: $THEME_NAME"
Pattern 4: Reset to Defaults -- ALWAYS SEEK USER CONFIRMATION BEFORE RUNNING
When customizations go wrong:
solace refresh waybar
solace refresh hyprland
Common Tasks
Themes
solace theme list
solace theme current
solace theme set <name>
solace theme bg next
solace theme install <url>
Keybindings
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: solace menu keybindings --print
IMPORTANT: When re-binding an existing key:
- First check existing bindings:
solace menu keybindings --print
- If the key is already bound, you MUST add an
unbind directive BEFORE your new bind
- 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, nautilus
Always tell the user: "Note: SUPER+F was previously bound to fullscreen. I've added an unbind directive to override it."
Display/Monitors
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
Window 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 ~/.config/hypr/hyprland.conf or a sourced file. Always verify the current syntax from the wiki first.
Fonts
solace font list
solace font current
solace font set <name>
System
solace update
solace version
solace debug --no-sudo --print
solace system lock
solace system shutdown
solace system reboot
IMPORTANT: Always run solace debug with --no-sudo --print flags to avoid interactive sudo prompts that will hang the terminal.
Troubleshooting
solace debug --no-sudo --print
solace upload log
solace refresh <app>
solace refresh config <config-file>
solace reinstall
Decision Framework
When user requests system changes:
- Is it a stock solace command? Use it directly
- Is it a config edit? Edit in
~/.config/, never ~/.local/share/solace/
- Is it a theme customization? Create a NEW custom theme directory
- Is it automation? Use hooks in
~/.config/solace/hooks/
- Is it a package install? Use
solace pkg add <pkgs...> (or solace pkg aur add <pkgs...> for AUR-only packages)
- Unsure if command exists? Run
solace commands (or solace <group> --help for one group)
Reminder Requests
When the user asks to set a reminder, use solace reminder <minutes> [message] directly. Convert natural language durations to minutes and title-case short reminder labels when appropriate.
solace reminder 15 "Pickup Jack"
solace reminder 60 "Check laundry"
solace reminder show
solace reminder clear
Out of Scope
This skill intentionally does not cover Solace source development. Do not use this skill for:
- Editing files in
~/.local/share/solace/ (bin/, config/, default/, themes/, migrations/, etc.)
- Creating or editing migrations
- Running
solace dev ... commands
Example Requests
- "Change my theme to catppuccin" ->
solace 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
- "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" ->
solace toggle nightlight or edit ~/.config/hypr/hyprsunset.conf
- "Set a reminder to pickup jack in 15 minutes" ->
solace reminder 15 "Pickup Jack"
- "Show my reminders" ->
solace reminder show
- "Clear all reminders" ->
solace reminder clear
- "Customize the catppuccin theme colors" -> Create
~/.config/solace/themes/catppuccin-custom/ by copying from stock, then edit
- "Run a script every time I change themes" -> Create
~/.config/solace/hooks/theme-set
- "Reset waybar to defaults" ->
solace refresh waybar