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 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
gpui = { git = "https://github.com/zed-industries/zed", tag = "v0.129.2" }

View File

@ -1,6 +1,6 @@
{ {
description = "Doggo flake"; description = "Doggo flake";
inputs = { inputs = {
fenix = { fenix = {
url = "github:nix-community/fenix"; url = "github:nix-community/fenix";
@ -10,23 +10,43 @@
}; };
outputs = { self, fenix, nixpkgs }: outputs = { self, fenix, nixpkgs }:
let let pkgs = nixpkgs.legacyPackages.x86_64-linux;
pkgs = nixpkgs.legacyPackages.x86_64-linux; in {
in { devShell.x86_64-linux = with pkgs;
devShell.x86_64-linux = with pkgs; mkShell {
mkShell { nativeBuildInputs = [
nativeBuildInputs = [ just
just pkg-config
(fenix.packages.x86_64-linux.fromToolchainFile { protobuf
dir = ./.; (fenix.packages.x86_64-linux.fromToolchainFile {
sha256 = "sha256-3St/9/UKo/6lz2Kfq2VmlzHyufduALpiIKaaKX4Pq0g="; 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 alias r := run
run: run:
cargo run nixVulkanIntel cargo run
fmt:
nix fmt flake.nix

View File

@ -1,3 +1,39 @@
fn main() { use gpui::*;
println!("Hello, world!");
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(),
})
},
);
});
} }