summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/shared_state.rs3
-rw-r--r--src/wm_info_provider.rs9
2 files changed, 12 insertions, 0 deletions
diff --git a/src/shared_state.rs b/src/shared_state.rs
index 169107b..015fa08 100644
--- a/src/shared_state.rs
+++ b/src/shared_state.rs
@@ -22,14 +22,17 @@ impl SharedState {
<dyn Any>::downcast_mut(self.wm_info_provider.as_mut())
}
+ #[cfg(feature = "river")]
pub fn get_river(&mut self) -> Option<&mut wm_info_provider::RiverInfoProvider> {
self.downcast_provider()
}
+ #[cfg(feature = "hyprland")]
pub fn get_hyprland(&mut self) -> Option<&mut wm_info_provider::HyprlandInfoProvider> {
self.downcast_provider()
}
+ #[cfg(feature = "niri")]
pub fn get_niri(&mut self) -> Option<&mut wm_info_provider::NiriInfoProvider> {
self.downcast_provider()
}
diff --git a/src/wm_info_provider.rs b/src/wm_info_provider.rs
index 4c5e904..2beff89 100644
--- a/src/wm_info_provider.rs
+++ b/src/wm_info_provider.rs
@@ -12,13 +12,19 @@ use crate::state::State;
mod dummy;
pub use dummy::*;
+#[cfg(feature = "river")]
mod river;
+#[cfg(feature = "river")]
pub use river::*;
+#[cfg(feature = "hyprland")]
mod hyprland;
+#[cfg(feature = "hyprland")]
pub use hyprland::*;
+#[cfg(feature = "niri")]
mod niri;
+#[cfg(feature = "niri")]
pub use niri::*;
pub trait WmInfoProvider: Any {
@@ -49,14 +55,17 @@ pub trait WmInfoProvider: Any {
}
pub fn bind(conn: &mut Connection<State>, config: &WmConfig) -> Box<dyn WmInfoProvider> {
+ #[cfg(feature = "river")]
if let Some(river) = RiverInfoProvider::bind(conn, config) {
return Box::new(river);
}
+ #[cfg(feature = "hyprland")]
if let Some(hyprland) = HyprlandInfoProvider::new() {
return Box::new(hyprland);
}
+ #[cfg(feature = "niri")]
if let Some(niri) = NiriInfoProvider::new() {
return Box::new(niri);
}