Skip to main content

rdesktop_core/
lib.rs

1//! rdesktop-core: Core abstractions for the rdesktop dual-engine desktop framework.
2//!
3//! This crate defines the renderer trait that both WebView and Chrome Embedded
4//! backends must implement, along with shared types for IPC, window management,
5//! and application lifecycle.
6//!
7//! ## Architecture Overview
8//!
9//! rdesktop supports two modes:
10//!
11//! - **Native mode**: Opens a real window (WebView or Chrome Embedded)
12//! - **Dev mode**: Serves the app as a web page for browser-based development
13//!
14//! Both modes share the same IPC and configuration types, so application code
15//! works identically in development and production.
16
17pub mod app;
18pub mod config;
19pub mod error;
20pub mod event;
21pub mod global;
22pub mod hotkeys;
23pub mod input;
24pub mod ipc;
25pub mod renderer;
26pub mod simulate;
27pub mod window;
28pub mod window_extras;
29
30#[cfg(target_os = "macos")]
31pub mod hotkeys_mac;
32#[cfg(windows)]
33pub mod hotkeys_win;
34#[cfg(target_os = "macos")]
35pub mod input_mac;
36#[cfg(windows)]
37pub mod input_win;
38#[cfg(target_os = "macos")]
39pub mod simulate_mac;
40#[cfg(windows)]
41pub mod simulate_win;
42
43pub use app::{App, AppBuilder, WindowContent};
44pub use config::{
45    AppConfig, BundleConfig, CommandConfig, DevConfig, GlobalInputConfig, HotkeyConfig,
46    RendererConfig, RendererKind as ConfigRendererKind, WindowConfig, WindowKind,
47};
48pub use error::{RdesktopError, Result};
49pub use event::Event;
50pub use global::{Outbox, PushHandler};
51pub use hotkeys::{Hotkey, HotkeyHandler, HotkeyManager, Key, Modifiers};
52pub use input::{GlobalInput, GlobalInputEvent, GlobalInputHandler, KeyState, MouseButton};
53pub use ipc::{IpcHandler, IpcMessage, IpcResponse};
54pub use renderer::{Renderer, RendererKind, ResizeEdge};
55pub use simulate::InputSimulator;
56pub use window::WindowHandle;
57pub use window_extras::apply_window_attributes;