diff options
Diffstat (limited to 'src/shared_state.rs')
| -rw-r--r-- | src/shared_state.rs | 19 |
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() + } } |
