Nemo¶
Nemo is a configuration-driven desktop application framework. Define your UI layout, data sources, and event handlers in XML configuration files and RHAI scripts -- Nemo handles rendering, data flow, and state management.
Built on GPUI, Nemo produces native, GPU-accelerated desktop applications from declarative configuration.
What Nemo Does¶
- Declarative UI -- Define component trees in XML instead of writing rendering code
- Live Data Binding -- Connect HTTP APIs, MQTT brokers, Redis, NATS, WebSockets, and timers directly to UI components
- Scripted Logic -- Write event handlers in RHAI, a lightweight embedded scripting language
- Theming -- Ship with built-in themes (Kanagawa, Catppuccin, Tokyo Night, Gruvbox, Nord) or define your own
- Extensible -- Add custom components and data sources via native plugins
Quick Example¶
A minimal Nemo application consists of a single app.xml file:
<nemo>
<app>
<window title="Hello Nemo" />
<theme name="kanagawa" mode="dark" />
</app>
<layout type="stack">
<label id="greeting" text="Hello, World!" />
<button id="action" label="Click Me" on-click="on_button_click" />
</layout>
</nemo>
Run it:
Project Structure¶
A typical Nemo application looks like this:
my-app/
app.xml # Main configuration
scripts/
handlers.rhai # Event handler scripts
plugins/ # Optional native plugins
Where to Go Next¶
- Getting Started -- Install Nemo and build your first application
- CLI Reference -- Command-line options and usage
- Configuration -- Complete XML configuration reference
- Plugins -- Extending Nemo with native plugins
- Architecture -- System design and internal diagrams
- Development -- Extending Nemo with scripts and plugins