mirror of
https://github.com/zed-industries/zed.git
synced 2026-05-24 05:25:18 +00:00
Closes #30644 Many X11 environments expect a window icon to be supplied [as pixel data on a window property `_NET_WM_ICON`](https://specifications.freedesktop.org/wm-spec/1.4/ar01s05.html#id-1.6.13). I confirmed this change fixes the icon in xfce4 for me, I think its likely it also fixes https://github.com/zed-industries/zed/issues/37961 but I haven't tested it. ## Questions * [`image::RgbaImage` is exposed to the public API of gpui](https://github.com/zed-industries/zed/pull/40096/files#diff-318f166d72ad9476bd0a116446f5db3897fc1a4eb1d49aaf8105608bcf49ea53R1136). I would guess this is undesirable, but I wasn't sure of the best way to use gpui's native `Image` type.. * Currently [the icon is embedded into the binary](https://github.com/zed-industries/zed/pull/40096/files#diff-89af0b4072205c53b518aa977d6be48997e1a51fa4dbf06c7ddd1fec99fc510eR101). If this is undesirable, zed could alternatively implement [icon lookup](https://specifications.freedesktop.org/icon-theme-spec/latest/#icon_lookup) and try and find its icon from the system at runtime. ## Future work * It might be nice to expose a `set_window_icon` method also (it could be used for example to show dirty state in the icon somehow), but I'm unfamiliar with what other platforms support and if this could be beyond X11 (there is a [wayland protocol](https://wayland.app/protocols/xdg-toplevel-icon-v1) though!). Release Notes: - Fixed missing window icon on X11 --------- Co-authored-by: Yara <git@yara.blue>
132 lines
3.2 KiB
TOML
132 lines
3.2 KiB
TOML
[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
|
|
image.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",
|
|
"dri3",
|
|
], 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 }
|