State and session directories
Where state lives
$XDG_STATE_HOME/openmixer # or ~/.local/state/openmixer when XDG_STATE_HOME is unset
├── sessions/ # whole-console saves
├── scenes/ # named snapshots recalled during a show
├── patches/ # saved routing patches
├── channel-configs/ # reusable per-channel processing presets
├── measurements/ # measured plugin latency, host-local (local.json + work/)
├── stageboxes.json # stagebox names, keyed by box identity
├── adapters.yaml # adapter definitions
├── network-settings.json # persisted Setup → Network values
├── locale-settings.json # persisted operator locale
├── clock-ownership.json # which device the console claims as clock master
├── rme-totalmix.json # RME TotalMix state the mixer drove
└── engine.pid # single-instance lock
Override the root with --state-dir or OPENMIXER_STATE_DIR. The five sub-directories
are derived from it.
Everything is plain JSON (and YAML for the adapters file). You can read it, copy it and version it.
Sessions
A session is the whole console saved at once: levels, mutes, solos and sends, the
buses, the matrix, DCA and mute-group membership, every plugin chain with its parameters,
the routing and the surface layout. One file per session in sessions/.
Each session also records the hardware it expected at the time it was saved. A restore onto a rig that is missing a box can therefore tell the operator exactly what is absent instead of loading a console with silent channels.
The two reserved autosaves
Two session ids are reserved and overwritten rather than accumulated:
| Id | Written when | Purpose |
|---|---|---|
autosave-preload |
immediately before a session is loaded | A restore point for "that was the wrong session" |
autosave-live |
continuously, as the console changes | What the server offers to restore after a restart |
On start the server prefers the live autosave, then the most recent named session, then nothing. The reserved ids are excluded from the named-session fallback so an autosave is never mistaken for a show.
This is a convenience and occasionally a hazard: a console left in a bad state writes that bad state into the live autosave, and the next boot restores it. See a poisoned autosave session.
Scenes
Scenes are the many named snapshots an operator jumps between during a show. They live in
scenes/, separately from sessions, because their lifecycle is different: a session is
the rig, a scene is a moment in the set.
Channel configs
A channel config captures one channel's processing — its plugin chain and its EQ, gate
and compressor — as a reusable named preset saved from one channel and applied to
another. They live in channel-configs/ and travel between gigs.
Patches
Saved routing patches live in patches/. A patch is the routing alone, without the
console state, which makes it the right thing to carry between rigs with the same
physical I/O and different shows.
Ownership and permissions
Everything under the state directory belongs to the operator's user account and is written by the server process. It is not package-owned, no scriptlet ever touches it, and no upgrade rewrites it.
See also
- Backing up sessions
- Configuration files — the files outside the state directory