🎨 acrylic
This is a work-in-progress, easily portable, small, web-inspired user interface toolkit.
🪂 Features
- feels familiar to web developers
- support for templating
- frame + pixel perfect
- input API designed for improved accessibility
- pure and safe rust
- everything supported under
no_std
🏗️ Progress (core crate)
- ☑ XML parsing
- ☑ flexbox-like layout
- ☑ textual nodes
- ☑ PNG images
- ☑ round containers
- ☑ input events
- ☑ event handlers
- ☑ full
no_stdsupport - ☐ text editing
- ☐ scrolling
- ☐ rich text
- ☐ external links
- ☐ video playback
- ☐ sound playback
🪀 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
The code: app.rs
use app;
use log;
use Application;
use ViewLoader;
app!;
The manifest: Cargo.toml
[]
= "my-app"
= "0.1.0"
= "2021"
[]
= [ "cdylib" ]
= "src/app.rs"
[]
= "0.2.0"
# building for the web
= { = "acrylic-web", = "0.2.0" }
Building
Then open http://localhost:8080/#release
Expected Result

☕ 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
- MIT for the code
- SIL Open Font License for the embedded Noto Font