blob: 9db6040a90e01fae330d02ea0e3d48eeec365faa [file] [log] [blame] [view]
# Guide to Configuring the Modular Framework
## Requirements
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.
## Example
```
{
"basemgr": {
"enable_cobalt": false,
"use_session_shell_for_story_shell_factory": true,
"base_shell": {
"url": "fuchsia-pkg://fuchsia.com/dev_base_shell#meta/dev_base_shell.cmx",
},
"session_shells": [
{
"url": "fuchsia-pkg://fuchsia.com/ermine_session_shell#meta/ermine_session_shell.cmx",
"display_usage": "near",
"screen_height": 50.0,
"screen_width": 100.0
}
]
},
"sessionmgr": {
"use_memfs_for_ledger": true,
"cloud_provider": "NONE",
"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"
}
]
}
}
```
## Basemgr fields
- `base_shell` **boolean** _(required)_
- `url`: **string** _(required)_
- The fuchsia component url for which base shell to use.
- `keep_alive_after_login` **boolean** _(optional)_
- When set to true, the base shell is kept alive after a log in. This is
used for testing because current integration tests expect base shell
to always be running.
- **default**: `false`
- `args` **string[]** _(optional)_
- A list of arguments to be passed to the base shell specified by url.
Arguments must be prefixed with --.
- `session_shells` **array** _(required)_
- Lists all the session shells with each shell containing the following
fields:
- `url`: **string** _(required)_
- The fuchsia component url for which session shell to use.
- `display_usage`: **string** _(optional)_
- The display usage policy for this session shell.
- Options:
- `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)_
- The screen height in millimeters for the session shell's display.
- `screen_width`: **float** _(optional)_
- The screen width in millimeters for the session shell's display.
- `story_shell_url`: **string** _(optional)_
- The fuchsia component url for which story shell to use.
- **default**: `fuchsia-pkg://fuchsia.com/mondrian#meta/mondrian.cmx`
- `enable_cobalt`: **boolean** _(optional)_
- When set to false, Cobalt statistics are disabled.
- **default**: `true`
- `use_minfs`: **boolean** _(optional)_
- When set to true, wait for persistent data to initialize.
- **default**: `true`
- `use_session_shell_for_story_shell_factory`: **boolean** _(optional)_
- Create story shells through StoryShellFactory exposed by the session shell
instead of creating separate story shell components. When set,
`story_shell_url` and any story shell args are ignored.
- **default**: `false`
## Sessionmgr fields
- `cloud_provider`: **string** _(optional)_
- Options:
- `LET_LEDGER_DECIDE`: Use a cloud provider configured by ledger.
- `FROM_ENVIRONMENT`: Use a cloud provider available in the incoming
namespace, rather than initializing and instance within sessionmgr.
This can be used to inject a custom cloud provider.
- `NONE`: Do not use a cloud provider.
- **default**: `LET_LEDGER_DECIDE`
- `enable_cobalt`: **boolean** _(optional)_
- When set to false, Cobalt statistics are disabled. This is used for
testing.
- **default**: `true`
- `enable_story_shell_preload`: **boolean** _(optional)_
- When set to false, StoryShell instances are not warmed up as a startup
latency optimization. This is used for testing.
- **default**: `true`
- `use_memfs_for_ledger`: **boolean** _(optional)_
- Tells the sessionmgr whether it should host+pass a memfs-backed directory
to the ledger for the user's repository, or to use /data/LEDGER.
- **default**: `false`
- `startup_agents`: **string[]** _(optional)_
- A list of fuchsia component urls that specify which agents to launch at
startup.
- `session_agents`: **string[]** _(optional)_
- A list of fuchsia component urls that specify which agents to launch at
startup with PuppetMaster and FocusProvider services.
- `component_args`: **array** _(optional)_
- A list of key/value pairs to construct a map from component URI to
arguments list for that component. Presence in this list results in the
given arguments passed to the component as its argv at launch.
- `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)_
- A list of key/value pairs to construct a map from service name to the
serving agent's URL. Service names must be unique, so only one agent can
provide a given named service.
- `service_name`: The name of a service offered by a session agent.
- `agent_url`: A fuchsia component url that specifies which agent will
provide the named service.