What Ryoku calls a plugin today
A Ryoku plugin can be one of three things:- a shell surface with a clear owner and lifecycle;
- a
ryoku-*command family for install/update/service behavior; - a pair of config/state values written to
~/.config/ryokuor~/.config/ryoku-shell.
Current plugin lanes
- Network and identity
- OpenVPN profile import, profile connect/disconnect, and tunnel state.
- Tailscale install, enablement, and service-state surfaces.
- VPN/identity state in service-backed shell surfaces and lock-adjacent indicators.
- Capture
- Gradia-based full and region capture.
- Clipboard handoff and quick open.
- Optional preview/callouts from capture surfaces.
- Security-adjacent tooling
- Policy and hardening toggles that live with shell modules and command helpers.
- In-shell polkit prompts for privilege actions.
- Optional packages for users who need this lane in their workflow.
- Developer and media
- Terminal, files, editor launchers, wallpaper tools, launcher actions, and media helpers.
- Git and media helper flows where they are part of daily work.
- Hardware and power
- Battery and charge monitoring surfaces.
- Notification controls, profile toggles, quick system toggles.
How plugin settings are wired
Settings do not own side effects by themselves. They describe desired state and pass it into a typed shell surface orryoku-* command flow.
- Shell setting pages mutate typed config in
~/.config/ryoku/shell.json. - Shared behavior sits in core commands and services.
- Shell modules consume that state through services/IPC, then update their appearance and controls.
Not in a plugin lane (yet)
- Legacy desktop-era utilities that still exist but are not central to this release.
- Historical artifacts from earlier prototypes that are now migration-only.

