Warning
Nemo is in a Beta state, it's safe to use but breaking changes are possible.
A configuration-driven desktop application framework. Define UI, data sources, and event handlers in XML -- Nemo renders a native, GPU-accelerated application.
Built on GPUI.
cargo build --release
nemo --app-config app.xmlA minimal application:
<nemo>
<app title="Hello Nemo">
<window title="Hello Nemo" />
<theme name="kanagawa" mode="dark" />
</app>
<layout type="stack">
<label id="greeting" text="Hello, World!" />
</layout>
</nemo>- Declarative UI -- Component trees defined in XML configuration
- Live data binding -- Connect timer, HTTP, WebSocket, MQTT, Redis, and NATS sources to components
- Scripted logic -- Event handlers written in RHAI
- Theming -- Built-in themes (Kanagawa, Catppuccin, Tokyo Night, Gruvbox, Nord) with dark/light modes
- Extensible -- Native plugin support via dynamic libraries
nemo --app-config examples/basic/app.xml
nemo --app-config examples/calculator/app.xml
nemo --app-config examples/components/app.xml
nemo --app-config examples/data-binding/app.xmlConfiguations are available in the examples directory:
- basic: A minimal application
- calculator: A calculator application
- components: A component-based application
- data-binding: A data-binding application
- data-streaming: A data-streaming application
Full documentation is available at geoffjay.github.io/nemo or locally via zensical serve.
Plugin API documentation is also available for nemo-plugin, nemo-plugin-api, and nemo-wasm-guest.
MIT OR Apache-2.0
