Skip to content

About

OBS Studio integration plugin for LoupixDeck

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

LoupixDeck.Plugin.Obs

OBS Studio integration plugin for LoupixDeck, built against LoupixDeck.PluginSdk.

Commands

Toggles, which also show the live state on a button (see below): System.ObsToggleRecord, System.ObsToggleReplay, System.ObsVirtualCam, System.ObsToggleStream, System.ObsToggleStudioMode.

The discrete actions behind them: System.ObsStartRecord, System.ObsStopRecord, System.ObsPauseRecord, System.ObsStartReplay, System.ObsStopReplay, System.ObsSaveReplay, System.ObsStartStream, System.ObsStopStream.

Studio mode: System.ObsTriggerTransition, System.ObsSetPreviewScene.

Scene, audio, source and filter control, surfaced through the dynamic "Scenes", "Preview Scenes", "Audio", "Sources" and "Filters" submenus: System.ObsSetScene, System.ObsMuteInput, System.ObsUnmuteInput, System.ObsToggleInputMute, System.ObsShowSource, System.ObsHideSource, System.ObsToggleSource, System.ObsShowFilter, System.ObsHideFilter, System.ObsToggleFilter.

The submenus follow OBS: they are rebuilt when OBS connects or disconnects, and when scenes, sources, filters or inputs are added, removed or renamed.

The source commands take the source name plus an optional scene name. Picked from the "Sources" menu, the scene of the folder is set, so the button works whichever scene is on program, also for a source shown through a nested scene. Left at its <current> default the command follows the current program scene. The filter commands take the scene or source that carries the filter, and the filter name.

Button states

The five toggle commands declare their own states, so assigning one to a button creates them: Idle / Recording for recording, Off / On for the replay buffer, virtual camera and studio mode, Offline / Live for streaming. The button then follows what OBS is actually doing, including changes made in OBS itself. Each state starts with its own icon, caption and background colour; these are ordinary layers, so restyle or replace them as you like. State management is locked while such a command is assigned — the layers inside every state stay yours.

The starting layers are only created when the command is put on a button. Buttons assigned with an older plugin version keep their states but no longer get a drawn indicator; assign the command again to get the new layers.

A paused recording counts as recording — pausing has its own command, so the toggle only says whether OBS is recording at all.

The discrete actions (start, stop, pause, save) carry no states: they are one-way commands, and which state a button should show would be a guess. A button whose states you built by hand keeps working as before — the plugin sets a state whose name matches, and leaves everything else alone.

Scene, source, filter and audio buttons show their own state, per button:

Command States
System.ObsSetScene Inactive / Active (on program)
System.ObsSetPreviewScene Inactive / Preview (in the studio mode preview)
System.ObsToggleSource Hidden / Shown
System.ObsToggleFilter Hidden / Shown (disabled / enabled)
System.ObsToggleInputMute Unmuted / Muted

Their captions start as the button's scene, source, filter or input name. A source button without a pinned scene follows the program scene. The show / hide and mute / unmute actions carry no states, like start and stop.

Nothing is polled: OBS reports every change as an event, and LoupixDeck asks the plugin for a button's state only when the button is assigned or its editor closes.

While OBS is not connected, every OBS button is drawn dimmed with a "disconnected" symbol. The plugin tries to connect every 5 seconds, so the mark goes away on its own once OBS is running.

Requires LoupixDeck with SDK 1.36.0 or newer.

Settings

Configured in LoupixDeck's plugin settings: host/IP, port, password of the OBS WebSocket server (OBS → Tools → WebSocket Server Settings). Stored in plugins/obs/settings.json.

Build & deploy

dotnet build LoupixDeck.Plugin.Obs.csproj -c Release

Copy the build output (the DLLs, LoupixDeck.Plugin.Obs.deps.json) together with plugin.json into LoupixDeck/plugins/obs/.

About

OBS Studio integration plugin for LoupixDeck

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages