Skip to content

Feature Request: Runtime App Framework for device-ui #282

@punkle

Description

@punkle

Is your feature request related to a problem? Please describe.

As far as I can tell there is no way for developers to add functionality to the device UI without modifying and recompiling the firmware. Even simple additions like a calculator tool requires C++ knowledge, a full build toolchain, and a firmware flash. This puts all feature development burden on the core maintainers and limits what the community can contribute.

Describe the solution you'd like

It would be nice for there to be a sandboxed app framework that allows small applications to be written in a scripting language and loaded from an SD card at runtime. Apps would be browsable from a dedicated screen on the device. The scripting VM should be restrictive enough to protect the main core firmware, and ideally require user confirmation or signature verification before running untrusted code from SD card. A small number of apps could also be compiled into the firmware as defaults.

Describe alternatives you've considered

As far as I can tell there is no alternative solution to this, but Im new to this, so am happy to be corrected.

Additional context

I made a little (AI assisted) POC implementation that uses Berry (https://github.com/berry-lang/berry). It includes an app browser screen, a calculator and a minesweeper clone game as demo apps. It also loads apps from the apps directory on the sd card if present. I have tested this on T-Deck Plus. The POC can be tried by cloning https://github.com/punkle/firmware and running pio run -e t-deck-tft-apps.

The app framework is implemented on this fork https://github.com/punkle/device-ui

Image

I believe this to be a feasible proposition.. but I could be overlooking something in my naive enthusiasm.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions