Skip to content

geoffjay/nemo

Repository files navigation

CI Release codecov MIT licensed Apache licensed

Nemo

Warning

Nemo is in a Beta state, it's safe to use but breaking changes are possible.

Nemo

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.

Installation

Install script (macOS / Linux)

curl -fsSL https://raw.githubusercontent.com/geoffjay/nemo/main/scripts/install.sh | sh

Installs the latest release binary to ~/.local/bin (override with NEMO_INSTALL_DIR, or pin a version with NEMO_VERSION=v0.6.0).

Homebrew (macOS / Linux)

brew install geoffjay/tap/nemo

Prebuilt binaries

Download 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.gz binary 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

Build from source

cargo build --release
# binary at target/release/nemo

Quick Start

nemo --app-config app.xml

A 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>

Features

  • 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

Examples

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.xml

Configuations are available in the examples directory:

Documentation

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.

License

MIT OR Apache-2.0

About

The application with no name

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

1 star

Watchers

1 watching

Forks

Packages

 
 
 

Contributors

Languages