gpui hello world

main
Fabien Freling 2024-04-05 23:57:47 +02:00
parent 603dc124dd
commit 1cc652384e
5 changed files with 5077 additions and 21 deletions

4996
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -6,3 +6,4 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
gpui = { git = "https://github.com/zed-industries/zed", tag = "v0.129.2" }

View File

@ -1,6 +1,6 @@
{
description = "Doggo flake";
inputs = {
fenix = {
url = "github:nix-community/fenix";
@ -10,23 +10,43 @@
};
outputs = { self, fenix, nixpkgs }:
let
pkgs = nixpkgs.legacyPackages.x86_64-linux;
in {
devShell.x86_64-linux = with pkgs;
mkShell {
nativeBuildInputs = [
just
(fenix.packages.x86_64-linux.fromToolchainFile {
dir = ./.;
sha256 = "sha256-3St/9/UKo/6lz2Kfq2VmlzHyufduALpiIKaaKX4Pq0g=";
})
];
let pkgs = nixpkgs.legacyPackages.x86_64-linux;
in {
devShell.x86_64-linux = with pkgs;
mkShell {
nativeBuildInputs = [
just
pkg-config
protobuf
(fenix.packages.x86_64-linux.fromToolchainFile {
dir = ./.;
sha256 = "sha256-3St/9/UKo/6lz2Kfq2VmlzHyufduALpiIKaaKX4Pq0g=";
})
];
buildInputs = [
];
};
buildInputs = [
curl
fontconfig
freetype
libgit2
openssl
sqlite
zlib
zstd
vulkan-loader
] ++ lib.optionals stdenv.isLinux [
alsa-lib
libxkbcommon
wayland
xorg.libxcb
];
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt;
};
env = {
WAYLAND_DISPLAY = ""; # Window has nor decoration on Wayland
LD_LIBRARY_PATH = with pkgs; lib.makeLibraryPath [ vulkan-loader ];
};
};
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt;
};
}

View File

@ -4,4 +4,7 @@ build:
alias r := run
run:
cargo run
nixVulkanIntel cargo run
fmt:
nix fmt flake.nix

View File

@ -1,3 +1,39 @@
fn main() {
println!("Hello, world!");
use gpui::*;
struct HelloWorld {
text: SharedString,
}
impl Render for HelloWorld {
fn render(&mut self, _cx: &mut ViewContext<Self>) -> impl IntoElement {
div()
.flex()
.bg(rgb(0x2e7d32))
.size(Length::Definite(Pixels(300.0).into()))
.justify_center()
.items_center()
.shadow_lg()
.border()
.border_color(rgb(0x0000ff))
.text_xl()
.text_color(rgb(0xffffff))
.child(format!("Hello, {}!", &self.text))
}
}
fn main() {
App::new().run(|cx: &mut AppContext| {
let bounds = Bounds::centered(None, size(px(600.0), px(600.0)), cx);
cx.open_window(
WindowOptions {
bounds: Some(bounds),
..Default::default()
},
|cx| {
cx.new_view(|_cx| HelloWorld {
text: "World".into(),
})
},
);
});
}