DEPRECATION WARNING: The Modular framework is being deprecated in favor of the Session Framework.
To configure the modular framework, you will need to create a JSON file defining the required configurations for basemgr and sessionmgr as detailed below. The configuration file should be packaged via the build rule modular_config, which will validate your file against a schema. You must then include the modular_config() target in the product's base packages.
The file may contain (non-standard JSON) C-style comments (/* block */ and // inline).
The fields used in the startup configuration depend on whether a session launcher component is specified in the basemgr.session_launcher field.
If basemgr.session is present, all other fields except for basemgr.enable_cobalt are ignored, and the session launcher component is responsible for instructing basemgr to launch a session with a complete configuration file.
// Fields not specified here are ignored.
{
"basemgr": {
"enable_cobalt": false,
"session_launcher": {
"url": "fuchsia-pkg://fuchsia.com/custom_session#meta/custom_session.cmx",
"args": [ "--foo", "--bar" ]
}
}
}
{
/* This is a block comment.
Comments are ignored. */
// This is an inline comment. Comments are ignored.
"basemgr": {
"enable_cobalt": false,
"use_session_shell_for_story_shell_factory": true,
"base_shell": {
"url": "fuchsia-pkg://fuchsia.com/auto_login_base_shell#meta/auto_login_base_shell.cmx",
},
"session_shells": [
{
"url": "fuchsia-pkg://fuchsia.com/dev_session_shell#meta/dev_session_shell.cmx",
"display_usage": "near",
"screen_height": 50.0,
"screen_width": 100.0
}
]
},
"sessionmgr": {
"startup_agents": [
"fuchsia-pkg://fuchsia.com/startup_agent#meta/startup_agent.cmx"
],
"session_agents": [
"fuchsia-pkg://fuchsia.com/session_agent#meta/session_agent.cmx"
],
"component_args": [
{
"uri": "fuchsia-pkg://fuchsia.com/startup_agent#meta/startup_agent.cmx",
"args": [ "--foo", "--bar=true" ]
}
],
"agent_service_index": [
{
"service_name": "fuchsia.modular.SomeServiceName",
"agent_url": "fuchsia-pkg://fuchsia.com/some_agent#meta/some_agent.cmx"
}
],
"restart_session_on_agent_crash": [
"fuchsia-pkg://fuchsia.com/some_agent#meta/some_agent.cmx"
]
}
}
base_shell object (optional)base_shell with use_random_session_id flagurl: string (optional)fuchsia-pkg://fuchsia.com/auto_login_base_shell#meta/auto_login_base_shell.cmxkeep_alive_after_login boolean (optional)falseargs string[] (optional)--persist_user, the session will be started with a persistent session ID. Otherwise, it will be started with a random ID.session_shells array (optional)url: string (required)display_usage: string (optional)handheld: the display is used well within arm's reach.close: the display is used at arm's reach.near: the display is used beyond arm's reach.midrange: the display is used beyond arm's reach.far: the display is used well beyond arm's reach.screen_height: float (optional)screen_width: float (optional)url: fuchsia-pkg://fuchsia.com/dev_story_shell#meta/dev_session_shell.cmxdisplay_usage: unknownscreen_height: 0screen_width: 0story_shell_url: string (optional)fuchsia-pkg://fuchsia.com/dev_story_shell#meta/dev_story_shell.cmxenable_cobalt: boolean (optional)trueuse_session_shell_for_story_shell_factory: boolean (optional)story_shell_url and any story shell args are ignored.falsesession_launcher object (optional)basemgr.enable_cobalt. This component can use the fuchsia.session.Launcher protocol to launch sessionmgr.url: string (required)args string[] (optional)url.enable_cobalt: boolean (optional)truestartup_agents: string[] (optional)session_agents: string[] (optional)component_args: array (optional)uri: The component's uri.args: A list of arguments to be passed to the component specified by uri. Arguments must be prefixed with --.agent_service_index: array (optional)service_name: The name of a service offered by agent_url.agent_url: A fuchsia component url that specifies which agent/shell will provide the named service.restart_session_on_agent_crash: array (optional)A list of agent URLs that will cause the session to be restarted when they terminate unexpectedly. If an agent is not in this list, sessionmgr will restart it individually, preserving the session.
The session shell is automatically added to this list.