[package]
name = "gpui_linux"
version = "0.1.0"
edition.workspace = true
publish.workspace = true
license = "Apache-2.0"

[lints]
workspace = true

[lib]
path = "src/gpui_linux.rs"

[features]
default = ["wayland", "x11"]
test-support = ["gpui/test-support"]
wayland = [
    "bitflags",
    "gpui_wgpu",
    "ashpd/wayland",

    "calloop-wayland-source",
    "wayland-backend",
    "wayland-client",
    "wayland-cursor",
    "wayland-protocols",
    "wayland-protocols-plasma",
    "wayland-protocols-wlr",
    "filedescriptor",
    "xkbcommon",
    "open",
    "gpui/wayland",
]
x11 = [
    "gpui_wgpu",
    "ashpd",

    "as-raw-xcb-connection",
    "x11rb",
    "xkbcommon",
    "xim",
    "x11-clipboard",
    "filedescriptor",
    "open",
    "scap?/x11",
]
screen-capture = [
    "gpui/screen-capture",
    "scap",
]


[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies]
anyhow.workspace = true
bytemuck = "1"
collections.workspace = true
futures.workspace = true
gpui.workspace = true
gpui_wgpu = { workspace = true, optional = true, features = ["font-kit"] }
http_client.workspace = true
itertools.workspace = true
libc.workspace = true
log.workspace = true
parking_lot.workspace = true
pathfinder_geometry = "0.5"
pollster.workspace = true
profiling.workspace = true
smallvec.workspace = true
smol.workspace = true
strum.workspace = true
url.workspace = true
util.workspace = true
uuid.workspace = true

# Always used
oo7 = { version = "0.6", default-features = false, features = [
    "async-std",
    "native_crypto",
] }
calloop = "0.14.3"
raw-window-handle = "0.6"

# Used in both windowing options
ashpd = { workspace = true, optional = true }
swash = { version = "0.2.6" }
bitflags = { workspace = true, optional = true }
filedescriptor = { version = "0.8.2", optional = true }
open = { version = "5.2.0", optional = true }
xkbcommon = { version = "0.8.0", features = ["wayland", "x11"], optional = true }

# Screen capture
scap = { workspace = true, optional = true }

# Wayland
calloop-wayland-source = { version = "0.4.1", optional = true }
wayland-backend = { version = "0.3.3", features = [
    "client_system",
    "dlopen",
], optional = true }
wayland-client = { version = "0.31.11", optional = true }
wayland-cursor = { version = "0.31.11", optional = true }
wayland-protocols = { version = "0.32.9", features = [
    "client",
    "staging",
    "unstable",
], optional = true }
wayland-protocols-plasma = { version = "0.3.9", features = [
    "client",
], optional = true }
wayland-protocols-wlr = { version = "0.3.9", 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 }
# WARNING: If you change this, you must also publish a new version of zed-xim to crates.io
xim = { git = "https://github.com/zed-industries/xim-rs.git", rev = "16f35a2c881b815a2b6cdfd6687988e84f8447d8", features = [
    "x11rb-xcb",
    "x11rb-client",
], package = "zed-xim", version = "0.4.0-zed", optional = true }
x11-clipboard = { version = "0.9.3", optional = true }
