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.
curl -fsSL https://raw.githubusercontent.com/geoffjay/nemo/main/scripts/install.sh | shInstalls the latest release binary to ~/.local/bin (override with NEMO_INSTALL_DIR,
or pin a version with NEMO_VERSION=v0.6.0).
brew install geoffjay/tap/nemoDownload the archive for your platform from the latest release
and verify it against checksums.txt.
-
macOS: the app and binary are not code-signed or notarized, so Gatekeeper blocks them on first launch. Remove the quarantine attribute after downloading:
xattr -dr com.apple.quarantine /Applications/Nemo.app # app bundle xattr -d com.apple.quarantine ./nemo # CLI binary
-
Linux: the
.tar.gzbinary is dynamically linked. Either install the.deb(which pulls in its dependencies automatically) or install the runtime libraries:sudo apt-get install -y libfontconfig1 libfreetype6 libvulkan1 \ libxcb1 libxkbcommon0 libxkbcommon-x11-0 libwayland-client0
cargo build --release
# binary at target/release/nemonemo --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
