Skip to content

geoffjay/nemo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

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

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages