🎨 acrylic
This is a work-in-progress, cross-platform, small, web-inspired user interface toolkit.
🪀 Live Demos
coming soon!
🧱 Supported platforms
| platform | Link | Rendering | Asset Loading | Event Handling |
|---|---|---|---|---|
| web | acrylic-web | ☑ | ☑ | |
| wayland | acrylic-wayland | glitchy | ☑ | |
| x11 | ||||
| gdi | ||||
| fbdev | ||||
| drmkms |
⚡️ Quickstart
We will first create directories for our application:
Create a basic layout for your user interface:
<!-- my-app/src/layout.xml -->
The XML tags are not documented yet.
Create a rust file which will start our application:
// my-app/src/app.rs
use platform::app;
use platform::log;
use platform::blit;
use acrylic::app::Application;
use acrylic::xml::ViewLoader;
app!("assets/", {
let loader = ViewLoader::new("default.xml");
Application::new(&log, &blit, (), loader)
});
Download a sample PNG image:
As our most functional platform is acrylic-web, we are going to build for it. Install the corresponding rustc target, a minimal http server and a page which will start our app.
&
Create a cargo manifest for this platform:
# my-app/Cargo.toml
[]
= "my-app"
= "0.1.0"
= "2021"
[]
= [ "cdylib" ]
= "src/app.rs"
[]
= "0.1.25"
= { = "acrylic-web", = "0.1.25" }
Build:
Then go to http://localhost:8080/#release. You should see something like this:

☕ 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