summaryrefslogtreecommitdiff
path: root/src/shared_state.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared_state.rs')
-rw-r--r--src/shared_state.rs19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/shared_state.rs b/src/shared_state.rs
index 2e87749..936b29a 100644
--- a/src/shared_state.rs
+++ b/src/shared_state.rs
@@ -1,6 +1,8 @@
use crate::{
- blocks_cache::BlocksCache, config::Config, status_cmd::StatusCmd,
- wm_info_provider::WmInfoProvider,
+ blocks_cache::BlocksCache,
+ config::Config,
+ status_cmd::StatusCmd,
+ wm_info_provider::{self, WmInfoProvider},
};
use wayrs_utils::shm_alloc::ShmAlloc;
@@ -10,5 +12,16 @@ pub struct SharedState {
pub config: Config,
pub status_cmd: Option<StatusCmd>,
pub blocks_cache: BlocksCache,
- pub wm_info_provider: WmInfoProvider,
+ pub wm_info_provider: Option<Box<dyn WmInfoProvider>>,
+}
+
+impl SharedState {
+ pub fn get_river(&mut self) -> Option<&mut wm_info_provider::RiverInfoProvider> {
+ self.wm_info_provider.as_mut()?.as_any().downcast_mut()
+ }
+
+ #[cfg(feature = "hyprland")]
+ pub fn get_ewu(&mut self) -> Option<&mut wm_info_provider::ExtWorkspaceUnstable> {
+ self.wm_info_provider.as_mut()?.as_any().downcast_mut()
+ }
}