[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-support = ["profiler", "dep:criterion"] # Preserve the published feature name while consumers migrate to `bench-support`. bench = ["bench-support"] inspector = ["gpui_macros/inspector"] leak-detection = ["backtrace"] wayland = [] x11 = [ "scap?/x11", ] screen-capture = [ "scap", ] windows-manifest = ["dep:embed-resource"] profiler = ["dep:hdrhistogram"] stacker = ["dep:stacksafe"] [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 stacksafe = { workspace = true, optional = true } strum.workspace = true sum_tree.workspace = true taffy = "=0.13.0" thiserror.workspace = true tracing.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 ztracing.workspace = true [target.'cfg(all(target_arch = "wasm32", target_os = "unknown"))'.dependencies] # Workspace inheritance would re-enable defaults, including blocking channel synchronization. async-channel = { version = "2.5.0", default-features = false } [target.'cfg(not(all(target_arch = "wasm32", target_os = "unknown")))'.dependencies] async-channel.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] core-video.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 } log.workspace = true objc2 = { workspace = true, optional = true } objc2-metal = { version = "0.3", optional = 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 } web-sys = { version = "0.3", features = ["console"] } [build-dependencies] embed-resource = { version = "3.0", optional = true } [target.'cfg(target_os = "macos")'.build-dependencies] bindgen = "0.72" [package.metadata.cargo-shear] ignored = [ "bindgen", "font-kit", "getrandom", "objc2", "objc2-metal", "tracing", ] ignored-paths = ["src/_ownership_and_data_flow.rs"] [[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"