Windows and layout
stream-concern’s main window holds the Scenes panel, the Controls panel, the Mixer, and the preview in the centre. Tool windows — the mixer’s Advanced table, the ingest manager, and a few prompts — open as their own native OS windows so they sit alongside the app (in the Dock and Mission Control / Alt-Tab) instead of floating on top of the preview.
The main panels
The View menu toggles the three docked panels:
- Sources — the Scenes / sources panel on the left.
- Controls — the streaming/recording controls on the right.
- Mixer — the audio mixer along the bottom.
On macOS these are the system menu bar’s View menu; on Windows and Linux they are in the in-window View menu.
Detaching the mixer
The mixer can live either docked along the bottom of the main window or in its own window:
- Detach — click ⧉ Detach in the mixer header, choose View ▸ Detach Mixer, or press Cmd+Shift+M (macOS) / Ctrl+Shift+M (Windows/Linux). The mixer moves into a window titled Mixer; the main window’s preview reclaims the freed bottom edge.
- Re-attach — click ⧉ Attach in the detached window’s header, toggle View ▸ Detach Mixer again, press the shortcut again, or simply close the window (closing re-docks the mixer rather than hiding it).
Detaching a hidden mixer also shows it. To hide the mixer entirely (docked or detached), turn off View ▸ Mixer.
The detached window’s size and position are remembered across detaches and across app restarts. Metering and loudness continuity are unchanged when detached — a live stream or recording keeps its integrated LUFS and true-peak history exactly as when docked.
Scrolling the mixer
Mixer strips are tall (fader, meter, Mute/Solo, the Routing and Filters disclosures). The strip area scrolls both horizontally (across inputs, the master strip and the monitor section) and vertically (down a single strip when its disclosures are open), while the header row (Add input, Advanced…, Detach, solo status) stays pinned above the scroll area. Whether docked or detached, no strip is ever clipped without a scroll bar being reachable — drag the docked panel’s top edge, or resize the detached window, to show more at once.
Tool windows
These open as their own native windows and remember their size and position across restarts:
- Advanced Audio Properties (Mixer ▸ Advanced…) — the per-input table.
- RTMP Server — the RTMP Server listeners and stream-key manager.
- Add browser overlay — the browser-source prompt.
- Interact — the web-overlay interaction window (it forwards the cursor and keyboard to the overlay, which already required its own window).
- Settings — the settings window.
- Outputs — the Outputs area, detached with Detach above its groups (non-macOS also View ▸ Detach outputs); Attach or closing the window puts it back in the Controls panel, and whether it is detached is remembered.
Each closes with its close button or the Escape key. Only true modal dialogs (for example the “Scenes could not be saved” error and confirmation prompts) stay inside the main window.
Where geometry is remembered
Window sizes and positions — the docked panel heights/widths, the main window, and every detachable tool window — are stored in stream-concern’s app-support data (the same place egui keeps its layout memory), written on exit and restored on the next launch. A remembered position that would land entirely off every current display is discarded on restore, so an unplugged monitor never leaves a window stranded off-screen; the window manager places it instead.
Platform notes
- macOS and Windows place child windows at their remembered coordinates.
- Linux/Wayland: Wayland does not let applications position their own windows, so a detached window opens where the compositor decides; its size is still restored, and the position is remembered for compositors that honour it (X11/XWayland). Detach/attach and scrolling behave the same everywhere.