the gui that hosts the salamanders

llizard-host
now
playing
lyrics
clock
.so
llz_sdk (display, input, media, config)

what it is

Llizard is a plugin-based GUI framework for the Spotify CarThing. It provides a unified 800x480 canvas where plugins - called salamanders - render their interfaces. The host handles display rotation, input abstraction, and media state from Redis.

Written in C with raylib for graphics and raygui for immediate-mode UI. Plugins are dynamically loaded .so files that share a common SDK for consistent behavior across the constrained ARM hardware.

the sdk

// plugin interface - what salamanders implement typedef struct LlzPluginAPI { const char* name; void (*init)(int width, int height); void (*update)(const LlzInputState* input, float dt); void (*draw)(void); void (*shutdown)(void); } LlzPluginAPI;

features

display abstraction
handles drm rotation on device, standard window on desktop
unified input
touch, buttons, dial - all normalized to LlzInputState
media from redis
track info, playback state, album art via SDK helpers
plugin menu
scroll through loaded salamanders, select to activate

built with

c raylib raygui hiredis dlopen drm
view on github

the ecosystem

Llizard runs on LlizardOS, reads media state from Mercury via Redis, and loads salamander plugins to extend functionality. It's the visible face of the system.

return to projects