Appearance
Launch Profiles
Define multiple launch variants for an application. Launch profiles show as additional context menu items in the Launcher UI and apply modifications on top of the base policy.
What You'll Learn
- Add named launch variants with custom arguments and flags
- Apply launch profile changes on top of merged base modifications
- Control post-launch actions (for example, open logs folder)
Terminology
- Launch profiles (
apps[].profiles[]): App-level variants that adjust arguments, runtime, mounts, or post-launch actions (for example,chrome-incognito). - User configurations (
user-profiles.json→profiles[]): Per-user environment variables and mounts derived from configuration templates; they do not change arguments or flags. - Configuration templates (
configurationTemplates[]): Enterprise-defined constraints that user configurations must satisfy; apps link these templates viaapps[].configurationTemplates.
Use “launch profile” for context menu variants and “user configuration” for per-user environment/mount definitions to avoid conflating the two.
Launch Profile Structure
json
{
"id": "profile-id",
"displayName": "Display Name",
"actionText": "Action Text",
"arguments": {
"append": "additional args",
"prepend": "prefix args",
"replace": "replacement args"
},
"runtime": {},
"postLaunchAction": {
"type": "OpenFolder",
"path": "%LOCALAPPDATA%\\Turbo\\Containers\\sandboxes\\{ContainerId}\\logs"
}
}Fields
| Field | Required | Description |
|---|---|---|
id | Yes | Stable identifier for the launch profile (merge/tie-break key) |
displayName | Yes | Human-readable name for the profile entity (used for sessions, logs, etc.) |
actionText | Yes | Action-oriented text for UI elements (buttons, menu items) |
arguments | No | Argument modifications (append, prepend, replace) applied after base |
runtime | No | Structured runtime settings applied after base |
postLaunchAction | No | Action executed after launch (see below) |
Post-Launch Actions
Supported action types:
OpenFolder— Opens the specified folder in Windows Explorer after the app launches.
Variables:
{ContainerId}— Resolved Turbo container ID- Windows environment variables (for example,
%LOCALAPPDATA%,%TEMP%,%USERPROFILE%)
Example:
json
{
"postLaunchAction": {
"type": "OpenFolder",
"path": "%LOCALAPPDATA%\\Turbo\\Containers\\sandboxes\\{ContainerId}\\logs"
}
}Context Menu Behavior
When an app has launch profiles, the Launcher context menu includes:
- Run (base)
- One item per launch profile (by
displayName) - Run in diagnostic mode
- Reset session
Example (Chrome with Incognito profile):
json
{
"id": "google-chrome-with-launch-profiles",
"displayName": "Allow Google Chrome with Launch Profiles",
"enabled": true,
"priority": 100,
"matchAll": [
{ "type": "targetPath", "pattern": ".*\\\\chrome\\.exe$", "patternType": "regex" }
],
"action": "allow",
"modifications": {
"arguments": { "append": "--hide-crash-restore-bubble" },
"runtime": { "isolation": { "remoteSandbox": true } }
},
"profiles": [
{
"id": "chrome-incognito",
"displayName": "Chrome (Incognito)",
"actionText": "Run Chrome (Incognito)",
"arguments": { "append": "--incognito" }
}
]
}Resulting menu:
- Run (base:
--hide-crash-restore-bubble) - Run Chrome (Incognito) (base +
--incognito) - Run in diagnostic mode
- Reset session
Merging Rules (Launch Profiles vs Base)
- Launch profile modifications are applied after all base modifications have been merged.
- Scope precedence remains: Launch Profile > Policy > Global.
- Multiple matching policies can each contribute launch profiles; when two launch profiles share the same
id, the launch profile from the highestprioritypolicy wins (ties break by policyidalphabetical).
Arguments merging reminder:
replaceoverrides bothprependandappendwithin the launch profile scope.- Without
replace, the final arguments are built by concatenating prepend/base/append according to scope precedence.
Runtime settings reminder:
- Scalars (boolean, number, string) are last-wins by scope (Launch Profile → Policies → Global).
- Arrays use last-wins replacement by scope for determinism.
Troubleshooting Tips
- Launch profile not showing: Ensure the base app policy is enabled, matches, and defines a non-empty
profilesarray. - Launch profile arguments not applied: Check for
arguments.replacein the launch profile or a more specific scope overriding lower scopes. - Duplicate launch profile IDs: Ensure each launch profile
idis unique within the app, or adjustpriorityto control which launch profile wins in conflicts.
Next Steps
- Modifications & Flags: Modifications & Flags
- Merging & Precedence: Merging & Precedence
- Authorization & Visibility: Authorization & Visibility
