Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/retired64/sm64coopdx_launcher/llms.txt

Use this file to discover all available pages before exploring further.

Profiles allow multiple players — or one player with different play styles — to share a single SM64 Coop DX installation while keeping their settings completely separate. Each profile maintains its own player name, game configuration, enabled mods, DynOS packs, and launch options. Switching profiles takes effect immediately the next time you launch the game.

Why Use Profiles?

A profile captures everything that personalises a game session:
  • Player name shown to other players in multiplayer
  • Per-profile sm64config.txt — mod selections, DynOS packs, and network settings isolated per profile
  • Launch flagsskip_intro, fullscreen, windowed, headless, no_discord, and others toggled independently
  • Game binary override — a profile can point to a different game binary via its game_path field
  • Save data — each profile directory contains a saves/ subdirectory

Profile Directories

Profiles are stored under:
~/.local/share/sm64coopdx/profiles/
├── active.txt          ← name of the currently active profile (plain text)
├── Default/
│   ├── profile.json
│   ├── sm64config.txt
│   └── saves/
└── MyProfile/
    ├── profile.json
    ├── sm64config.txt
    └── saves/
PathPurpose
profiles/active.txtContains the name of the active profile (plain text, atomically written)
profiles/<name>/profile.jsonStores launch options (player name, flags, optional game_path)
profiles/<name>/sm64config.txtPer-profile game config (mods, packs, network settings)
profiles/<name>/saves/Save data directory

Default Profile

A profile named Default is created automatically the first time the launcher runs (ensure_default_profile creates profiles/Default/saves/, writes profile.json, and sets active.txt). The Default profile cannot be deleted. If active.txt is missing or points to a profile directory that no longer exists, the launcher falls back to Default automatically.

Opening the Profiles Panel

1

Open the arc menu

Press Tab from the main launcher screen to open the arc navigation menu.
2

Select Profiles

Navigate to Profiles and confirm. The Profiles panel lists all existing profiles, with the active profile shown highlighted. A synthetic + New Profile entry appears at the bottom of the list.

Profile Operations

Navigate to a profile and press Space to make it the active profile. The active profile’s sm64config.txt and profile.json are used the next time you launch the game.

Profile Detail Screen

The Profile Detail screen exposes all per-profile launch options as toggleable items. Press Enter on Player Name to open the virtual keyboard and type a new name.
OptionDescriptionCLI flag produced
Player NameDisplay name shown in multiplayer sessions--playername <name>
Skip IntroSkip the intro cutscene on startup--skip-intro
Discord Rich PresenceEnable Discord integration (toggle is inverted — turning it off adds --no-discord)--no-discord
FullscreenLaunch the game in fullscreen mode--fullscreen
WindowedLaunch in windowed mode--windowed
Skip Update CheckDisable the built-in update checker--skip-update-check
Headless (Server)Run without a display window — useful for dedicated servers--headless
Discord Rich Presence uses an inverted toggle: the checkbox shows on when Discord is enabled (no flag sent) and off when Discord is disabled (--no-discord is added). This matches the expected “Discord is ON by default” user experience.

Per-Profile sm64config.txt

When a profile’s sm64config.txt has actual content (file size greater than zero), the launcher passes --configfile <path> to the game so the profile’s config takes precedence. If the file is empty — which can happen when a new profile is created and no parent config exists — --configfile is not passed. This prevents the game from receiving a blank configuration that would override its own defaults and break ROM path resolution.

CLI Args Produced at Launch

The launcher calls build_profile_args to assemble the following arguments from the active profile:
--savepath ~/.local/share/sm64coopdx
--configfile ~/.local/share/sm64coopdx/profiles/MyProfile/sm64config.txt
--playername MyName
--skip-intro
--no-discord
--fullscreen
--windowed
--skip-update-check
--headless
--savepath is always included (pointing to the launcher’s XDG data directory). --configfile is included only when the file is non-empty. Each boolean flag is included only when its corresponding option is enabled.

Per-Profile Game Binary Path

A profile’s profile.json may include an optional game_path field to override which game binary is launched for that profile:
{
  "playername": "Speedrunner",
  "game_path": "/home/user/sm64coopdx-dev-build/sm64coopdx",
  "skip_intro": true,
  "fullscreen": false,
  "no_discord": false,
  "windowed": false,
  "skip_update_check": false,
  "headless": false
}
This makes it easy to maintain separate profiles for stable and development builds without changing the global launcher configuration.
See /reference/profile-json for the complete field reference, including all supported keys, their types, and default values.

Keyboard Shortcuts Summary

KeyAction
/ Navigate the profile list
SpaceActivate the selected profile
EnterOpen Profile Detail for the selected profile
NCreate a new profile
RRename the selected profile
Del (hold)Delete the selected profile (with confirmation)
EscClose the panel or cancel an input prompt

Build docs developers (and LLMs) love