[package]name = "gpui"version = "0.1.0"edition = "2021"authors = ["Nathan Sobo <nathan@zed.dev>"]description = "Zed's GPU-accelerated UI framework"publish = falselicense = "Apache-2.0" [lints]workspace = true [features]default = ["http_client", "font-kit", "wayland", "x11"]test-support = [ "backtrace", "collections/test-support", "rand", "util/test-support", "http_client?/test-support", "wayland", "x11",]runtime_shaders = []macos-blade = ["blade-graphics", "blade-macros", "blade-util", "bytemuck"]wayland = [ "blade-graphics", "blade-macros", "blade-util", "bytemuck", "ashpd", "cosmic-text", "font-kit", "calloop-wayland-source", "wayland-backend", "wayland-client", "wayland-cursor", "wayland-protocols", "wayland-protocols-plasma", "filedescriptor", "xkbcommon", "open",]x11 = [ "blade-graphics", "blade-macros", "blade-util", "bytemuck", "ashpd", "cosmic-text", "font-kit", "as-raw-xcb-connection", "x11rb", "xkbcommon", "xim", "x11-clipboard", "filedescriptor", "open",] [lib]path = "src/gpui.rs"doctest = false [dependencies]anyhow.workspace = trueasync-task = "4.7"backtrace = { version = "0.3", optional = true }blade-graphics = { workspace = true, optional = true }blade-macros = { workspace = true, optional = true }blade-util = { workspace = true, optional = true }bytemuck = { version = "1", optional = true }collections.workspace = truector.workspace = truederive_more.workspace = trueetagere = "0.2"futures.workspace = truegpui_macros.workspace = truehttp_client = { optional = true, workspace = true }image = "0.25.1"itertools.workspace = truelinkme = "0.3"log.workspace = truenum_cpus = "1.13"parking = "2.0.0"parking_lot.workspace = truepostage.workspace = trueprofiling.workspace = truerand = { optional = true, workspace = true }raw-window-handle = "0.6"refineable.workspace = trueresvg = { version = "0.44.0", default-features = false }usvg = { version = "0.44.0", default-features = false }schemars.workspace = trueseahash = "4.1"semantic_version.workspace = trueserde.workspace = trueserde_derive.workspace = trueserde_json.workspace = trueslotmap = "1.0.6"smallvec.workspace = truesmol.workspace = truestrum.workspace = truesum_tree.workspace = truetaffy = "0.4.3"thiserror.workspace = trueutil.workspace = trueuuid.workspace = truewaker-fn = "1.2.0" [dev-dependencies]backtrace = "0.3"collections = { workspace = true, features = ["test-support"] }env_logger.workspace = truerand.workspace = trueutil = { workspace = true, features = ["test-support"] }http_client = { workspace = true, features = ["test-support"] }unicode-segmentation.workspace = true [build-dependencies]embed-resource = "3.0" [target.'cfg(target_os = "macos")'.build-dependencies]bindgen = "0.70.0"cbindgen = { version = "0.27.0", default-features = false } [target.'cfg(target_os = "macos")'.dependencies]block = "0.1"cocoa.workspace = truecore-foundation.workspace = truecore-foundation-sys = "0.8"core-graphics = "0.23"core-text = "20.1"font-kit = { git = "https://github.com/zed-industries/font-kit", rev = "40391b7", optional = true}foreign-types = "0.5"log.workspace = truemedia.workspace = truemetal = "0.29"objc = "0.2" [target.'cfg(any(target_os = "linux", target_os = "freebsd", target_os = "macos"))'.dependencies]pathfinder_geometry = "0.5" [target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies]# Always usedflume = "0.11"oo7 = "0.3.0" # Used in both windowing optionsashpd = { workspace = true, optional = true }blade-graphics = { workspace = true, optional = true }blade-macros = { workspace = true, optional = true }blade-util = { workspace = true, optional = true }bytemuck = { version = "1", optional = true }cosmic-text = { git = "https://github.com/pop-os/cosmic-text", rev = "542b20c", optional = true }font-kit = { git = "https://github.com/zed-industries/font-kit", rev = "40391b7", features = [ "source-fontconfig-dlopen",], optional = true }calloop = { version = "0.13.0" }filedescriptor = { version = "0.8.2", optional = true }open = { version = "5.2.0", optional = true } # Waylandcalloop-wayland-source = { version = "0.3.0", optional = true }wayland-backend = { version = "0.3.3", features = [ "client_system", "dlopen",], optional = true }wayland-client = { version = "0.31.2", optional = true }wayland-cursor = { version = "0.31.1", optional = true }wayland-protocols = { version = "0.31.2", features = [ "client", "staging", "unstable",], optional = true }wayland-protocols-plasma = { version = "0.2.0", features = [ "client",], optional = true } # X11as-raw-xcb-connection = { version = "1", optional = true }x11rb = { version = "0.13.1", features = [ "allow-unsafe-code", "xkb", "randr", "xinput", "cursor", "resource_manager", "sync",], optional = true }xkbcommon = { git = "https://github.com/ConradIrwin/xkbcommon-rs", rev = "fcbb4612185cc129ceeff51d22f7fb51810a03b2", features = [ "wayland", "x11",], optional = true }xim = { git = "https://github.com/XDeme1/xim-rs", rev = "d50d461764c2213655cd9cf65a0ea94c70d3c4fd", features = [ "x11rb-xcb", "x11rb-client",], optional = true }x11-clipboard = { version = "0.9.3", optional = true } [target.'cfg(windows)'.dependencies]blade-util.workspace = truebytemuck = "1"blade-graphics.workspace = trueblade-macros.workspace = trueflume = "0.11"rand.workspace = truewindows.workspace = truewindows-core = "0.58" [[example]]name = "hello_world"path = "examples/hello_world.rs" [[example]]name = "image"path = "examples/image/image.rs" [[example]]name = "set_menus"path = "examples/set_menus.rs" [[example]]name = "window_shadow"path = "examples/window_shadow.rs" [[example]]name = "input"path = "examples/input.rs" [[example]]name = "shadow"path = "examples/shadow.rs" [[example]]name = "svg"path = "examples/svg/svg.rs" [[example]]name = "text_wrapper"path = "examples/text_wrapper.rs" [[example]]name = "opacity"path = "examples/opacity.rs" [[example]]name = "uniform_list"path = "examples/uniform_list.rs"
[package]
name = "gpui"
version = "0.1.0"
edition = "2021"
authors = ["Nathan Sobo <nathan@zed.dev>"]
description = "Zed's GPU-accelerated UI framework"
publish = false
license = "Apache-2.0"
[lints]
workspace = true
[features]
default = ["http_client", "font-kit", "wayland", "x11"]
test-support = [
"backtrace",
"collections/test-support",
"rand",
"util/test-support",
"http_client?/test-support",
"wayland",
"x11",
]
runtime_shaders = []
macos-blade = ["blade-graphics", "blade-macros", "blade-util", "bytemuck"]
wayland = [
"blade-graphics",
"blade-macros",
"blade-util",
"bytemuck",
"ashpd",
"cosmic-text",
"font-kit",
"calloop-wayland-source",
"wayland-backend",
"wayland-client",
"wayland-cursor",
"wayland-protocols",
"wayland-protocols-plasma",
"filedescriptor",
"xkbcommon",
"open",
]
x11 = [
"blade-graphics",
"blade-macros",
"blade-util",
"bytemuck",
"ashpd",
"cosmic-text",
"font-kit",
"as-raw-xcb-connection",
"x11rb",
"xkbcommon",
"xim",
"x11-clipboard",
"filedescriptor",
"open",
]
[lib]
path = "src/gpui.rs"
doctest = false
[dependencies]
anyhow.workspace = true
async-task = "4.7"
backtrace = { version = "0.3", optional = true }
blade-graphics = { workspace = true, optional = true }
blade-macros = { workspace = true, optional = true }
blade-util = { workspace = true, optional = true }
bytemuck = { version = "1", optional = true }
collections.workspace = true
ctor.workspace = true
derive_more.workspace = true
etagere = "0.2"
futures.workspace = true
gpui_macros.workspace = true
http_client = { optional = true, workspace = true }
image = "0.25.1"
itertools.workspace = true
linkme = "0.3"
log.workspace = true
num_cpus = "1.13"
parking = "2.0.0"
parking_lot.workspace = true
postage.workspace = true
profiling.workspace = true
rand = { optional = true, workspace = true }
raw-window-handle = "0.6"
refineable.workspace = true
resvg = { version = "0.44.0", default-features = false }
usvg = { version = "0.44.0", default-features = false }
schemars.workspace = true
seahash = "4.1"
semantic_version.workspace = true
serde.workspace = true
serde_derive.workspace = true
serde_json.workspace = true
slotmap = "1.0.6"
smallvec.workspace = true
smol.workspace = true
strum.workspace = true
sum_tree.workspace = true
taffy = "0.4.3"
thiserror.workspace = true
util.workspace = true
uuid.workspace = true
waker-fn = "1.2.0"
[dev-dependencies]
backtrace = "0.3"
collections = { workspace = true, features = ["test-support"] }
env_logger.workspace = true
rand.workspace = true
util = { workspace = true, features = ["test-support"] }
http_client = { workspace = true, features = ["test-support"] }
unicode-segmentation.workspace = true
[build-dependencies]
embed-resource = "3.0"
[target.'cfg(target_os = "macos")'.build-dependencies]
bindgen = "0.70.0"
cbindgen = { version = "0.27.0", default-features = false }
[target.'cfg(target_os = "macos")'.dependencies]
block = "0.1"
cocoa.workspace = true
core-foundation.workspace = true
core-foundation-sys = "0.8"
core-graphics = "0.23"
core-text = "20.1"
font-kit = { git = "https://github.com/zed-industries/font-kit", rev = "40391b7", optional = true}
foreign-types = "0.5"
log.workspace = true
media.workspace = true
metal = "0.29"
objc = "0.2"
[target.'cfg(any(target_os = "linux", target_os = "freebsd", target_os = "macos"))'.dependencies]
pathfinder_geometry = "0.5"
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies]
# Always used
flume = "0.11"
oo7 = "0.3.0"
# Used in both windowing options
ashpd = { workspace = true, optional = true }
blade-graphics = { workspace = true, optional = true }
blade-macros = { workspace = true, optional = true }
blade-util = { workspace = true, optional = true }
bytemuck = { version = "1", optional = true }
cosmic-text = { git = "https://github.com/pop-os/cosmic-text", rev = "542b20c", optional = true }
font-kit = { git = "https://github.com/zed-industries/font-kit", rev = "40391b7", features = [
"source-fontconfig-dlopen",
], optional = true }
calloop = { version = "0.13.0" }
filedescriptor = { version = "0.8.2", optional = true }
open = { version = "5.2.0", optional = true }
# Wayland
calloop-wayland-source = { version = "0.3.0", optional = true }
wayland-backend = { version = "0.3.3", features = [
"client_system",
"dlopen",
], optional = true }
wayland-client = { version = "0.31.2", optional = true }
wayland-cursor = { version = "0.31.1", optional = true }
wayland-protocols = { version = "0.31.2", features = [
"client",
"staging",
"unstable",
], optional = true }
wayland-protocols-plasma = { version = "0.2.0", features = [
"client",
], optional = true }
# X11
as-raw-xcb-connection = { version = "1", optional = true }
x11rb = { version = "0.13.1", features = [
"allow-unsafe-code",
"xkb",
"randr",
"xinput",
"cursor",
"resource_manager",
"sync",
], optional = true }
xkbcommon = { git = "https://github.com/ConradIrwin/xkbcommon-rs", rev = "fcbb4612185cc129ceeff51d22f7fb51810a03b2", features = [
"wayland",
"x11",
], optional = true }
xim = { git = "https://github.com/XDeme1/xim-rs", rev = "d50d461764c2213655cd9cf65a0ea94c70d3c4fd", features = [
"x11rb-xcb",
"x11rb-client",
], optional = true }
x11-clipboard = { version = "0.9.3", optional = true }
[target.'cfg(windows)'.dependencies]
blade-util.workspace = true
bytemuck = "1"
blade-graphics.workspace = true
blade-macros.workspace = true
flume = "0.11"
rand.workspace = true
windows.workspace = true
windows-core = "0.58"
[[example]]
name = "hello_world"
path = "examples/hello_world.rs"
[[example]]
name = "image"
path = "examples/image/image.rs"
[[example]]
name = "set_menus"
path = "examples/set_menus.rs"
[[example]]
name = "window_shadow"
path = "examples/window_shadow.rs"
[[example]]
name = "input"
path = "examples/input.rs"
[[example]]
name = "shadow"
path = "examples/shadow.rs"
[[example]]
name = "svg"
path = "examples/svg/svg.rs"
[[example]]
name = "text_wrapper"
path = "examples/text_wrapper.rs"
[[example]]
name = "opacity"
path = "examples/opacity.rs"
[[example]]
name = "uniform_list"
path = "examples/uniform_list.rs"