mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-09-17 15:21:26 +02:00
feat(stackbar): add stackbar manager module
This commit removes all stackbar-related code from Container, Workspace, process_command, process_event etc. and centralizes it in the new stackbar_manager module. Instead of trying to figure out where in process_event and process_command we should make stackbar-related changes, a notification gets sent to a channel that stackbar_manager listens to whenever an event or command has finished processing. The stackbar_manager listener, upon receiving a notification, acquires a lock on the WindowManager instance and updates stackbars for the focused workspace on every monitor; this allows us to centralize all edge case handling within the stackbar_manager listener's loop. Global state related to stackbars has also been moved into the stackbar_manager module, which also tracks the state of stackbar objects (STACKBAR_STATE), mappings between stackbars and containers (STACKBARS_CONTAINERS) and the mappings between stackbars and monitors (STACKBARS_MONITORS). A number of edge cases around stackbar behaviour have been addressed in this commit (re #832), and stackbars now respect the "border_style" configuration option.
This commit is contained in:
+1
-13
@@ -10,7 +10,7 @@ pub mod process_command;
|
||||
pub mod process_event;
|
||||
pub mod process_movement;
|
||||
pub mod set_window_position;
|
||||
pub mod stackbar;
|
||||
pub mod stackbar_manager;
|
||||
pub mod static_config;
|
||||
pub mod styles;
|
||||
pub mod window;
|
||||
@@ -40,7 +40,6 @@ use std::sync::Arc;
|
||||
pub use colour::*;
|
||||
pub use process_command::*;
|
||||
pub use process_event::*;
|
||||
pub use stackbar::*;
|
||||
pub use static_config::*;
|
||||
pub use window::*;
|
||||
pub use window_manager::*;
|
||||
@@ -49,7 +48,6 @@ pub use windows_api::WindowsApi;
|
||||
pub use windows_api::*;
|
||||
|
||||
use color_eyre::Result;
|
||||
use crossbeam_utils::atomic::AtomicCell;
|
||||
use komorebi_core::config_generation::IdWithIdentifier;
|
||||
use komorebi_core::config_generation::MatchingRule;
|
||||
use komorebi_core::config_generation::MatchingStrategy;
|
||||
@@ -57,8 +55,6 @@ use komorebi_core::ApplicationIdentifier;
|
||||
use komorebi_core::HidingBehaviour;
|
||||
use komorebi_core::Rect;
|
||||
use komorebi_core::SocketMessage;
|
||||
use komorebi_core::StackbarLabel;
|
||||
use komorebi_core::StackbarMode;
|
||||
use os_info::Version;
|
||||
use parking_lot::Mutex;
|
||||
use regex::Regex;
|
||||
@@ -215,14 +211,6 @@ pub static SESSION_ID: AtomicU32 = AtomicU32::new(0);
|
||||
|
||||
pub static REMOVE_TITLEBARS: AtomicBool = AtomicBool::new(false);
|
||||
|
||||
pub static STACKBAR_FOCUSED_TEXT_COLOUR: AtomicU32 = AtomicU32::new(16777215); // white
|
||||
pub static STACKBAR_UNFOCUSED_TEXT_COLOUR: AtomicU32 = AtomicU32::new(11776947); // gray text
|
||||
pub static STACKBAR_TAB_BACKGROUND_COLOUR: AtomicU32 = AtomicU32::new(3355443); // gray
|
||||
pub static STACKBAR_TAB_HEIGHT: AtomicI32 = AtomicI32::new(40);
|
||||
pub static STACKBAR_TAB_WIDTH: AtomicI32 = AtomicI32::new(200);
|
||||
pub static STACKBAR_LABEL: AtomicCell<StackbarLabel> = AtomicCell::new(StackbarLabel::Process);
|
||||
pub static STACKBAR_MODE: AtomicCell<StackbarMode> = AtomicCell::new(StackbarMode::Never);
|
||||
|
||||
#[must_use]
|
||||
pub fn current_virtual_desktop() -> Option<Vec<u8>> {
|
||||
let hkcu = RegKey::predef(HKEY_CURRENT_USER);
|
||||
|
||||
Reference in New Issue
Block a user