use crate::channels::{AsyncSenderExt, BroadcastReceiverExt}; use crate::clients::compositor::BindModeUpdate; use crate::config::{CommonConfig, LayoutConfig, TruncateMode}; use crate::gtk_helpers::IronbarLabelExt; use crate::modules::{Module, ModuleInfo, ModuleParts, WidgetContext}; use crate::{module_impl, spawn}; use color_eyre::Result; use gtk::Label; use gtk::prelude::*; use serde::Deserialize; use tokio::sync::mpsc; use tracing::{info, trace}; #[derive(Debug, Deserialize, Clone)] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] pub struct Bindmode { // -- Common -- /// See [truncate options](module-level-options#truncate-mode). /// /// **Default**: `null` pub truncate: Option, /// See [layout options](module-level-options#layout) #[serde(default, flatten)] layout: LayoutConfig, /// See [common options](module-level-options#common-options). #[serde(flatten)] pub common: Option, } impl Module