Covers the rest of what agents use hyprctl for on Hyprland, gives every MCP tool a typed result so Code Mode clients can chain them in a script, and fills in CPU, Intel GPU and system power on Linux.
Hyprland
- Read any config option with
HYPRLAND_GET_OPTION: its type, its value, and whether the config sets it. Names take dots or colons, such asgeneral.col.active_borderorgeneral:layout(#4510) - Let
HYPRLAND_SET_OPTIONset any option by its type, including floats, text, vec2, css and gradients, on Lua and classic configs. The options inhyprland.optionsstill only take a number of 0 or more (#4510) - Read and move the cursor with
HYPRLAND_GET_CURSOR_POSITIONandHYPRLAND_MOVE_CURSOR, read the end of Hyprland's log withHYPRLAND_GET_LOG, and send custom events withHYPRLAND_SEND_EVENT(#4510) - Run a command, any dispatch or a line of Lua with
HYPRLAND_EXEC,HYPRLAND_DISPATCH_RAWandHYPRLAND_EVAL. These can do anything you can, so they only run with the newdesktop.hyprlandCodesetting on, which is off by default. See running code (#4510)
MCP
- Return typed structured output from every tool, with an output schema, alongside the same JSON as text. Actions return
{ "success": true, "message": "..." }, andsystem_bridge_list_commandsandsystem_bridge_list_command_prefabsnow wrap their lists ascommandsandprefabs - Clients with a Code Mode, such as OpenCode, type each tool from those schemas, so an agent can read data and act on it in one script rather than one tool call at a time. See results and Code Mode
- Add
system_bridge_hyprland_get_option,system_bridge_hyprland_get_cursor_position,system_bridge_hyprland_move_cursor,system_bridge_hyprland_get_log,system_bridge_hyprland_send_event,system_bridge_hyprland_exec,system_bridge_hyprland_dispatch_rawandsystem_bridge_hyprland_eval, and letsystem_bridge_hyprland_set_optiontake any option (#4510)
Linux
- Ship a udev rule,
60-system-bridge-rapl.rules, in the Arch,.deband.rpmpackages, which makes the RAPL energy counters readable, so CPU power is no longer empty without root (#4503). It has a trade-off; see power readings on Linux to opt out or add it yourself with mise, the archive or Flatpak - Count each RAPL package once, so CPU power isn't doubled where
intel-raplandintel-rapl-mmioboth report it (#4503) - Read integrated Intel GPU power from RAPL (#4502)
- Fall back to RAPL's platform zone, then to the battery's drain while unplugged, for system power on laptops and machines without a Corsair PSU (#4504)
CLI
- Add
hyprland optionto print any option as well as set it,hyprland cursor,log,event,exec,rawandeval(#4510)
Web client
- Add a Tools card to the Hyprland section, to read and set options, read and move the cursor, read the log, send events and run code (#4510)
- Add a switch for Hyprland code on the Desktop settings page (#4510)
Connector
- Add the new Hyprland actions and replies, and the
hyprlandCodesetting, to the Python and TypeScript connectors (#4510)
Docs
- Document the new Hyprland actions, options, the RAPL udev rule, and MCP structured results and Code Mode
Moved
system_bridge_list_commandsandsystem_bridge_list_command_prefabsreturn an object, with the list ascommandsorprefabs, rather than a bare list
Maintenance
- Attest the Home Assistant dashboard on its releases, and publish its files from
devwhen mirroring a release by hand
Full Changelog: 5.21.1...5.22.0