halo DocsGitHub

External signals

Push state into widgets from anywhere:

halo trigger music title="Song" artist="Band"
import { externalSignal } from "halo/signals";

const music = externalSignal("music", { initial: { title: "", artist: "" } });
<Text>{() => `${music()?.title} — ${music()?.artist}`}</Text>;

Window managers

Workspace state comes from your window manager the same way: its hooks call halo trigger, and a hydrate query fills the value in on load. The AeroSpace example has the full setup, and the same shape works for yabai or any WM with a CLI and change hooks.

Reference: externalSignal, CLI.