// the find
toyota-connected/ivi-homescreen
Flutter Linux C++ embedder for desktop and embedded displays, with Wayland, DRM/KMS, EGL, Vulkan, and software backends
A C++ Flutter embedder for Linux — desktop and embedded — that speaks Wayland, DRM/KMS, EGL, Vulkan, and software rendering from a single binary. It is Toyota's IVI platform made public, which means it is production-tested on real automotive hardware but carries that heritage's priorities. If you need Flutter running directly on a DRM/KMS framebuffer without a Wayland compositor, this is one of very few options.
All five backends compile into one binary and the active one is chosen at runtime — no separate builds for Wayland vs bare-metal DRM/KMS. The DRM/KMS Vulkan path does zero-copy dma-buf scanout, which is meaningfully different from the usual 'copy everything through the CPU' approach you see in embedder side projects. Multi-display from one process with proper cursor routing across a shared pointer space and per-display touch binding is genuinely useful and not something most Flutter embedders bother with. The config reference table is generated from the parser itself so it cannot drift from the actual accepted keys — a small discipline that pays off when you are debugging why a config key is silently ignored.
The plugin ecosystem lives in a separate repo and requires either cloning it adjacent to the main tree or pointing a CMake variable at it — two repos, two build configurations, and no lockfile equivalent between them. The README documents a breaking config schema change (flat keys replaced by nested TOML tables) with no migration tooling and no versioned changelog, so if you have existing configs you are on your own. Getting a development environment going requires workspace-automation, which is a Python script that patches sources and compiles projects — it works, but it is a significant bootstrap cost for anyone not already in the meta-flutter ecosystem. The compositor platform-view support (`BUILD_COMPOSITOR`) is off by default and the interaction with Vulkan image layout transitions is documented only in the README with no helper utilities, meaning plugin authors will hit VkImage layout bugs that are tedious to diagnose.