Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

258 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

A minimal application (app.nemo — a single-file component entry):

<app title="Hello Nemo">
  <window title="Hello Nemo" />
  <theme name="kanagawa" mode="dark" />
</app>

<template name="app">
  <stack id="root">
    <label id="greeting" text="Hello, World!" />
  </stack>
</template>

The application entry is an app.nemo single-file component. Legacy app.xml entries are no longer supported — the loader rejects them; rename to app.nemo (remove the <nemo> wrapper, move the <layout> body into <template name="app">). XML remains valid only inside <include> fragments.

Features

  • Declarative UI -- Component trees defined in .nemo single-file components
  • 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.nemo
nemo --app-config examples/calculator/app.nemo
nemo --app-config examples/sfc/app.nemo
nemo --app-config examples/data-binding/app.nemo     # multi-file <include> example
nemo --app-config examples/components/app.nemo

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

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages