-
Notifications
You must be signed in to change notification settings - Fork 1
API Reference
RadiatorTwo edited this page Jun 28, 2026
·
6 revisions
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.
| 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. |
| 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. |
| 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. |
IAnimatedDisplayCommand |
Commands | A command that draws an animated touch button, driven by the host's animation scheduler at a TargetFps. |
AnimationFrameContext |
Commands | Per-frame timing snapshot (FrameNumber, Elapsed, Delta, EffectiveFps) handed to RenderAnimatedFrame. |
AnimationFrameInfo |
Commands | Return value of RenderAnimatedFrame — Skip / Frame / Final, with a frame number the host uses as the device-push dirty key. |
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. |
public static class SdkInfo
{
public static readonly Version Version = new(1, 12, 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.
Getting started
API reference
Advanced
Operations
Release notes