[package] name = "gpui" version = "0.2.2" edition.workspace = true authors = ["Nathan Sobo "] description = "Zed's GPU-accelerated UI framework" repository = "https://github.com/zed-industries/zed" publish = true license = "Apache-2.0" homepage = "https://gpui.rs" readme = "README.md" keywords = ["desktop", "gui", "immediate"] categories = ["gui"] [lints] workspace = true [features] default = ["font-kit", "wayland", "x11", "windows-manifest"] test-support = [ "leak-detection", "collections/test-support", "http_client/test-support", "wayland", "x11", "proptest", ] bench = ["test-support", "dep:criterion", "dep:hdrhistogram"] inspector = ["gpui_macros/inspector"] leak-detection = ["backtrace"] wayland = [] x11 = [ "scap?/x11", ] screen-capture = [ "scap", ] windows-manifest = ["dep:embed-resource"] input-latency-histogram = ["dep:hdrhistogram"] profiler = [] [lib] path = "src/gpui.rs" doctest = false [dependencies] accesskit.workspace = true anyhow.workspace = true async-task.workspace = true backtrace = { workspace = true, optional = true } bitflags.workspace = true collections.workspace = true criterion = { workspace = true, optional = true } ctor.workspace = true derive_more.workspace = true etagere.workspace = true futures.workspace = true futures-concurrency.workspace = true gpui_macros.workspace = true gpui_shared_string.workspace = true http_client.workspace = true image.workspace = true inventory.workspace = true itertools.workspace = true log.workspace = true num_cpus = "1.13" parking = "2.0.0" parking_lot.workspace = true postage.workspace = true proptest = { workspace = true, optional = true } chrono.workspace = true profiling.workspace = true rand.workspace = true raw-window-handle.workspace = true regex.workspace = true refineable.workspace = true scheduler.workspace = true resvg.workspace = true usvg.workspace = true ttf-parser = "0.25" util_macros.workspace = true schemars.workspace = true seahash = "4.1" serde.workspace = true serde_json.workspace = true slotmap.workspace = true smallvec.workspace = true async-channel.workspace = true stacksafe.workspace = true strum.workspace = true sum_tree.workspace = true taffy = "=0.12.2" thiserror.workspace = true gpui_util.workspace = true hdrhistogram = { workspace = true, optional = true } waker-fn = "1.2.0" lyon = "1.0" pin-project = "1.1.10" spin = "0.10.0" pollster.workspace = true url.workspace = true uuid.workspace = true web-time.workspace = true heapless.workspace = true [target.'cfg(target_family = "wasm")'.dependencies] getrandom = { version = "0.3.4", features = ["wasm_js"] } uuid = { workspace = true, features = ["js"] } [target.'cfg(target_os = "macos")'.dependencies] block.workspace = true cocoa.workspace = true cocoa-foundation.workspace = true core-foundation.workspace = true core-foundation-sys.workspace = true core-graphics.workspace = true core-video.workspace = true core-text.workspace = true # WARNING: If you change this, you must also publish a new version of zed-font-kit to crates.io font-kit = { git = "https://github.com/zed-industries/font-kit", rev = "94b0f28166665e8fd2f53ff6d268a14955c82269", package = "zed-font-kit", version = "0.14.1-zed", optional = true } foreign-types.workspace = true log.workspace = true media.workspace = true objc.workspace = true objc2 = { workspace = true, optional = true } objc2-metal = { version = "0.3", optional = true } mach2.workspace = true #TODO: replace with "objc2" metal.workspace = true [target.'cfg(any(target_os = "linux", target_os = "freebsd", target_os = "macos"))'.dependencies] pathfinder_geometry.workspace = true [target.'cfg(any(target_os = "linux", target_os = "freebsd", target_os = "windows"))'.dependencies] scap = { workspace = true, optional = true } [target.'cfg(target_os = "windows")'.dependencies] windows = { workspace = true, features = ["Win32_Foundation", "Win32_System_Power"] } [dev-dependencies] backtrace.workspace = true collections = { workspace = true, features = ["test-support"] } env_logger.workspace = true gpui_platform = { workspace = true, features = ["font-kit", "wayland", "x11"] } gpui_util = { workspace = true } lyon = { version = "1.0", features = ["extra"] } rand.workspace = true scheduler = { workspace = true, features = ["test-support"] } unicode-segmentation = { workspace = true } [target.'cfg(not(target_family = "wasm"))'.dev-dependencies] http_client = { workspace = true, features = ["test-support"] } proptest = { workspace = true } reqwest_client = { workspace = true, features = ["test-support"] } [target.'cfg(target_family = "wasm")'.dev-dependencies] wasm-bindgen = { workspace = true } gpui_web.workspace = true [build-dependencies] embed-resource = { version = "3.0", optional = true } [target.'cfg(target_os = "macos")'.build-dependencies] bindgen = "0.71" cbindgen.workspace = true [[example]] name = "hello_world" path = "examples/hello_world.rs" [[example]] name = "move_entity_between_windows" path = "examples/move_entity_between_windows.rs" [[example]] name = "image" path = "examples/image/image.rs" [[example]] name = "input" path = "examples/input.rs" [[example]] name = "on_window_close_quit" path = "examples/on_window_close_quit.rs" [[example]] name = "window_movable" path = "examples/window_movable.rs" [[example]] name = "opacity" path = "examples/opacity.rs" [[example]] name = "pattern" path = "examples/pattern.rs" [[example]] name = "set_menus" path = "examples/set_menus.rs" [[example]] name = "system_notifications" path = "examples/system_notifications.rs" [[example]] name = "shadow" path = "examples/shadow.rs" [[example]] name = "svg" path = "examples/svg/svg.rs" [[example]] name = "tab_stop" path = "examples/tab_stop.rs" [[example]] name = "text" path = "examples/text.rs" [[example]] name = "text_wrapper" path = "examples/text_wrapper.rs" [[example]] name = "tree" path = "examples/tree.rs" [[example]] name = "uniform_list" path = "examples/uniform_list.rs" [[example]] name = "window_shadow" path = "examples/window_shadow.rs" [[example]] name = "grid_layout" path = "examples/grid_layout.rs" [[example]] name = "list_example" path = "examples/list_example.rs" [[example]] name = "mouse_pressure" path = "examples/mouse_pressure.rs" [[example]] name = "a11y" path = "examples/a11y.rs" [[example]] name = "view_example" path = "examples/view_example/view_example_main.rs"