diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/api/wayland/context.rs | 42 | ||||
| -rw-r--r-- | src/api/wayland/mod.rs | 3 | 
2 files changed, 44 insertions, 1 deletions
| diff --git a/src/api/wayland/context.rs b/src/api/wayland/context.rs new file mode 100644 index 0000000..4fc743b --- /dev/null +++ b/src/api/wayland/context.rs @@ -0,0 +1,42 @@ +use wayland_client::EventIterator; +use wayland_client::wayland::get_display; +use wayland_client::wayland::compositor::WlCompositor; +use wayland_client::wayland::seat::WlSeat; +use wayland_client::wayland::shell::WlShell; +use wayland_client::wayland::shm::WlShm; +use wayland_client::wayland::subcompositor::WlSubcompositor; + +lazy_static! { +    pub static ref WAYLAND_CONTEXT: Option<WaylandContext> = { +        WaylandContext::init() +    }; +} + +wayland_env!(InnerEnv, +    compositor: WlCompositor, +    seat: WlSeat, +    shell: WlShell, +    shm: WlShm, +    subcompositor: WlSubcompositor +); + +pub struct WaylandContext { +    inner: InnerEnv, +    iterator: EventIterator +} + +impl WaylandContext { +    fn init() -> Option<WaylandContext> { +        let display = match get_display() { +            Some(display) => display, +            None => return None +        }; + +        let (inner_env, iterator) = InnerEnv::init(display); + +        Some(WaylandContext { +            inner: inner_env, +            iterator: iterator +        }) +    } +}
\ No newline at end of file diff --git a/src/api/wayland/mod.rs b/src/api/wayland/mod.rs index 246a9e4..f30389c 100644 --- a/src/api/wayland/mod.rs +++ b/src/api/wayland/mod.rs @@ -6,10 +6,11 @@ pub use self::window::{PollEventsIterator, WaitEventsIterator, Window, WindowPro  extern crate wayland_kbd;  extern crate wayland_window; +mod context;  mod monitor;  mod window;  #[inline]  pub fn is_available() -> bool { -    false +    context::WAYLAND_CONTEXT.is_some()  } | 
