mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-07-06 13:05:11 +02:00
refactor(bar): use monitor idx when switching ws
This commit follows up on a point made by @notTamion in #1128 - since we have the monitor index, we can use it in the bar's workspace widget to more accurately target workspaces via SocketMessage::FocusMonitorWorkspaceNumber.
This commit is contained in:
@@ -4,6 +4,7 @@ use crate::render::RenderConfig;
|
|||||||
use crate::ui::CustomUi;
|
use crate::ui::CustomUi;
|
||||||
use crate::widget::BarWidget;
|
use crate::widget::BarWidget;
|
||||||
use crate::MAX_LABEL_WIDTH;
|
use crate::MAX_LABEL_WIDTH;
|
||||||
|
use crate::MONITOR_INDEX;
|
||||||
use crossbeam_channel::Receiver;
|
use crossbeam_channel::Receiver;
|
||||||
use crossbeam_channel::TryRecvError;
|
use crossbeam_channel::TryRecvError;
|
||||||
use eframe::egui::text::LayoutJob;
|
use eframe::egui::text::LayoutJob;
|
||||||
@@ -103,6 +104,7 @@ impl From<&KomorebiConfig> for Komorebi {
|
|||||||
work_area_offset: None,
|
work_area_offset: None,
|
||||||
focused_container_information: (vec![], vec![], 0),
|
focused_container_information: (vec![], vec![], 0),
|
||||||
stack_accent: None,
|
stack_accent: None,
|
||||||
|
monitor_index: MONITOR_INDEX.load(Ordering::SeqCst),
|
||||||
})),
|
})),
|
||||||
workspaces: value.workspaces,
|
workspaces: value.workspaces,
|
||||||
layout: value.layout,
|
layout: value.layout,
|
||||||
@@ -154,9 +156,12 @@ impl BarWidget for Komorebi {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if proceed
|
if proceed
|
||||||
&& komorebi_client::send_message(&SocketMessage::FocusWorkspaceNumber(
|
&& komorebi_client::send_message(
|
||||||
i,
|
&SocketMessage::FocusMonitorWorkspaceNumber(
|
||||||
))
|
komorebi_notification_state.monitor_index,
|
||||||
|
i,
|
||||||
|
),
|
||||||
|
)
|
||||||
.is_err()
|
.is_err()
|
||||||
{
|
{
|
||||||
tracing::error!(
|
tracing::error!(
|
||||||
@@ -435,6 +440,7 @@ pub struct KomorebiNotificationState {
|
|||||||
pub mouse_follows_focus: bool,
|
pub mouse_follows_focus: bool,
|
||||||
pub work_area_offset: Option<Rect>,
|
pub work_area_offset: Option<Rect>,
|
||||||
pub stack_accent: Option<Color32>,
|
pub stack_accent: Option<Color32>,
|
||||||
|
pub monitor_index: usize,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Copy, Clone, Debug)]
|
#[derive(Copy, Clone, Debug)]
|
||||||
@@ -497,6 +503,8 @@ impl KomorebiNotificationState {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.monitor_index = monitor_index;
|
||||||
|
|
||||||
self.mouse_follows_focus = notification.state.mouse_follows_focus;
|
self.mouse_follows_focus = notification.state.mouse_follows_focus;
|
||||||
|
|
||||||
let monitor = ¬ification.state.monitors.elements()[monitor_index];
|
let monitor = ¬ification.state.monitors.elements()[monitor_index];
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ use std::io::BufReader;
|
|||||||
use std::io::Read;
|
use std::io::Read;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use std::sync::atomic::AtomicI32;
|
use std::sync::atomic::AtomicI32;
|
||||||
|
use std::sync::atomic::AtomicUsize;
|
||||||
use std::sync::atomic::Ordering;
|
use std::sync::atomic::Ordering;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
@@ -47,6 +48,7 @@ pub static MAX_LABEL_WIDTH: AtomicI32 = AtomicI32::new(400);
|
|||||||
pub static MONITOR_LEFT: AtomicI32 = AtomicI32::new(0);
|
pub static MONITOR_LEFT: AtomicI32 = AtomicI32::new(0);
|
||||||
pub static MONITOR_TOP: AtomicI32 = AtomicI32::new(0);
|
pub static MONITOR_TOP: AtomicI32 = AtomicI32::new(0);
|
||||||
pub static MONITOR_RIGHT: AtomicI32 = AtomicI32::new(0);
|
pub static MONITOR_RIGHT: AtomicI32 = AtomicI32::new(0);
|
||||||
|
pub static MONITOR_INDEX: AtomicUsize = AtomicUsize::new(0);
|
||||||
pub static BAR_HEIGHT: f32 = 50.0;
|
pub static BAR_HEIGHT: f32 = 50.0;
|
||||||
|
|
||||||
#[derive(Parser)]
|
#[derive(Parser)]
|
||||||
@@ -233,6 +235,8 @@ fn main() -> color_eyre::Result<()> {
|
|||||||
Ordering::SeqCst,
|
Ordering::SeqCst,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
MONITOR_INDEX.store(config.monitor.index, Ordering::SeqCst);
|
||||||
|
|
||||||
match config.position {
|
match config.position {
|
||||||
None => {
|
None => {
|
||||||
config.position = Some(PositionConfig {
|
config.position = Some(PositionConfig {
|
||||||
|
|||||||
Reference in New Issue
Block a user