diff --git a/README.md b/README.md index 1207ef5..7bdb689 100644 --- a/README.md +++ b/README.md @@ -12,5 +12,11 @@ has a unix socket (`/tmp/hinoirisetr.sock`) that accepts four commands ## TODO -- [ ] non compile time config +- [x] добавить логгинг нормальный +- [ ] избавиться от env_logger и написать свой собственный +- [x] сделать файл конфига а не блять компайлтайм конфиг(suckless🤢🤢🤮) +- [ ] сделать свой парсер для конфига после serde +- [ ] заебашить автоматический хотрелоад конфига +- [ ] вместо юзания notify-rust напрямую пользоваться libnotify.so и грузить её через dlopen(чтоб бинарник был маленький ваще) +- [ ] переползти с chrono на time потому что мне похуй не нужна суперточность(а мб и на std::time) - [ ] fix `status` command crash diff --git a/src/main.rs b/src/main.rs index 771fce1..af96215 100644 --- a/src/main.rs +++ b/src/main.rs @@ -150,6 +150,14 @@ async fn main() { let mut sigint = signal(SignalKind::interrupt()).unwrap(); let mut sigterm = signal(SignalKind::terminate()).unwrap(); + // set initial settings + { + let now = Local::now(); + let (temp, gamma) = compute_settings(now, &*config_guard().await); + apply_settings(temp, gamma); + trace!("initial settings applied: {temp}K, {gamma}%"); + } + // Main loop with shutdown support tokio::select! { _ = async { @@ -208,6 +216,27 @@ async fn config_guard() -> tokio::sync::RwLockReadGuard<'static, Config> { CONFIG.get().expect("config not init").read().await } + +fn is_binary_available(binary_name: &str) -> bool { + if let Ok(paths) = env::var("PATH") { + for path in env::split_paths(&paths) { + let full_path = path.join(binary_name); + if full_path.exists() && fs::metadata(&full_path).map(|m| m.is_file()).unwrap_or(false) { + return true; + } + // On Windows, check with .exe extension + #[cfg(windows)] + { + let full_path_exe = path.join(format!("{}.exe", binary_name)); + if full_path_exe.exists() && fs::metadata(&full_path_exe).map(|m| m.is_file()).unwrap_or(false) { + return true; + } + } + } + } + false +} + // fn config_handle() -> Arc> { // CONFIG.get().expect("config not init").clone() // }