fix: apply settings on startup
This commit is contained in:
parent
e828df41ea
commit
2a3ec6df03
2 changed files with 36 additions and 1 deletions
|
@ -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
|
||||
|
|
29
src/main.rs
29
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<RwLock<Config>> {
|
||||
// CONFIG.get().expect("config not init").clone()
|
||||
// }
|
||||
|
|
Loading…
Reference in a new issue