feat: add --no-daemonize flag that disables daemonizing eww (fixes #288)
This commit is contained in:
parent
d708902c03
commit
c50bfb7184
3 changed files with 17 additions and 10 deletions
|
|
@ -65,7 +65,7 @@ fn main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// a running daemon is necessary for this command
|
// a running daemon is necessary for this command
|
||||||
opts::Action::WithServer(action) if action.can_start_daemon() => {
|
opts::Action::WithServer(action) if action.can_start_daemon() && !opts.no_daemonize => {
|
||||||
if opts.restart {
|
if opts.restart {
|
||||||
let _ = handle_server_command(&paths, &ActionWithServer::KillServer, 1);
|
let _ = handle_server_command(&paths, &ActionWithServer::KillServer, 1);
|
||||||
std::thread::sleep(std::time::Duration::from_millis(200));
|
std::thread::sleep(std::time::Duration::from_millis(200));
|
||||||
|
|
@ -83,7 +83,7 @@ fn main() {
|
||||||
|
|
||||||
let (command, response_recv) = action.into_daemon_command();
|
let (command, response_recv) = action.into_daemon_command();
|
||||||
// start the daemon and give it the command
|
// start the daemon and give it the command
|
||||||
let fork_result = server::initialize_server(paths.clone(), Some(command))?;
|
let fork_result = server::initialize_server(paths.clone(), Some(command), true)?;
|
||||||
let is_parent = fork_result == ForkResult::Parent;
|
let is_parent = fork_result == ForkResult::Parent;
|
||||||
if let (Some(recv), true) = (response_recv, is_parent) {
|
if let (Some(recv), true) = (response_recv, is_parent) {
|
||||||
listen_for_daemon_response(recv);
|
listen_for_daemon_response(recv);
|
||||||
|
|
@ -115,8 +115,8 @@ fn main() {
|
||||||
if !opts.show_logs {
|
if !opts.show_logs {
|
||||||
println!("Run `{} logs` to see any errors while editing your configuration.", eww_binary_name);
|
println!("Run `{} logs` to see any errors while editing your configuration.", eww_binary_name);
|
||||||
}
|
}
|
||||||
let fork_result = server::initialize_server(paths.clone(), None)?;
|
let fork_result = server::initialize_server(paths.clone(), None, !opts.no_daemonize)?;
|
||||||
fork_result == ForkResult::Parent
|
opts.no_daemonize || fork_result == ForkResult::Parent
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
if would_show_logs && opts.show_logs {
|
if would_show_logs && opts.show_logs {
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ pub struct Opt {
|
||||||
pub restart: bool,
|
pub restart: bool,
|
||||||
pub config_path: Option<std::path::PathBuf>,
|
pub config_path: Option<std::path::PathBuf>,
|
||||||
pub action: Action,
|
pub action: Action,
|
||||||
|
pub no_daemonize: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(StructOpt, Debug, Serialize, Deserialize, PartialEq)]
|
#[derive(StructOpt, Debug, Serialize, Deserialize, PartialEq)]
|
||||||
|
|
@ -34,6 +35,10 @@ struct RawOpt {
|
||||||
#[structopt(long = "logs", global = true)]
|
#[structopt(long = "logs", global = true)]
|
||||||
show_logs: bool,
|
show_logs: bool,
|
||||||
|
|
||||||
|
/// Avoid daemonizing eww.
|
||||||
|
#[structopt(long = "no-daemonize", global = true)]
|
||||||
|
no_daemonize: bool,
|
||||||
|
|
||||||
/// Restart the daemon completely before running the command
|
/// Restart the daemon completely before running the command
|
||||||
#[structopt(long = "restart", global = true)]
|
#[structopt(long = "restart", global = true)]
|
||||||
restart: bool,
|
restart: bool,
|
||||||
|
|
@ -163,8 +168,8 @@ impl Opt {
|
||||||
|
|
||||||
impl From<RawOpt> for Opt {
|
impl From<RawOpt> for Opt {
|
||||||
fn from(other: RawOpt) -> Self {
|
fn from(other: RawOpt) -> Self {
|
||||||
let RawOpt { action, log_debug, show_logs, config, restart } = other;
|
let RawOpt { log_debug, config, show_logs, no_daemonize, restart, action } = other;
|
||||||
Opt { action, log_debug, show_logs, config_path: config, restart }
|
Opt { log_debug, show_logs, restart, config_path: config, action, no_daemonize }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ use std::{
|
||||||
};
|
};
|
||||||
use tokio::sync::mpsc::*;
|
use tokio::sync::mpsc::*;
|
||||||
|
|
||||||
pub fn initialize_server(paths: EwwPaths, action: Option<DaemonCommand>) -> Result<ForkResult> {
|
pub fn initialize_server(paths: EwwPaths, action: Option<DaemonCommand>, should_daemonize: bool) -> Result<ForkResult> {
|
||||||
let (ui_send, mut ui_recv) = tokio::sync::mpsc::unbounded_channel();
|
let (ui_send, mut ui_recv) = tokio::sync::mpsc::unbounded_channel();
|
||||||
|
|
||||||
std::env::set_current_dir(&paths.get_config_dir())
|
std::env::set_current_dir(&paths.get_config_dir())
|
||||||
|
|
@ -32,10 +32,12 @@ pub fn initialize_server(paths: EwwPaths, action: Option<DaemonCommand>) -> Resu
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let fork_result = do_detach(&paths.get_log_file())?;
|
if should_daemonize {
|
||||||
|
let fork_result = do_detach(&paths.get_log_file())?;
|
||||||
|
|
||||||
if fork_result == ForkResult::Parent {
|
if fork_result == ForkResult::Parent {
|
||||||
return Ok(ForkResult::Parent);
|
return Ok(ForkResult::Parent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
println!(
|
println!(
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue