From 73446cac559b10adf4beb5567a816d1be5273457 Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Mon, 19 May 2025 15:53:47 +0000 Subject: Support disabling WM support (#45) Most people profit from a bar that supports multiple compositors. But some (like me), depend on special features of a compositor and as such only ever use one of the supported compositors. Being able to disable support for the others, at compile time, allows them to remove dead code from their system. --- src/shared_state.rs | 3 +++ src/wm_info_provider.rs | 9 +++++++++ 2 files changed, 12 insertions(+) (limited to 'src') 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 { ::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, config: &WmConfig) -> Box { + #[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); } -- cgit v1.3.1