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(target_os = "windows")]
20pub fn create_monitor_manager() -> impl MonitorManager {
21 windows::WindowsMonitorManager::new()
22}
23
24#[cfg(target_os = "macos")]
25pub fn create_monitor_manager() -> impl MonitorManager {
26 macos::MacOsMonitorManager::new()
27}
28
29#[cfg(all(target_os = "linux", feature = "x11"))]
30pub fn create_monitor_manager() -> impl MonitorManager {
31 linux_x11::X11MonitorManager::new()
32}
33
34#[cfg(all(target_os = "linux", not(feature = "x11")))]
35pub fn create_monitor_manager() -> impl MonitorManager {
36 LinuxFallbackMonitorManager
37}
38
39#[cfg(all(target_os = "linux", not(feature = "x11")))]
41struct LinuxFallbackMonitorManager;
42
43#[cfg(all(target_os = "linux", not(feature = "x11")))]
44impl MonitorManager for LinuxFallbackMonitorManager {
45 fn available_monitors(&self) -> Vec<MonitorInfo> {
46 tracing::warn!("no Linux display backend compiled in; build with --features x11");
47 Vec::new()
48 }
49}