mirror of
https://github.com/bevyengine/bevy
synced 2025-02-17 06:28:34 +00:00
# Objective
- Fix Wayland window client side decorations issue on Gnome Wayland,
fixes #3301.
## Solution
- One simple one line solution: Add winit's `wayland-csd-adwaita`
feature to Bevy's `wayland` feature.
Copied from
https://github.com/bevyengine/bevy/issues/3301#issuecomment-1569611257:
### Investigation
1. Gnome forced Wayland apps to implement CSD, whether on their own or
using some libraries like Gnome's official solution
[libdecor](https://gitlab.freedesktop.org/libdecor/libdecor). Many Linux
apps do this with libdecor, like blender, kitty... I think it's not
comfortable for Bevy to fix this problem this way.
2. Winit has support for CSD on
wayland(8bb004a1d9/Cargo.toml (L42)
),
but Bevy disabled Winit's default features, thus no winit's
`wayland-csd-adwaita` feature. And Bevy's `wayland` feature doesn't
include winit's `wayland-csd-adwaita` feature so users can't get window
decorations on Wayland even with Bevy's `wayland` feature enabled.
3. Many rust UI toolkit, like iced, doesn't disable winit's
`wayland-csd-adwaita` feature.
### Conclusion and one Possible solution
Bevy disabled `winit`'s default features in order to decrease package
size. But I think it's acceptable to add `winit`'s `wayland-csd-adwaita`
feature to Bevy's `wayland` feature gate to fix this issue easily for
this only add on crate: sctk-adwaita.
46 lines
1.6 KiB
TOML
46 lines
1.6 KiB
TOML
[package]
|
|
name = "bevy_winit"
|
|
version = "0.11.0-dev"
|
|
edition = "2021"
|
|
description = "A winit window and input backend for Bevy Engine"
|
|
homepage = "https://bevyengine.org"
|
|
repository = "https://github.com/bevyengine/bevy"
|
|
license = "MIT OR Apache-2.0"
|
|
keywords = ["bevy"]
|
|
|
|
[features]
|
|
trace = []
|
|
wayland = ["winit/wayland", "winit/wayland-csd-adwaita"]
|
|
x11 = ["winit/x11"]
|
|
accesskit_unix = ["accesskit_winit/accesskit_unix"]
|
|
|
|
[dependencies]
|
|
# bevy
|
|
bevy_a11y = { path = "../bevy_a11y", version = "0.11.0-dev" }
|
|
bevy_app = { path = "../bevy_app", version = "0.11.0-dev" }
|
|
bevy_derive = { path = "../bevy_derive", version = "0.11.0-dev" }
|
|
bevy_ecs = { path = "../bevy_ecs", version = "0.11.0-dev" }
|
|
bevy_hierarchy = { path = "../bevy_hierarchy", version = "0.11.0-dev" }
|
|
bevy_input = { path = "../bevy_input", version = "0.11.0-dev" }
|
|
bevy_math = { path = "../bevy_math", version = "0.11.0-dev" }
|
|
bevy_window = { path = "../bevy_window", version = "0.11.0-dev" }
|
|
bevy_utils = { path = "../bevy_utils", version = "0.11.0-dev" }
|
|
bevy_tasks = { path = "../bevy_tasks", version = "0.11.0-dev" }
|
|
|
|
# other
|
|
winit = { version = "0.28", default-features = false }
|
|
accesskit_winit = { version = "0.12", default-features = false }
|
|
approx = { version = "0.5", default-features = false }
|
|
raw-window-handle = "0.5"
|
|
|
|
[target.'cfg(target_os = "android")'.dependencies]
|
|
winit = { version = "0.28", default-features = false, features = ["android-native-activity"] }
|
|
once_cell = "1.11"
|
|
|
|
[target.'cfg(target_arch = "wasm32")'.dependencies]
|
|
wasm-bindgen = { version = "0.2" }
|
|
web-sys = "0.3"
|
|
crossbeam-channel = "0.5"
|
|
|
|
[package.metadata.docs.rs]
|
|
features = ["x11"]
|