LCDPossible uses a plugin architecture for both display panels and device drivers. This guide covers creating your own plugins.
| Type | Purpose | Interface |
|---|---|---|
| Panel Plugin | Display content on LCD | IPanelPlugin |
| Device Plugin | Support new LCD hardware | IDevicePlugin |
- Create a new .NET class library targeting
net10.0 - Reference
LCDPossible.Sdk - Implement
IPanelPlugin - Create a
plugin.jsonmanifest
public class MyPlugin : IPanelPlugin
{
public string PluginId => "my-plugin";
public string DisplayName => "My Custom Panels";
public IReadOnlyDictionary<string, PanelTypeInfo> PanelTypes => new Dictionary<string, PanelTypeInfo>
{
["my-panel"] = new PanelTypeInfo
{
TypeId = "my-panel",
DisplayName = "My Panel",
Category = "Custom"
}
};
public IDisplayPanel? CreatePanel(string typeId, PanelCreationContext context)
{
return typeId switch
{
"my-panel" => new MyPanel(context),
_ => null
};
}
}See Creating Panels for detailed guide.
- Create a new .NET class library targeting
net10.0 - Reference
LCDPossible.Core - Implement
IDevicePlugin - Create a
plugin.jsonmanifest with"type": "device"
See Creating Devices for detailed guide.
- Creating Panels - Panel development guide
- Creating Devices - Device driver development
- Plugin Manifest - plugin.json reference
- SDK Reference - Base classes and utilities
| Class | Use Case |
|---|---|
WidgetPanel |
Grid-based layouts with web components |
HtmlPanel |
Custom HTML templates |
CanvasPanel |
Direct pixel drawing (screensavers, effects) |
Every plugin requires a plugin.json file:
{
"id": "my-plugin",
"type": "panels",
"name": "My Custom Panels",
"version": "1.0.0",
"description": "Custom panels for LCDPossible",
"assemblyName": "MyPlugin.dll",
"panelTypes": [
{
"typeId": "my-panel",
"displayName": "My Panel",
"description": "A custom panel",
"category": "Custom",
"isLive": true,
"isAnimated": false
}
]
}Plugins are loaded from:
| Platform | System Plugins | User Plugins |
|---|---|---|
| Windows | {app}/plugins/ |
%APPDATA%\LCDPossible\plugins\ |
| Linux | {app}/plugins/ |
~/.local/share/lcdpossible/plugins/ |
| macOS | {app}/plugins/ |
~/Library/Application Support/LCDPossible/plugins/ |