Shells are components which are responsible for composing UI. There are three shells:
BaseShelldisplays UI associated with a device, prior to a session being started.
SessionShelldisplays the UI associated with a given session (e.g. list of stories, settings UI).
StoryShelldisplays a single story (i.e. the composition of the modules in a story, each story gets its own
A shell is given access to two services provided by the modular framework in its incoming namespace:
fuchsia.modular.ComponentContextgives the agent access to functionality which is shared across components run under the modular framework (e.g. modules, shells, agents).
fuchsia.modular.[Base,Session,Story]ShellContextgives access to shell specific functionality for each type of shell, respectively.
A shell is expected to provide two services to the modular framework in its outgoing namespace:
fuchsia.modular.[Base,Session,Story]Shellthe modular framework uses to communicate requests to display UI.
fuchsia.modular.Lifecycleallows the framework to signal the shell to terminate gracefully.
The three shells have varying lifecycles:
BaseShellruns between the time
basemgrstarts up until a session has been established, and on demand thereafter to faciliate authentication requests.
SessionShellruns for the duration of a session.
StoryShellruns while its associated story is running.