phosphor-registry

Factory-by-name registry and plugin loader for shell extension seams.

Generalises the per-domain registry pattern into one Registry<T> template the shell instantiates once per UI seam: bar widgets, control-center tiles, launcher providers, OSDs, and desktop widgets. Built-ins register explicitly at the composition root, with no static-init magic. It also owns the plugin path, scanning .so plus manifest.json bundles under ~/.local/share/phosphor/plugins/, validating their ABI, and hot-reloading them on disk change.

Full API →

Key types

Registry<T>
Template registry of T factories keyed by T::id(), one per composition root.
IFactoryBase
Common base for the factory families; declares id(), displayName(), capabilities().
PluginLoader
Scans a plugin root, loads each .so plus manifest, and hot-reloads on disk change.
Manifest
POD mirror of manifest.json; parse() validates ABI version and required fields.

Dependencies

See also

References