fix: apply settings on startup

This commit is contained in:
Vladimir Rubin 2025-04-26 20:06:30 +03:00
parent e828df41ea
commit 2a3ec6df03
Signed by: vavakado
GPG key ID: CAB744727F36B524
2 changed files with 36 additions and 1 deletions

View file

@ -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

View file

@ -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<RwLock<Config>> {
// CONFIG.get().expect("config not init").clone()
// }