pub trait Platform: 'static {
Show 66 methods
// Required methods
fn background_executor(&self) -> BackgroundExecutor;
fn foreground_executor(&self) -> ForegroundExecutor;
fn text_system(&self) -> Arc<dyn PlatformTextSystem> ⓘ;
fn run(&self, on_finish_launching: Box<dyn FnOnce() + 'static>);
fn quit(&self);
fn restart(&self, binary_path: Option<PathBuf>);
fn activate(&self, ignoring_other_apps: bool);
fn hide(&self);
fn hide_other_apps(&self);
fn unhide_other_apps(&self);
fn displays(&self) -> Vec<Rc<dyn PlatformDisplay>>;
fn primary_display(&self) -> Option<Rc<dyn PlatformDisplay>>;
fn active_window(&self) -> Option<AnyWindowHandle>;
fn open_window(
&self,
handle: AnyWindowHandle,
options: WindowParams,
) -> Result<Box<dyn PlatformWindow>>;
fn window_appearance(&self) -> WindowAppearance;
fn open_url(&self, url: &str);
fn on_open_urls(&self, callback: Box<dyn FnMut(Vec<String>)>);
fn register_url_scheme(&self, url: &str) -> Task<Result<()>> ⓘ;
fn prompt_for_paths(
&self,
options: PathPromptOptions,
) -> Receiver<Result<Option<Vec<PathBuf>>>> ⓘ;
fn prompt_for_new_path(
&self,
directory: &Path,
suggested_name: Option<&str>,
) -> Receiver<Result<Option<PathBuf>>> ⓘ;
fn can_select_mixed_files_and_dirs(&self) -> bool;
fn reveal_path(&self, path: &Path);
fn open_with_system(&self, path: &Path);
fn on_quit(&self, callback: Box<dyn FnMut()>);
fn on_reopen(&self, callback: Box<dyn FnMut()>);
fn on_system_wake(&self, callback: Box<dyn FnMut()>);
fn set_menus(&self, menus: Vec<Menu>, keymap: &Keymap);
fn set_dock_menu(&self, menu: Vec<MenuItem>, keymap: &Keymap);
fn on_app_menu_action(&self, callback: Box<dyn FnMut(&dyn Action)>);
fn on_will_open_app_menu(&self, callback: Box<dyn FnMut()>);
fn on_validate_app_menu_command(
&self,
callback: Box<dyn FnMut(&dyn Action) -> bool>,
);
fn thermal_state(&self) -> ThermalState;
fn on_thermal_state_change(&self, callback: Box<dyn FnMut()>);
fn app_path(&self) -> Result<PathBuf>;
fn path_for_auxiliary_executable(&self, name: &str) -> Result<PathBuf>;
fn set_cursor_style(&self, style: CursorStyle);
fn hide_cursor_until_mouse_moves(&self);
fn is_cursor_visible(&self) -> bool;
fn should_auto_hide_scrollbars(&self) -> bool;
fn read_from_clipboard(&self) -> Option<ClipboardItem>;
fn write_to_clipboard(&self, item: ClipboardItem);
fn read_from_primary(&self) -> Option<ClipboardItem>;
fn write_to_primary(&self, item: ClipboardItem);
fn write_credentials(
&self,
url: &str,
username: &str,
password: &[u8],
) -> Task<Result<()>> ⓘ;
fn read_credentials(
&self,
url: &str,
) -> Task<Result<Option<(String, Vec<u8>)>>> ⓘ;
fn delete_credentials(&self, url: &str) -> Task<Result<()>> ⓘ;
fn keyboard_layout(&self) -> Box<dyn PlatformKeyboardLayout>;
fn keyboard_mapper(&self) -> Rc<dyn PlatformKeyboardMapper>;
fn on_keyboard_layout_change(&self, callback: Box<dyn FnMut()>);
// Provided methods
fn window_stack(&self) -> Option<Vec<AnyWindowHandle>> { ... }
fn is_screen_capture_supported(&self) -> bool { ... }
fn screen_capture_sources(
&self,
) -> Receiver<Result<Vec<Rc<dyn ScreenCaptureSource>>>> ⓘ { ... }
fn set_window_appearance(&self, _appearance: Option<WindowAppearance>) { ... }
fn button_layout(&self) -> Option<WindowButtonLayout> { ... }
fn on_app_lifecycle(&self, _callback: Box<dyn FnMut(AppLifecyclePhase)>) { ... }
fn on_memory_warning(&self, _callback: Box<dyn FnMut()>) { ... }
fn gestures(&self) -> Option<Rc<dyn PlatformGestures>> { ... }
fn get_menus(&self) -> Option<Vec<OwnedMenu>> { ... }
fn perform_dock_menu_action(&self, _action: usize) { ... }
fn add_recent_document(&self, _path: &Path) { ... }
fn update_jump_list(
&self,
_menus: Vec<MenuItem>,
_entries: Vec<SmallVec<[PathBuf; 2]>>,
) -> Task<Vec<SmallVec<[PathBuf; 2]>>> ⓘ { ... }
fn set_app_identity(&self, identifier: &str, name: &str) { ... }
fn show_system_notification(&self, notification: SystemNotification) { ... }
fn dismiss_system_notification(&self, tag: &str) { ... }
fn on_system_notification_response(
&self,
callback: Box<dyn FnMut(SystemNotificationResponse)>,
) { ... }
fn compositor_name(&self) -> &'static str { ... }
}Required Methods§
fn background_executor(&self) -> BackgroundExecutor
fn foreground_executor(&self) -> ForegroundExecutor
fn text_system(&self) -> Arc<dyn PlatformTextSystem> ⓘ
fn run(&self, on_finish_launching: Box<dyn FnOnce() + 'static>)
fn quit(&self)
fn restart(&self, binary_path: Option<PathBuf>)
fn activate(&self, ignoring_other_apps: bool)
fn hide(&self)
fn hide_other_apps(&self)
fn unhide_other_apps(&self)
fn displays(&self) -> Vec<Rc<dyn PlatformDisplay>>
fn primary_display(&self) -> Option<Rc<dyn PlatformDisplay>>
fn active_window(&self) -> Option<AnyWindowHandle>
fn open_window( &self, handle: AnyWindowHandle, options: WindowParams, ) -> Result<Box<dyn PlatformWindow>>
Sourcefn window_appearance(&self) -> WindowAppearance
fn window_appearance(&self) -> WindowAppearance
Returns the appearance of the application’s windows.
fn open_url(&self, url: &str)
fn on_open_urls(&self, callback: Box<dyn FnMut(Vec<String>)>)
fn register_url_scheme(&self, url: &str) -> Task<Result<()>> ⓘ
fn prompt_for_paths( &self, options: PathPromptOptions, ) -> Receiver<Result<Option<Vec<PathBuf>>>> ⓘ
fn prompt_for_new_path( &self, directory: &Path, suggested_name: Option<&str>, ) -> Receiver<Result<Option<PathBuf>>> ⓘ
fn can_select_mixed_files_and_dirs(&self) -> bool
fn reveal_path(&self, path: &Path)
fn open_with_system(&self, path: &Path)
fn on_quit(&self, callback: Box<dyn FnMut()>)
fn on_reopen(&self, callback: Box<dyn FnMut()>)
fn on_system_wake(&self, callback: Box<dyn FnMut()>)
fn thermal_state(&self) -> ThermalState
fn on_thermal_state_change(&self, callback: Box<dyn FnMut()>)
fn app_path(&self) -> Result<PathBuf>
fn path_for_auxiliary_executable(&self, name: &str) -> Result<PathBuf>
fn set_cursor_style(&self, style: CursorStyle)
Sourcefn hide_cursor_until_mouse_moves(&self)
fn hide_cursor_until_mouse_moves(&self)
Hides the mouse cursor until the user moves the mouse over one of this application’s windows.
Sourcefn is_cursor_visible(&self) -> bool
fn is_cursor_visible(&self) -> bool
Returns whether the mouse cursor is currently visible.
fn should_auto_hide_scrollbars(&self) -> bool
fn read_from_clipboard(&self) -> Option<ClipboardItem>
fn write_to_clipboard(&self, item: ClipboardItem)
fn read_from_primary(&self) -> Option<ClipboardItem>
fn write_to_primary(&self, item: ClipboardItem)
fn write_credentials( &self, url: &str, username: &str, password: &[u8], ) -> Task<Result<()>> ⓘ
fn read_credentials(&self, url: &str) -> Task<Result<Option<(String, Vec<u8>)>>> ⓘ
fn delete_credentials(&self, url: &str) -> Task<Result<()>> ⓘ
fn keyboard_layout(&self) -> Box<dyn PlatformKeyboardLayout>
fn keyboard_mapper(&self) -> Rc<dyn PlatformKeyboardMapper>
fn on_keyboard_layout_change(&self, callback: Box<dyn FnMut()>)
Provided Methods§
fn window_stack(&self) -> Option<Vec<AnyWindowHandle>>
fn is_screen_capture_supported(&self) -> bool
fn screen_capture_sources( &self, ) -> Receiver<Result<Vec<Rc<dyn ScreenCaptureSource>>>> ⓘ
Sourcefn set_window_appearance(&self, _appearance: Option<WindowAppearance>)
fn set_window_appearance(&self, _appearance: Option<WindowAppearance>)
Overrides the appearance (light/dark) applied to the app’s windows, independent
of the OS-wide setting. Pass None to clear the override and follow the system
again. The override is reflected by Platform::window_appearance.
Currently only implemented on macOS, where it sets NSApplication.appearance so
the native window chrome (the window border and titlebar) of every window matches
a dark app theme even when the system is in light mode (or vice versa). A no-op on
other platforms.
Returns the window button layout configuration when supported.
Sourcefn on_app_lifecycle(&self, _callback: Box<dyn FnMut(AppLifecyclePhase)>)
fn on_app_lifecycle(&self, _callback: Box<dyn FnMut(AppLifecyclePhase)>)
Registers a callback invoked whenever the application’s lifecycle
phase changes. See AppLifecyclePhase for the phase vocabulary and
its mapping onto iOS and Android.
Desktop platforms never invoke this.
Sourcefn on_memory_warning(&self, _callback: Box<dyn FnMut()>)
fn on_memory_warning(&self, _callback: Box<dyn FnMut()>)
Registers a callback invoked when the OS signals memory pressure
(iOS didReceiveMemoryWarning, Android onTrimMemory).
Desktop platforms never invoke this.
Sourcefn gestures(&self) -> Option<Rc<dyn PlatformGestures>>
fn gestures(&self) -> Option<Rc<dyn PlatformGestures>>
The platform’s gesture recognition services, if it provides any
beyond gpui’s portable recognizers. See
PlatformGestures.
fn add_recent_document(&self, _path: &Path)
fn update_jump_list( &self, _menus: Vec<MenuItem>, _entries: Vec<SmallVec<[PathBuf; 2]>>, ) -> Task<Vec<SmallVec<[PathBuf; 2]>>> ⓘ
Sourcefn set_app_identity(&self, identifier: &str, name: &str)
fn set_app_identity(&self, identifier: &str, name: &str)
Sets the application’s process-wide identity and user-visible name.
The identifier is used for platform identity mechanisms such as the Windows AppUserModelID. The name is used wherever the operating system presents the application to the user. Call this once, early in startup, before opening windows or posting notifications.
Sourcefn show_system_notification(&self, notification: SystemNotification)
fn show_system_notification(&self, notification: SystemNotification)
Posts a notification to the operating system’s notification center.
Posting a notification whose SystemNotification::tag matches an
earlier one replaces that notification where the platform supports it.
No-op on platforms without notification support, or when delivery is
unavailable (e.g. authorization was denied).
Sourcefn dismiss_system_notification(&self, tag: &str)
fn dismiss_system_notification(&self, tag: &str)
Removes the delivered or pending notification with this tag.
Best-effort: some platforms cannot retract a notification once shown, in which case it ages out of the notification center on its own.
Sourcefn on_system_notification_response(
&self,
callback: Box<dyn FnMut(SystemNotificationResponse)>,
)
fn on_system_notification_response( &self, callback: Box<dyn FnMut(SystemNotificationResponse)>, )
Registers the callback invoked when the user activates a system notification, either by clicking its body or one of its action buttons.
Implementations must invoke the callback on the main thread.
fn compositor_name(&self) -> &'static str
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".