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#
| Property | Type | Required | Description |
|---|---|---|---|
version |
integer |
Yes | Must be 1. |
configurations |
array |
Yes | List of launch targets. |
Configuration Target Object#
| Property | Type | Required | Description |
|---|---|---|---|
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:
| Variable | Description |
|---|---|
${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 unlesscwdsays 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.jsonof 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:
-
Open the Command Palette (
Cmd + Shift + P/Ctrl + Shift + PorCmd + Shift + A). - Search for Launch: Import VS Code Configuration.
- Select the target configurations to import.
-
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#
- Debugging & Running — Debugger panel, stepping, and toolbar controls.
- Breakpoints — Setting line breakpoints.
