1pub use dais_core::monitor::{MonitorInfo, MonitorManager};
8
9#[cfg(target_os = "windows")]
10pub mod windows;
11
12#[cfg(target_os = "macos")]
13pub mod macos;
14
15#[cfg(all(target_os = "linux", feature = "x11"))]
16pub mod linux_x11;
17
18#[cfg(all(target_os = "linux", feature = "wayland"))]
19pub mod linux_wayland;
20
21#[cfg(target_os = "windows")]
23pub fn create_monitor_manager() -> impl MonitorManager {
24 windows::WindowsMonitorManager::new()
25}
26
27#[cfg(target_os = "macos")]
28pub fn create_monitor_manager() -> impl MonitorManager {
29 macos::MacOsMonitorManager::new()
30}
31
32#[cfg(all(target_os = "linux", feature = "x11"))]
33pub fn create_monitor_manager() -> impl MonitorManager {
34 linux_x11::X11MonitorManager::new()
35}
36
37#[cfg(all(target_os = "linux", not(feature = "x11")))]
38pub fn create_monitor_manager() -> impl MonitorManager {
39 LinuxFallbackMonitorManager
40}
41
42#[cfg(all(target_os = "linux", not(feature = "x11")))]
44struct LinuxFallbackMonitorManager;
45
46#[cfg(all(target_os = "linux", not(feature = "x11")))]
47impl MonitorManager for LinuxFallbackMonitorManager {
48 fn available_monitors(&self) -> Vec<MonitorInfo> {
49 tracing::warn!("no Linux display backend compiled in; build with --features x11");
50 Vec::new()
51 }
52}