diff --git a/src/config/handler.rs b/src/config/handler.rs index dea5ceb2..18f785ad 100644 --- a/src/config/handler.rs +++ b/src/config/handler.rs @@ -94,6 +94,7 @@ mod matchers; mod options; mod outputs; mod resources; +mod runtime; mod seats; mod theme; mod windows; @@ -220,59 +221,6 @@ impl ConfigProxyHandler { self.send(&ServerMessage::Response { response: msg }) } - fn handle_log_request( - &self, - level: ConfigLogLevel, - msg: &str, - file: Option<&str>, - line: Option, - ) { - let level = match level { - ConfigLogLevel::Error => Level::Error, - ConfigLogLevel::Warn => Level::Warn, - ConfigLogLevel::Info => Level::Info, - ConfigLogLevel::Debug => Level::Debug, - ConfigLogLevel::Trace => Level::Trace, - }; - let debug = fmt::from_fn(|fmt| { - if let Some(file) = file { - write!(fmt, "{}", file)?; - if let Some(line) = line { - write!(fmt, ":{}", line)?; - } - write!(fmt, ": ")?; - } - write!(fmt, "{}", msg)?; - Ok(()) - }); - log::log!(level, "{:?}", debug); - } - - fn handle_reload(&self) { - self.state.reload_config(); - } - - fn handle_set_status(&self, status: &str) { - self.state.set_status(status); - } - - fn handle_set_env(&self, key: &str, val: &str) { - if let Some(f) = self.state.forker.get() { - f.setenv(key.as_bytes(), val.as_bytes()); - } - } - - fn handle_unset_env(&self, key: &str) { - if let Some(f) = self.state.forker.get() { - f.unsetenv(key.as_bytes()); - } - } - - fn handle_get_config_dir(&self) { - let dir = self.state.config_dir.clone().unwrap_or_default(); - self.respond(Response::GetConfigDir { dir }); - } - fn get_device_handler_data( &self, device: InputDevice, @@ -344,43 +292,6 @@ impl ConfigProxyHandler { } } - fn handle_run( - &self, - prog: &str, - args: Vec, - env: Vec<(String, String)>, - fds: Vec<(i32, i32)>, - ) -> Result<(), CphError> { - let fds: Vec<_> = fds - .into_iter() - .map(|(a, b)| (a, Rc::new(OwnedFd::new(b)))) - .collect(); - let forker = match self.state.forker.get() { - Some(f) => f, - _ => return Err(CphError::NoForker), - }; - let env = env.into_iter().map(|(k, v)| (k, Some(v))).collect(); - forker.spawn(prog.to_string(), args, env, fds); - Ok(()) - } - - fn handle_set_log_level(&self, level: ConfigLogLevel) { - self.state.set_log_level(level.into()); - } - - fn handle_clean_logs_older_than(&self, time: SystemTime) { - self.state.clean_logs_older_than.set(Some(time)); - } - - fn handle_quit(&self) { - log::info!("Quitting"); - self.state.ring.stop(); - } - - fn handle_switch_to(&self, vtnr: u32) { - self.state.backend.get().switch_to(vtnr); - } - pub fn auto_focus(&self, data: &ToplevelData) -> bool { for matcher in self.window_matcher_no_auto_focus.lock().values() { if matcher.node.pull(data) { diff --git a/src/config/handler/runtime.rs b/src/config/handler/runtime.rs new file mode 100644 index 00000000..2b730264 --- /dev/null +++ b/src/config/handler/runtime.rs @@ -0,0 +1,93 @@ +use super::*; + +impl ConfigProxyHandler { + pub(super) fn handle_log_request( + &self, + level: ConfigLogLevel, + msg: &str, + file: Option<&str>, + line: Option, + ) { + let level = match level { + ConfigLogLevel::Error => Level::Error, + ConfigLogLevel::Warn => Level::Warn, + ConfigLogLevel::Info => Level::Info, + ConfigLogLevel::Debug => Level::Debug, + ConfigLogLevel::Trace => Level::Trace, + }; + let debug = fmt::from_fn(|fmt| { + if let Some(file) = file { + write!(fmt, "{}", file)?; + if let Some(line) = line { + write!(fmt, ":{}", line)?; + } + write!(fmt, ": ")?; + } + write!(fmt, "{}", msg)?; + Ok(()) + }); + log::log!(level, "{:?}", debug); + } + + pub(super) fn handle_reload(&self) { + self.state.reload_config(); + } + + pub(super) fn handle_set_status(&self, status: &str) { + self.state.set_status(status); + } + + pub(super) fn handle_set_env(&self, key: &str, val: &str) { + if let Some(f) = self.state.forker.get() { + f.setenv(key.as_bytes(), val.as_bytes()); + } + } + + pub(super) fn handle_unset_env(&self, key: &str) { + if let Some(f) = self.state.forker.get() { + f.unsetenv(key.as_bytes()); + } + } + + pub(super) fn handle_get_config_dir(&self) { + let dir = self.state.config_dir.clone().unwrap_or_default(); + self.respond(Response::GetConfigDir { dir }); + } + + pub(super) fn handle_run( + &self, + prog: &str, + args: Vec, + env: Vec<(String, String)>, + fds: Vec<(i32, i32)>, + ) -> Result<(), CphError> { + let fds: Vec<_> = fds + .into_iter() + .map(|(a, b)| (a, Rc::new(OwnedFd::new(b)))) + .collect(); + let forker = match self.state.forker.get() { + Some(f) => f, + _ => return Err(CphError::NoForker), + }; + let env = env.into_iter().map(|(k, v)| (k, Some(v))).collect(); + forker.spawn(prog.to_string(), args, env, fds); + Ok(()) + } + + pub(super) fn handle_set_log_level(&self, level: ConfigLogLevel) { + self.state.set_log_level(level.into()); + } + + pub(super) fn handle_clean_logs_older_than(&self, time: SystemTime) { + self.state.clean_logs_older_than.set(Some(time)); + } + + pub(super) fn handle_quit(&self) { + log::info!("Quitting"); + self.state.ring.stop(); + } + + pub(super) fn handle_switch_to(&self, vtnr: u32) { + self.state.backend.get().switch_to(vtnr); + } +}