Skip to main content

gpui_platform/
gpui_platform.rs

1//! Abstract platform traits shared by `gpui` and its platform backends.
2//!
3//! This crate is the contract between the GPUI facade and the concrete
4//! platform implementations (`gpui_macos`, `gpui_linux`, `gpui_windows`,
5//! `gpui_web`). It depends only on `gpui_types` and other low-level leaf
6//! crates, never on `gpui`, so a backend can implement these traits without
7//! depending on the entire framework.
8//!
9//! The `gpui` crate re-exports everything here, so consumers keep using
10//! `gpui::PlatformKeyboardMapper` and friends.
11
12#![warn(missing_docs)]
13
14mod app;
15mod clipboard;
16mod cursor;
17mod dispatcher;
18mod display;
19mod executor;
20mod executor_runtime;
21mod gestures;
22mod gpu;
23mod input;
24mod input_handler;
25mod keyboard;
26#[cfg(all(target_os = "linux", feature = "wayland"))]
27pub mod layer_shell;
28mod menu;
29mod notification;
30mod platform;
31mod platform_scheduler;
32mod platform_window;
33pub mod popup;
34pub mod profiler;
35mod prompt;
36#[cfg(any(
37    test,
38    target_os = "windows",
39    target_os = "linux",
40    target_family = "wasm",
41    feature = "test-support",
42    feature = "bench-support"
43))]
44#[expect(missing_docs)]
45pub mod queue;
46#[cfg(all(
47    feature = "screen-capture",
48    any(target_os = "windows", target_os = "linux", target_os = "freebsd",)
49))]
50pub mod scap_screen_capture;
51mod screen_capture;
52#[cfg(any(test, feature = "test-support"))]
53mod test_dispatcher;
54mod text_input;
55mod window;
56mod window_id;
57mod window_metrics;
58
59pub use app::*;
60pub use clipboard::*;
61pub use cursor::*;
62pub use dispatcher::*;
63pub use display::*;
64pub use executor::*;
65pub use executor_runtime::*;
66pub use gestures::*;
67pub use gpu::*;
68pub use gpui_shared_string::*;
69pub use gpui_types::*;
70pub use input::*;
71pub use input_handler::*;
72pub use keyboard::*;
73pub use menu::*;
74pub use notification::*;
75pub use platform::*;
76pub use platform_scheduler::*;
77pub use platform_window::*;
78pub use profiler::{
79    ForegroundRunnableCounter, foreground_runnable_counter, foreground_runnable_finished,
80};
81pub use prompt::*;
82#[cfg(any(
83    test,
84    target_os = "windows",
85    target_os = "linux",
86    target_family = "wasm",
87    feature = "test-support",
88    feature = "bench-support"
89))]
90pub use queue::*;
91pub use screen_capture::*;
92#[cfg(any(test, feature = "test-support"))]
93pub use test_dispatcher::*;
94pub use text_input::*;
95pub use window::*;
96pub use window_id::*;
97pub use window_metrics::*;