Skip to content

API Reference

RadiatorTwo edited this page Jun 14, 2026 · 6 revisions

API Reference

The SDK ships a small, stable surface — one base class, a handful of interfaces, and a few value types. Everything lives in the LoupixDeck.PluginSdk namespace.

Core (required for every plugin)

Type Page Purpose
LoupixPlugin LoupixPlugin Abstract entry point — exactly one concrete subclass per plugin assembly.
PluginMetadata LoupixPlugin Identity, versioning, author, icon.
IPluginCommand Commands A single user-assignable action.
CommandDescriptor Commands Declarative command metadata (name, group, parameters).
CommandParameter Commands One positional parameter on a CommandDescriptor — name + CLR type.
CommandContext Commands Execution context (parameters, target, device, host).
ButtonTargets Commands Flags enum filtering which button types accept the command.
SdkInfo here Static Version — always assign to PluginMetadata.SdkVersion.

Host bridge

Type Page Purpose
IPluginHost Host Services Bridge handed to the plugin in Initialize.
IPluginLogger Host Services Scoped log sink.
IPluginSettings Host Services Per-plugin JSON-backed key/value store.
DeviceInfo Host Services Read-only description of the active device.

Optional capabilities

Type Page Purpose
IDisplayCommand Commands A command that also renders dynamic text on a touch button.
IAdjustmentCommand Commands A rotary-encoder value adjustment (turn = ApplyAdjustment, press = ApplyReset). Forward-compatible.
IDisplayImageCommand Commands A command that draws a dynamic touch-button image onto an IRenderCanvas.
IRenderCanvas Rendering Host drawing surface for side strips, segments and touch-button images (shapes, text, symbols, images, transforms).
PluginColor Rendering UI-framework-agnostic RGBA color.
SymbolStyle Rendering Outline/shadow/gradient/rotation styling for DrawSymbol.
TextHAlign / TextVAlign Rendering Independent text alignment for the box DrawText overload.
ISideStripProvider / ISideStripSession Side Strips Plugin-override renderer + live session for a Razer side display strip.
ISegmentStripProvider / ISegmentStripSession Side Strips Per-segment rendering of a single dial's strip cell in segmented mode.
SideStripContext / SideStripRotary Side Strips Strip geometry, adjacent-dial bindings and paging callbacks handed to a session.
StripSide / StripSwipeDirection Side Strips Which strip a session drives; vertical swipe direction.
IMenuContributor Dynamic Menus Contributes dynamically built submenu entries.
MenuNode Dynamic Menus Folder or leaf node in a dynamic submenu.
IFolderProvider Folder Navigation Supplies a folder view on the touch screen.
FolderProviderBase Folder Navigation Convenience base class.
FolderEntry Folder Navigation A single grid slot in a folder.
FolderLayout Folder Navigation Grid geometry constants.
RotaryOverride Folder Navigation Per-encoder behavior while a folder is open.
IExclusiveModeProvider Exclusive Mode Full-device takeover (HUD, screensaver, video).
ExclusiveRenderMode Exclusive Mode How the host pushes a provider's frames (full screen / grid / dirty tiles / single tile).
IPluginSettingsPage Settings Page Exposes user-editable settings.
PluginSettingDescriptor Settings Page One editable setting.
PluginSettingKind Settings Page Editor kind enum.
PluginSettingAction Settings Page Action button on the settings form.

SdkInfo

public static class SdkInfo
{
    public static readonly Version Version = new(1, 11, 0);
}

Always set PluginMetadata.SdkVersion = SdkInfo.Version. The host loads a plugin only when SdkVersion.Major matches its own — within a major version, the contracts are guaranteed source- and binary-compatible.

Clone this wiki locally