🎨 acrylic

This is a work-in-progress, easily portable, small, web-inspired user interface toolkit.

🪂 Features

🏗️ Progress (core crate)

🪀 Live Demos

more coming soon!

🧱 Supported platforms

| platform | Link | Rendering | Asset Loading | Event Handling | |---|---|---|---|---| | web | acrylic-web | ☑ | ☑ | ☑ | | wayland | acrylic-wayland | ⏳ | ☑ | | | x11 | coming soon | | | | | gdi | | | | | | fbdev | | | | | | drmkms | | | | |

⚡️ Quickstart

Project structure:

. ├── Cargo.toml ├── assets │ ├── ferris.png │ └── default.xml └── src └── app.rs

An asset: ferris.png

You can get it here

The view layout: default.xml

xml <x rem="1" style="default"> <inflate /> <y fixed="400" gap="10"> <inflate /> <png src="ferris.png" /> <x fixed="40" gap="10"> <inflate /> <p txt="Rust rocks!" /> <inflate /> </x> <inflate /> </y> <inflate /> </x>

The code: app.rs

```rust use platform::app; use acrylic::app::Application; use acrylic::xml::ViewLoader;

app!("assets/", { let loader = ViewLoader::new("default.xml"); Application::new((), loader) }); ```

The manifest: Cargo.toml

```toml [package] name = "my-app" version = "0.1.0" edition = "2021"

[lib] crate-type = [ "cdylib" ] path = "src/app.rs"

[dependencies] acrylic = "0.2.0"

building for the web

platform = { package = "acrylic-web", version = "0.2.0" } ```

Building

bash cargo build --target wasm32-unknown-unknown

Install a web server

httpserv is tiny and good enough for this demo.

bash cargo install httpserv

Start the web server

```bash

normal start:

httpserv

quiet + in the background

httpserv > /dev/null & ```

Then open http://localhost:8080/#release

Expected Result

quickstart.png

☕ Contact & Contributions

Contact

You can contact me via email or on Discord: bitsneak#1889.

You can use these for any question regarding this project.

Contributions

We gladly accept all contributions via Github PRs.

If you contribute rust code, please put all dependencies behind features; adding tens of dependencies to this crate or another one of this project might be a reason for not merging your PR.

👉 See Also

🕯️ License