🎨 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 | ||||
| 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 acrylic::app::Application;
use acrylic::xml::TreeParser;
app!("assets/", {
let mut app = Application::new(());
TreeParser::new()
.with_builtin_tags()
.parse(&mut app, &mut Vec::new(), include_str!("layout.xml"))
.unwrap();
app
});
Download a sample PNG image:
As the web is the only functional platform at the moment, we are going to build for it.
&
Create a cargo manifest for this platform:
# my-app/Cargo.toml
[]
= "my-app"
= "0.1.0"
= "2021"
[]
= [ "cdylib" ]
= "src/app.rs"
[]
= "0.1.21"
= { = "acrylic-web", = "0.1.21" }
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