mod dispatcher;mod headless;mod keyboard;mod platform;#[cfg(any(feature = "wayland", feature = "x11"))]mod text_system;#[cfg(feature = "wayland")]mod wayland;#[cfg(feature = "x11")]mod x11; #[cfg(any(feature = "wayland", feature = "x11"))]mod xdg_desktop_portal; pub use dispatcher::*;pub(crate) use headless::*;pub(crate) use keyboard::*;pub(crate) use platform::*;#[cfg(any(feature = "wayland", feature = "x11"))]pub(crate) use text_system::*;#[cfg(feature = "wayland")]pub(crate) use wayland::*;#[cfg(feature = "x11")]pub(crate) use x11::*; use std::rc::Rc; /// Returns the default platform implementation for the current OS.pub fn current_platform(headless: bool) -> Rc<dyn gpui::Platform> { #[cfg(feature = "x11")] use anyhow::Context as _; if headless { return Rc::new(LinuxPlatform { inner: HeadlessClient::new(), }); } match gpui::guess_compositor() { #[cfg(feature = "wayland")] "Wayland" => Rc::new(LinuxPlatform { inner: WaylandClient::new(), }), #[cfg(feature = "x11")] "X11" => Rc::new(LinuxPlatform { inner: X11Client::new() .context("Failed to initialize X11 client.") .unwrap(), }), "Headless" => Rc::new(LinuxPlatform { inner: HeadlessClient::new(), }), _ => unreachable!(), }}
mod dispatcher;
mod headless;
mod keyboard;
mod platform;
#[cfg(any(feature = "wayland", feature = "x11"))]
mod text_system;
#[cfg(feature = "wayland")]
mod wayland;
#[cfg(feature = "x11")]
mod x11;
#[cfg(any(feature = "wayland", feature = "x11"))]
mod xdg_desktop_portal;
pub use dispatcher::*;
pub(crate) use headless::*;
pub(crate) use keyboard::*;
pub(crate) use platform::*;
#[cfg(any(feature = "wayland", feature = "x11"))]
pub(crate) use text_system::*;
#[cfg(feature = "wayland")]
pub(crate) use wayland::*;
#[cfg(feature = "x11")]
pub(crate) use x11::*;
use std::rc::Rc;
/// Returns the default platform implementation for the current OS.
pub fn current_platform(headless: bool) -> Rc<dyn gpui::Platform> {
#[cfg(feature = "x11")]
use anyhow::Context as _;
if headless {
return Rc::new(LinuxPlatform {
inner: HeadlessClient::new(),
});
}
match gpui::guess_compositor() {
#[cfg(feature = "wayland")]
"Wayland" => Rc::new(LinuxPlatform {
inner: WaylandClient::new(),
}),
#[cfg(feature = "x11")]
"X11" => Rc::new(LinuxPlatform {
inner: X11Client::new()
.context("Failed to initialize X11 client.")
.unwrap(),
}),
"Headless" => Rc::new(LinuxPlatform {
inner: HeadlessClient::new(),
}),
_ => unreachable!(),
}
}