plugins that live in the fire

what they are

Salamanders are plugins for Llizard - dynamically loaded shared libraries (.so files) that add functionality without modifying the host. Each plugin implements a simple C interface and gets access to the full SDK: display helpers, input state, media info from Redis, and configuration storage.

Named for the mythical creatures said to live in flames, they thrive in the constrained environment of the CarThing's ARM processor.

the interface

// every salamander exports this function LlzPluginAPI* LlzGetPlugin(void); // the plugin api structure typedef struct LlzPluginAPI { const char* name; const char* description; void (*init)(int width, int height); void (*update)(const LlzInputState* input, float deltaTime); void (*draw)(void); void (*shutdown)(void); bool (*wants_close)(void); // optional } LlzPluginAPI;

Drop a .so file in the plugins/ directory. Llizard discovers it at startup, calls init() when the user selects it, and calls update()/draw() each frame until wants_close() returns true or the user exits.

existing salamanders

nowplaying media display with multiple themes and modes
lyrics synced lyrics from redis
clock fullscreen time display
settings brightness, orientation, config
podcasts browse and play podcasts
albums album art grid browser

sdk modules

llz_sdk_display llz_sdk_input llz_sdk_media llz_sdk_config llz_sdk_background llz_sdk_font llz_sdk_image

the host

Salamanders exist within Llizard - the raylib GUI host that loads them, manages their lifecycle, and provides the SDK they depend on.

browse all 13 plugins see Llizard see LlizardOS
return to projects