Building and running a session {#building-and-running-a-session}

A session is the first product-specific component started on boot. The session component is responsible for building a product’s user experience. For more information on sessions, see session framework.

Booting into a session {#booting-into-a-session}

To boot into a session, do the following:

  1. For a session to run at boot you need to create a configuration file with the session component URL.

    1. {
    2. "session_url": "fuchsia-pkg://fuchsia.com/pkg-name#meta/your_session.cm"
    3. }

    Replace the following:

    • pkg-name: the package name
    • your_session.cm: the name of your session, including the .cm extension.

    For more information, see fuchsia-pkg and Package name.

  2. In the BUILD.gn file, include the configuration file for the session component

    1. import("//src/session/build/session_config.gni")
    2. session_config("your_session_config") {
    3. config = "path/to/config.json"
    4. }
  3. Run the following command to include the session_manager, your_session, and :your_session_config in your base image:

    1. fx set product.board --with-base=//src/session,//path/to/your/session,//path/to/your/session:your_session_config

    Note: Selecting a product that already has a session_config will result in a build error because the configurations will conflict. The core product would be a good choice as a starting point as it includes only the bare minimum needed to launch Fuchsia.

    fx list-products and fx list-boards will show lists of the products and boards available to be used in the fx set command. For more information on fx commands see the fx documentation.

  4. Rebuild and re-pave the device.

    1. fx build
    2. fx ota

    This causes session_manager to start and launch your session.

For a full explanation of building a session component, see Writing a Hello World Session.

Launch a session from the command line {#launch-a-session-from-the-command-line}

There are cases when you don’t want your session to launch at boot but still want to be able to launch it from the command line. There still needs to be a session launched at boot so configure the build to use the default session_manager configuration.

To launch a session from the command line, do the following:

  1. Run the following command to include the session_manager and the session_manager configuration file, session_manager.config, in the base image while also including your session in the build.

    1. fx set product.board --with-base=//src/session,//src/session/bin/session_manager:session_manager.config --with=//path/to/your/session

    fx list-products and fx list-boards will show lists of the products and boards available to be used in the fx set command. For more information on fx commands see the fx documentation.

  2. Run the following command to rebuild and repave the device:

    1. fx build
    2. fx ota

    This causes session_manager to start without launching your session.

  3. Your session can now be launched from the command line.

    Run the following command to launch your session:

    1. ffx session launch fuchsia-pkg://fuchsia.com/pkg-name#meta/your_session.cm

    For more information about the ffx session command, run ffx session --help. For more information about ffx, see the ffx documentation.