This repository has been archived on 2026-03-31. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
alchemy/website/content/_index.md

72 lines
2 KiB
Markdown

+++
title = "Alchemy - A Rust GUI Framework"
template = "index.html"
+++
# A New Rust GUI Framework
Alchemy is a Rust GUI Framework, backed by native widgets on each platform it supports, with an API that's a blend of those found in AppKit, UIKit, and React Native. It supports a JSX-ish syntax (RSX), styling with CSS, the safety of building in Rust, and a familiar API for many developers who build UI on a daily basis. The goal is to provide an API that feels at home in Rust, while striving to provide a visual appearance that's easy to scan and parse. It does not, and will never, require nightly. It's still early stages, but feedback and contributions are welcome.
## What's It Look Like?
``` rust
use alchemy::{
AppDelegate, Error, RSX, rsx,
styles, View, Window, WindowDelegate
};
struct AppState {
window: Window
}
impl AppDelegate for AppState {
fn did_finish_launching(&mut self) {
self.window.set_title("LOL");
self.window.set_dimensions(10., 10., 600., 600.);
self.window.show();
}
}
struct WindowState;
impl WindowDelegate for WindowState {
fn render(&self) -> Result<RSX, Error> {
Ok(rsx! {
<View styles=["box"]>
<View styles=["innerbox"] />
</View>
})
}
}
fn main() {
let app = alchemy::shared_app();
app.register_styles("default", styles! {
box {
background-color: #307ace;
width: 300;
height: 300;
margin-top: 10;
padding-top: 10;
}
innerbox {
background-color: #003366;
width: 200;
height: 200;
}
});
app.run(AppState {
window: Window::new(WindowState {
})
});
}
```
<div id="tempGetStarted">
<h2>Get Started</h2>
<a href="https://github.com/ryanmcgrath/alchemy/" title="Browse the Alchemy Source Code on GitHub" class="getStartedBtn gh">GitHub</a>
<a href="https://docs.rs/alchemy/" title="Read the Alchemy Documentation on docs.rs" class="getStartedBtn">Docs</a>
</div>