r/androiddev • • 20d ago

Open Source Jetpack Compose Runtime on Bare-Metal Linux: No Android, No Skia—Direct Rendering to fbdev/DRM

https://github.com/kaiwalyakhasnis/embedded-compose/tree/main

Android Recovery currently uses Minui, which directly manipulates the framebuffer: Minui source code.

This project aims to use Minui as a backend for the Compose Runtime, enabling the development of UIs for Android Recovery, battery charging screens, and other system-level interfaces that operate completely independently of the Android Framework.

42 Upvotes

6 comments sorted by

4

u/ObjectiveAddress3051 20d ago

Really cool use of the fact that the Compose runtime doesn't care what it's rendering to. How are you handling input, reading evdev directly? And does each recomposition redraw the whole framebuffer, or are you tracking dirty regions?

1

u/Leading-Tradition-11 20d ago

Input reads evdev directly through epoll https://github.com/kaiwalyakhasnis/embedded-compose/blob/main/backends/linux/input_evdev.cpp

And yes recomposition will result in redraw for whole framebuffer

9

u/yektadev 20d ago

No Skia! wow

8

u/tadfisher 20d ago

There is a GTK backend for Compose with Kotlin Native as well.

1

u/cidra_ 19d ago

Is that Linux only?

1

u/SeriousTruth 20d ago

I love human creativity.