Files
jmb-bar/src/config.rs
2026-11-02 17:26:51 +01:00

79 lines
1.6 KiB
Rust

use serde::Deserialize;
use std::default::Default;
use std::fs;
#[derive(Deserialize, Debug, Clone, Default)]
pub(crate) struct Config {
pub idle: IdleConfig,
}
impl Config {
pub fn load() -> Config {
fs::read_to_string("jmb-bar.conf")
.ok()
.and_then(|s| toml::from_str::<Config>(&s).ok())
.unwrap_or_default()
}
}
#[derive(Deserialize, Debug, Clone)]
pub(crate) struct IdleConfig {
idle_timeout: u64,
dim_timeout: u64,
lock_timeout: u64,
sleep_timeout: u64,
lock_command: String,
sleep_command: String,
}
impl Default for IdleConfig {
fn default() -> Self {
Self {
idle_timeout: 20,
dim_timeout: 60,
lock_timeout: 300,
sleep_timeout: 320,
lock_command: String::default(),
sleep_command: String::default(),
}
}
}
impl IdleConfig {
pub fn idle_timeout(&self) -> u64 {
self.idle_timeout
}
pub fn dim_timeout(&self) -> u64 {
self.dim_timeout
}
pub fn lock_timeout(&self) -> u64 {
self.lock_timeout
}
pub fn sleep_timeout(&self) -> u64 {
self.sleep_timeout
}
pub fn dim_timeout_delta(&self) -> u64 {
self.dim_timeout - self.idle_timeout
}
pub fn lock_timeout_delta(&self) -> u64 {
self.lock_timeout - self.dim_timeout_delta()
}
pub fn sleep_timeout_delta(&self) -> u64 {
self.sleep_timeout - self.lock_timeout_delta()
}
pub fn lock_command(&self) -> &str {
&self.lock_command
}
pub fn sleep_command(&self) -> &str {
&self.sleep_command
}
}