config: split runtime handling
This commit is contained in:
parent
d74c56fc76
commit
08b37552e2
2 changed files with 94 additions and 90 deletions
|
|
@ -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<u32>,
|
||||
) {
|
||||
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<String>,
|
||||
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) {
|
||||
|
|
|
|||
93
src/config/handler/runtime.rs
Normal file
93
src/config/handler/runtime.rs
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
use super::*;
|
||||
|
||||
impl ConfigProxyHandler {
|
||||
pub(super) fn handle_log_request(
|
||||
&self,
|
||||
level: ConfigLogLevel,
|
||||
msg: &str,
|
||||
file: Option<&str>,
|
||||
line: Option<u32>,
|
||||
) {
|
||||
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<String>,
|
||||
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);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue