diff --git a/src/config/common.rs b/src/config/common.rs index 286e294..876334a 100644 --- a/src/config/common.rs +++ b/src/config/common.rs @@ -40,6 +40,19 @@ pub enum TransitionType { SlideEnd, } +#[derive(Debug, Deserialize, Clone)] +#[serde(rename_all = "snake_case")] +pub enum ModuleOrientation { + Horizontal, + Vertical, +} + +impl Default for ModuleOrientation { + fn default() -> Self { + ModuleOrientation::Horizontal + } +} + impl TransitionType { pub const fn to_revealer_transition_type( &self, diff --git a/src/config/mod.rs b/src/config/mod.rs index 52fcb8d..e57fac8 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -34,7 +34,7 @@ use color_eyre::Result; use serde::Deserialize; use std::collections::HashMap; -pub use self::common::{CommonConfig, TransitionType}; +pub use self::common::{CommonConfig, ModuleOrientation, TransitionType}; pub use self::truncate::TruncateMode; #[derive(Debug, Deserialize, Clone)] diff --git a/src/modules/clock.rs b/src/modules/clock.rs index 9978716..295ae13 100644 --- a/src/modules/clock.rs +++ b/src/modules/clock.rs @@ -8,7 +8,7 @@ use serde::Deserialize; use tokio::sync::{broadcast, mpsc}; use tokio::time::sleep; -use crate::config::CommonConfig; +use crate::config::{CommonConfig, ModuleOrientation}; use crate::gtk_helpers::IronbarGtkExt; use crate::modules::{ Module, ModuleInfo, ModuleParts, ModulePopup, ModuleUpdateEvent, PopupButton, WidgetContext, @@ -31,6 +31,9 @@ pub struct ClockModule { #[serde(default = "default_locale")] locale: String, + #[serde(default)] + orientation: ModuleOrientation, + #[serde(flatten)] pub common: Option, } @@ -41,6 +44,7 @@ impl Default for ClockModule { format: default_format(), format_popup: default_popup_format(), locale: default_locale(), + orientation: ModuleOrientation::Horizontal, common: Some(CommonConfig::default()), } } @@ -97,10 +101,15 @@ impl Module