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 options;
|
||||||
mod outputs;
|
mod outputs;
|
||||||
mod resources;
|
mod resources;
|
||||||
|
mod runtime;
|
||||||
mod seats;
|
mod seats;
|
||||||
mod theme;
|
mod theme;
|
||||||
mod windows;
|
mod windows;
|
||||||
|
|
@ -220,59 +221,6 @@ impl ConfigProxyHandler {
|
||||||
self.send(&ServerMessage::Response { response: msg })
|
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(
|
fn get_device_handler_data(
|
||||||
&self,
|
&self,
|
||||||
device: InputDevice,
|
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 {
|
pub fn auto_focus(&self, data: &ToplevelData) -> bool {
|
||||||
for matcher in self.window_matcher_no_auto_focus.lock().values() {
|
for matcher in self.window_matcher_no_auto_focus.lock().values() {
|
||||||
if matcher.node.pull(data) {
|
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