Ryoku
Ryoku is an Arch Linux desktop: a Hyprland compositor, a single Quickshell shell
that draws the bar, the dock, the launcher, the popouts and the widgets, and a
set of Go command-line tools that own the config. This skill is for changing a
running Ryoku system on behalf of its user. It is not for developing Ryoku
itself (editing the source checkout, writing migrations, cutting a release).
When to use this skill
Use it whenever a request would change the desktop or read its state: the bar
layout and widgets, the dock, Hyprland behaviour, themes and wallpaper, keybinds,
idle and lock, plugins, or any ~/.config file Ryoku owns. If you are about to
guess a path or edit a config file under ~/.config, stop and use this skill.
Do not use it to modify the Ryoku source tree, and never treat a shipped file as
a place to store a user's choice.
Read the vault first
A maintained map of THIS machine lives in the Rashin vault at
~/.local/share/ryoku/rashin/. Read it before searching the filesystem or
guessing where anything lives:
AGENTS.md: the entry contract and the vault's own rules.
desktop.md: the map. Every subsystem, the config path that owns it, the
binary that owns it, and how to reload it. Its generated "Bar and dock"
section lists every bar widget id, its visibility key, and the bar and dock
commands. Read this before touching the bar.
system.md, packages.md, user.md, habits.md: hardware, packages, where
this user diverges from the shipped defaults, and this user's directories and
tool stack.
user.md lists the user's own choices; never revert one to a shipped default
without being asked. Write durable notes to memory/, dated notes to
journal/YYYY-MM-DD.md; never edit inside a rashin:generated fence, a reindex
overwrites it.
Topic guides sit beside this file. Read the matching one first:
bar.md: the QS Bar and the dock, their layout model, and the
ryoku-shell bar / ryoku-shell dock commands.
plugins.md: installing, listing, and removing shell plugins
with ryoku plugin, and Ryostore.
Safety rules
Ryoku separates the files it ships from the files you own, so an update can
refresh the base freely while your changes stand. Respect the split:
- Never edit a shipped file in place.
/usr/share/ryoku/ (the packaged
base) and the files Ryoku lays into ~/.config/quickshell/ are re-laid on
every ryoku update (ryoku materialize clobbers every shipped file), so an
edit there is lost on the next update. Reading them is safe and useful.
- A user override goes to the overlay:
~/.config/ryoku/user_edits/, which
mirrors ~/.config. A file there wins at its mirrored path and survives every
update. To change a shipped Hyprland or app config, drop your version at the
mirrored path under user_edits (a fork), or, better, use the dedicated
override file the tool already reads (hypr/user.lua, hypr/settings.lua,
kitty/user.conf, fish/user.fish), which the package never ships and never
touches. ryoku reset <path> drops an overlay file back to the base.
- Prefer a command over a file edit. The tool that owns a setting is its one
writer; hand-editing its store drifts. Ryoku Settings' own state (bar, colours,
launcher, device lighting) lives under
~/.config/ryoku/*.json, written by
their tools (the shell daemon, ryoku-hub, ryogami); do not hand-edit those
JSON stores, drive them through the command or the GUI so one writer stays in
charge.
Command discovery
Ryoku's behaviour lives behind five command-line tools, all self-documenting.
Prefer a command to a file edit; read a command's --help before running it.
| Tool |
Owns |
ryoku |
Updates, rollback, status, reload, materialize, reset, doctor. See docs/cli.md. |
ryoku-shell |
The live shell: the bar, the dock, menus, popouts, and the shell.json settings store (the sole writer of shell.json). |
ryoku-hub |
Ryoku Settings and the Hyprland config it generates (hypr get, hypr matugen set, ...). |
ryogami |
Wallpapers and the colour palette (`ryogami wallpaper set |
ryoku-rashin |
The optional agent OS: the vault, wiring, the dashboard, index, wire. |
ryoku --help # the ryoku CLI surface
ryoku-shell bar catalog # every bar widget, its id, and its settings
ryoku-shell bar list # the live bar, per section, with shown state
ryogami wallpaper --help
To find WHERE a setting is read (which QML file, which key), use prowl-agent
inside the vault's read-only source mirror at
~/.local/share/ryoku/rashin/source/, which indexes the live ~/.config:
cd ~/.local/share/ryoku/rashin/source && prowl-agent search "barPosition"
cd ~/.local/share/ryoku/rashin/source && prowl-agent find barShellStyle
The mirror is read-only and rebuilt on every reindex; never edit files in it,
edit the real path desktop.md names.
Decision framework
When a request would change the system, in order:
- Is there a command for it? Use it. The bar and dock have a full CLI
(
ryoku-shell bar ..., ryoku-shell dock ..., see bar.md); wallpaper has
ryogami wallpaper set; updates have ryoku update.
- Is it a plugin? A shell widget installs from git with
ryoku plugin add <url> --bar, or from Ryostore; see plugins.md. Never
run a plugin's code to install it. A Hyprland compositor plugin (title
bars, cursor motion, key sounds, a .so the compositor loads) is managed
by ryoku-hub hypr plugins list|rebuild|add|remove and Settings >
Plugins; a "version mismatch" after an update means
ryoku-hub hypr plugins rebuild --stale.
- Is it a config edit with no command? Edit the override, never the shipped
file: the tool's own
user.* file, or a fork at the mirrored path under
~/.config/ryoku/user_edits/. Then reload (ryoku reload, or hyprctl reload for Hyprland).
- Is it a theme or wallpaper? Drive it through
ryogami and ryoku-hub,
which own the colour master; never write the palette or theme shadow by hand.
- Is it a package?
ryoku update for the whole system; pacman/yay for one
package.
- Unsure a command exists? Read the tool's
--help, or desktop.md.
Example requests
- "Move the clock to the right" ->
ryoku-shell bar move clock --section right
- "Hide the GPU widget" ->
ryoku-shell bar hide gpu
- "Show the battery widget again" ->
ryoku-shell bar show battery
- "Put the bar at the bottom" ->
ryoku-shell bar position bottom
- "Make the bar islands" ->
ryoku-shell bar form islands
- "Reset the bar to defaults" ->
ryoku-shell bar defaults
- "Open the bar settings" ->
ryoku-shell bar settings
- "Turn the dock off" ->
ryoku-shell dock hide
- "Pin Firefox to the dock" ->
ryoku-shell dock pin firefox
- "Add a weather plugin from GitHub" ->
ryoku plugin add <git-url> --bar
- "List my installed plugins" ->
ryoku plugin list
- "Lock after ten minutes" -> fork
hypr/hypridle.conf into
~/.config/ryoku/user_edits/hypr/hypridle.conf and set the lock listener's
timeout to 600, then ryoku materialize lays the fork live and
pkill -x hypridle; setsid hypridle -c ~/.config/hypr/hypridle.conf &
restarts the idle daemon on it (hypridle reads its config only at start;
hyprctl reload does not reach it)
- "Change my wallpaper" ->
ryogami wallpaper set <path>
- "Next wallpaper" ->
ryogami wallpaper next
- "Update the system" ->
ryoku update
- "Roll back a bad update" ->
ryoku rollback
1---2name: ryoku3description: Customize a Ryoku desktop: an Arch Linux system with a Hyprland compositor and a Quickshell shell (the QS Bar, the dock, widgets, the launcher, and the Hub). Use for end-user requests that touch the desktop or its config. Triggers: Hyprland, window rules, keybinds, monitors, gaps, borders, the bar, the dock, bar widgets, plugins, themes, wallpaper, colours, night light, idle, lock screen, and user-facing ryoku commands (ryoku, ryoku-shell, ryoku-hub, ryogami, ryoku-rashin). Read the vault first; act through commands, not by editing shipped files.4---56# Ryoku78Ryoku is an Arch Linux desktop: a Hyprland compositor, a single Quickshell shell9that draws the bar, the dock, the launcher, the popouts and the widgets, and a10set of Go command-line tools that own the config. This skill is for changing a11running Ryoku system on behalf of its user. It is not for developing Ryoku12itself (editing the source checkout, writing migrations, cutting a release).1314## When to use this skill1516Use it whenever a request would change the desktop or read its state: the bar17layout and widgets, the dock, Hyprland behaviour, themes and wallpaper, keybinds,18idle and lock, plugins, or any `~/.config` file Ryoku owns. If you are about to19guess a path or edit a config file under `~/.config`, stop and use this skill.2021Do not use it to modify the Ryoku source tree, and never treat a shipped file as22a place to store a user's choice.2324## Read the vault first2526A maintained map of THIS machine lives in the Rashin vault at27`~/.local/share/ryoku/rashin/`. Read it before searching the filesystem or28guessing where anything lives:2930- `AGENTS.md`: the entry contract and the vault's own rules.31- `desktop.md`: the map. Every subsystem, the config path that owns it, the32 binary that owns it, and how to reload it. Its generated "Bar and dock"33 section lists every bar widget id, its visibility key, and the bar and dock34 commands. Read this before touching the bar.35- `system.md`, `packages.md`, `user.md`, `habits.md`: hardware, packages, where36 this user diverges from the shipped defaults, and this user's directories and37 tool stack.3839`user.md` lists the user's own choices; never revert one to a shipped default40without being asked. Write durable notes to `memory/`, dated notes to41`journal/YYYY-MM-DD.md`; never edit inside a `rashin:generated` fence, a reindex42overwrites it.4344Topic guides sit beside this file. Read the matching one first:4546- [`bar.md`](bar.md): the QS Bar and the dock, their layout model, and the47 `ryoku-shell bar` / `ryoku-shell dock` commands.48- [`plugins.md`](plugins.md): installing, listing, and removing shell plugins49 with `ryoku plugin`, and Ryostore.5051## Safety rules5253Ryoku separates the files it ships from the files you own, so an update can54refresh the base freely while your changes stand. Respect the split:5556- **Never edit a shipped file in place.** `/usr/share/ryoku/` (the packaged57 base) and the files Ryoku lays into `~/.config/quickshell/` are re-laid on58 every `ryoku update` (`ryoku materialize` clobbers every shipped file), so an59 edit there is lost on the next update. Reading them is safe and useful.60- **A user override goes to the overlay:** `~/.config/ryoku/user_edits/`, which61 mirrors `~/.config`. A file there wins at its mirrored path and survives every62 update. To change a shipped Hyprland or app config, drop your version at the63 mirrored path under `user_edits` (a fork), or, better, use the dedicated64 override file the tool already reads (`hypr/user.lua`, `hypr/settings.lua`,65 `kitty/user.conf`, `fish/user.fish`), which the package never ships and never66 touches. `ryoku reset <path>` drops an overlay file back to the base.67- **Prefer a command over a file edit.** The tool that owns a setting is its one68 writer; hand-editing its store drifts. Ryoku Settings' own state (bar, colours,69 launcher, device lighting) lives under `~/.config/ryoku/*.json`, written by70 their tools (the shell daemon, `ryoku-hub`, `ryogami`); do not hand-edit those71 JSON stores, drive them through the command or the GUI so one writer stays in72 charge.7374## Command discovery7576Ryoku's behaviour lives behind five command-line tools, all self-documenting.77Prefer a command to a file edit; read a command's `--help` before running it.7879| Tool | Owns |80|---|---|81| `ryoku` | Updates, rollback, status, reload, materialize, reset, doctor. See `docs/cli.md`. |82| `ryoku-shell` | The live shell: the bar, the dock, menus, popouts, and the `shell.json` settings store (the sole writer of `shell.json`). |83| `ryoku-hub` | Ryoku Settings and the Hyprland config it generates (`hypr get`, `hypr matugen set`, ...). |84| `ryogami` | Wallpapers and the colour palette (`ryogami wallpaper set|next|random`). |85| `ryoku-rashin` | The optional agent OS: the vault, wiring, the dashboard, `index`, `wire`. |8687```bash88ryoku --help # the ryoku CLI surface89ryoku-shell bar catalog # every bar widget, its id, and its settings90ryoku-shell bar list # the live bar, per section, with shown state91ryogami wallpaper --help92```9394To find WHERE a setting is read (which QML file, which key), use `prowl-agent`95inside the vault's read-only source mirror at96`~/.local/share/ryoku/rashin/source/`, which indexes the live `~/.config`:9798```bash99cd ~/.local/share/ryoku/rashin/source && prowl-agent search "barPosition"100cd ~/.local/share/ryoku/rashin/source && prowl-agent find barShellStyle101```102103The mirror is read-only and rebuilt on every reindex; never edit files in it,104edit the real path `desktop.md` names.105106## Decision framework107108When a request would change the system, in order:1091101. **Is there a command for it?** Use it. The bar and dock have a full CLI111 (`ryoku-shell bar ...`, `ryoku-shell dock ...`, see `bar.md`); wallpaper has112 `ryogami wallpaper set`; updates have `ryoku update`.1132. **Is it a plugin?** A shell widget installs from git with114 `ryoku plugin add <url> --bar`, or from Ryostore; see `plugins.md`. Never115 run a plugin's code to install it. A Hyprland compositor plugin (title116 bars, cursor motion, key sounds, a `.so` the compositor loads) is managed117 by `ryoku-hub hypr plugins list|rebuild|add|remove` and Settings >118 Plugins; a "version mismatch" after an update means119 `ryoku-hub hypr plugins rebuild --stale`.1203. **Is it a config edit with no command?** Edit the override, never the shipped121 file: the tool's own `user.*` file, or a fork at the mirrored path under122 `~/.config/ryoku/user_edits/`. Then reload (`ryoku reload`, or `hyprctl123 reload` for Hyprland).1244. **Is it a theme or wallpaper?** Drive it through `ryogami` and `ryoku-hub`,125 which own the colour master; never write the palette or theme shadow by hand.1265. **Is it a package?** `ryoku update` for the whole system; pacman/yay for one127 package.1286. **Unsure a command exists?** Read the tool's `--help`, or `desktop.md`.129130## Example requests131132- "Move the clock to the right" -> `ryoku-shell bar move clock --section right`133- "Hide the GPU widget" -> `ryoku-shell bar hide gpu`134- "Show the battery widget again" -> `ryoku-shell bar show battery`135- "Put the bar at the bottom" -> `ryoku-shell bar position bottom`136- "Make the bar islands" -> `ryoku-shell bar form islands`137- "Reset the bar to defaults" -> `ryoku-shell bar defaults`138- "Open the bar settings" -> `ryoku-shell bar settings`139- "Turn the dock off" -> `ryoku-shell dock hide`140- "Pin Firefox to the dock" -> `ryoku-shell dock pin firefox`141- "Add a weather plugin from GitHub" -> `ryoku plugin add <git-url> --bar`142- "List my installed plugins" -> `ryoku plugin list`143- "Lock after ten minutes" -> fork `hypr/hypridle.conf` into144 `~/.config/ryoku/user_edits/hypr/hypridle.conf` and set the lock `listener`'s145 `timeout` to `600`, then `ryoku materialize` lays the fork live and146 `pkill -x hypridle; setsid hypridle -c ~/.config/hypr/hypridle.conf &`147 restarts the idle daemon on it (hypridle reads its config only at start;148 `hyprctl reload` does not reach it)149- "Change my wallpaper" -> `ryogami wallpaper set <path>`150- "Next wallpaper" -> `ryogami wallpaper next`151- "Update the system" -> `ryoku update`152- "Roll back a bad update" -> `ryoku rollback`