Manual Project
This section will walkthrough how to manually setup a monolithic project structure for your GPUI application without the use of the create-gpui-app
CLI tool.
Setup
cargo new my-app
cd my-app
Add the gpui
git dependency to the Cargo.toml
.
[package]
name = "my-app"
version = "0.1.0"
edition = "2024"
[dependencies]
gpui = { git = "https://github.com/zed-industries/zed" }
Hello World Example
Add the basic Hello World example code to the main.rs
.
use gpui::{
AppContext, Application, Context, IntoElement, ParentElement, Render, SharedString, Styled,
Window, WindowOptions, div, white,
};
struct HelloWorld {
text: SharedString,
}
impl Render for HelloWorld {
fn render(&mut self, _window: &mut Window, _cx: &mut Context<Self>) -> impl IntoElement {
div()
.size_full()
.bg(white())
.flex()
.justify_center()
.items_center()
.text_3xl()
.child(format!("Hello, {}!", &self.text))
}
}
fn main() {
Application::new().run(|app| {
app.open_window(WindowOptions::default(), |_window, app| {
app.new(|_cx| HelloWorld {
text: SharedString::new_static("World"),
})
})
.unwrap();
});
}