LogoLumide

Launch Configurations

Lumide defines application run and debug targets in .sofluffy/lumide/launch.json at the workspace root. In a workspace of several folders, each folder can have its own.

Executing launch targets requires granted Workspace Trust for security.


Configuration Format#

Launch configurations use schema version 1:

{
  "$schema": "https://lumide.dev/schemas/launch-v1.schema.json",
  "version": 1,
  "configurations": [
    {
      "id": "desktop-macos",
      "name": "Run Flutter Desktop",
      "provider": "dart",
      "kinds": ["run", "debug"],
      "config": {
        "program": "lib/main.dart",
        "args": ["-d", "macos"],
        "cwd": "${workspaceFolder}"
      }
    }
  ]
}

Configuration Properties#

PropertyTypeRequiredDescription
version integer Yes Must be 1.
configurations array Yes List of launch targets.

Configuration Target Object#

PropertyTypeRequiredDescription
name string Yes Label displayed in the TopBar launch dropdown.
provider string Yes Provider ID handling the target (e.g. dart).
id string No Unique target ID (^[A-Za-z0-9][A-Za-z0-9._-]*$). Auto-generated if omitted.
kinds string[] No Supported actions: "run" , "debug" , "attach" , "test" . Provider defaults apply if omitted.
config object No Provider-specific launch parameters (arguments, environment variables, program path).

Variable Substitution#

Strings inside config dynamically resolve workspace and editor variables at launch time:

VariableDescription
${workspaceFolder} Absolute path to the folder whose launch.json holds the configuration.
${workspaceFolderBasename}Basename of that folder.
${workspaceFolder:name} Absolute path to another workspace folder, by the label the Files tree shows (such as app (client) ) or by its name when no other folder shares it.
${fileWorkspaceFolder}The workspace folder of the active file.
${file}Full path of the currently active file in the editor.
${fileBasename} Filename including extension (e.g. main.dart).
${fileBasenameNoExtension} Filename without extension (e.g. main).
${fileExtname}Extension of the active file (e.g. .dart).
${fileDirname}Directory containing the currently active file.
${relativeFile} Path of the active file relative to ${workspaceFolder}.
${relativeFileDirname} Directory of the active file relative to ${workspaceFolder}.
${lineNumber}Currently focused line number in the active editor.
${columnNumber}Currently focused column number in the active editor.
${selectedText}Currently highlighted text in the active editor.
${userHome}Path to the user's home directory.
${env:NAME}Value of the environment variable NAME.

Several Folders#

When the workspace has several folders, Lumide reads .sofluffy/lumide/launch.json from every folder and asks launch providers, such as the Flutter plugin, for targets in each folder.

  • Every configuration belongs to its folder: ${workspaceFolder} is that folder, and a process runs there unless cwd says otherwise. Use ${workspaceFolder:name} to point at another folder.
  • The launch dropdown names the folder after each configuration, such as Serve (api), and Lumide remembers the selected one with its folder. Two folders can use the same configuration id.
  • Problems in a folder's file show under Launch Configuration Issues with the folder's label.
  • New Launch Configuration… in the Files tree adds to the launch.json of the folder you right-clicked. From the Command Palette, Launch: Create Configuration File, Open Configuration File, Add Configuration and Import VS Code Configuration ask for the folder first.

Compound configurations, which start several configurations at once, are not supported yet: start each one from the dropdown.


Importing from VS Code#

If your project contains a .vscode/launch.json file, you can import it into Lumide:

  1. Open the Command Palette (Cmd + Shift + P / Ctrl + Shift + P or Cmd + Shift + A).
  2. Search for Launch: Import VS Code Configuration.
  3. Select the target configurations to import.
  4. Lumide validates provider compatibility, previews conversion fidelity, and writes the targets to .sofluffy/lumide/launch.json.

With several folders, Lumide asks which folder to import from; it reads that folder's .vscode/launch.json and writes to its launch.json.


Next Steps#