mod popup; use self::popup::Popup; use crate::modules::{Module, ModuleInfo}; use crate::popup::PopupAlignment; use chrono::Local; use glib::Continue; use gtk::prelude::*; use gtk::{Button, Orientation}; use serde::Deserialize; use tokio::spawn; use tokio::time::sleep; #[derive(Debug, Deserialize, Clone)] pub struct ClockModule { /// Date/time format string. /// Default: `%d/%m/%Y %H:%M` /// /// Detail on available tokens can be found here: /// #[serde(default = "default_format")] pub(crate) format: String, } fn default_format() -> String { String::from("%d/%m/%Y %H:%M") } impl Module