Implement eww get command (#319)
This commit is contained in:
parent
955271bbd5
commit
45badb7f38
3 changed files with 29 additions and 5 deletions
|
@ -53,6 +53,10 @@ pub enum DaemonCommand {
|
||||||
all: bool,
|
all: bool,
|
||||||
sender: DaemonResponseSender,
|
sender: DaemonResponseSender,
|
||||||
},
|
},
|
||||||
|
GetVar {
|
||||||
|
name: String,
|
||||||
|
sender: DaemonResponseSender,
|
||||||
|
},
|
||||||
PrintDebug(DaemonResponseSender),
|
PrintDebug(DaemonResponseSender),
|
||||||
PrintWindows(DaemonResponseSender),
|
PrintWindows(DaemonResponseSender),
|
||||||
}
|
}
|
||||||
|
@ -176,6 +180,13 @@ impl App {
|
||||||
};
|
};
|
||||||
sender.send_success(output)?
|
sender.send_success(output)?
|
||||||
}
|
}
|
||||||
|
DaemonCommand::GetVar { name, sender } => {
|
||||||
|
let vars = self.eww_state.get_variables();
|
||||||
|
match vars.get(name.as_str()) {
|
||||||
|
Some(x) => sender.send_success(x.to_string())?,
|
||||||
|
None => sender.send_failure(format!("Variable not found \"{}\"", name))?,
|
||||||
|
}
|
||||||
|
}
|
||||||
DaemonCommand::PrintWindows(sender) => {
|
DaemonCommand::PrintWindows(sender) => {
|
||||||
let output = self
|
let output = self
|
||||||
.eww_config
|
.eww_config
|
||||||
|
|
|
@ -13,7 +13,7 @@ extern crate gtk;
|
||||||
extern crate gtk_layer_shell as gtk_layer_shell;
|
extern crate gtk_layer_shell as gtk_layer_shell;
|
||||||
|
|
||||||
use anyhow::*;
|
use anyhow::*;
|
||||||
use daemon_response::DaemonResponseReceiver;
|
use daemon_response::{DaemonResponse, DaemonResponseReceiver};
|
||||||
use opts::ActionWithServer;
|
use opts::ActionWithServer;
|
||||||
use std::{
|
use std::{
|
||||||
os::unix::net,
|
os::unix::net,
|
||||||
|
@ -145,7 +145,13 @@ fn handle_server_command(paths: &EwwPaths, action: &ActionWithServer, connect_at
|
||||||
log::debug!("Connected to Eww server ({}).", &paths.get_ipc_socket_file().display());
|
log::debug!("Connected to Eww server ({}).", &paths.get_ipc_socket_file().display());
|
||||||
let response = client::do_server_call(&mut stream, action).context("Error while forwarding command to server")?;
|
let response = client::do_server_call(&mut stream, action).context("Error while forwarding command to server")?;
|
||||||
if let Some(response) = response {
|
if let Some(response) = response {
|
||||||
println!("{}", response);
|
match response {
|
||||||
|
DaemonResponse::Success(x) => println!("{}", x),
|
||||||
|
DaemonResponse::Failure(x) => {
|
||||||
|
eprintln!("{}", x);
|
||||||
|
bail!("Error, server command failed");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,11 +81,11 @@ pub enum ActionWithServer {
|
||||||
mappings: Vec<(VarName, DynVal)>,
|
mappings: Vec<(VarName, DynVal)>,
|
||||||
},
|
},
|
||||||
|
|
||||||
// Open the GTK debugger
|
/// Open the GTK debugger
|
||||||
#[structopt(name = "inspector", alias = "debugger")]
|
#[structopt(name = "inspector", alias = "debugger")]
|
||||||
OpenInspector,
|
OpenInspector,
|
||||||
|
|
||||||
/// open a window
|
/// Open a window
|
||||||
#[structopt(name = "open", alias = "o")]
|
#[structopt(name = "open", alias = "o")]
|
||||||
OpenWindow {
|
OpenWindow {
|
||||||
/// Name of the window you want to open.
|
/// Name of the window you want to open.
|
||||||
|
@ -131,7 +131,7 @@ pub enum ActionWithServer {
|
||||||
#[structopt(name = "reload", alias = "r")]
|
#[structopt(name = "reload", alias = "r")]
|
||||||
Reload,
|
Reload,
|
||||||
|
|
||||||
/// kill the eww daemon
|
/// Kill the eww daemon
|
||||||
#[structopt(name = "kill", alias = "k")]
|
#[structopt(name = "kill", alias = "k")]
|
||||||
KillServer,
|
KillServer,
|
||||||
|
|
||||||
|
@ -147,6 +147,10 @@ pub enum ActionWithServer {
|
||||||
all: bool,
|
all: bool,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/// Get the value of a variable if defined
|
||||||
|
#[structopt(name = "get")]
|
||||||
|
GetVar { name: String },
|
||||||
|
|
||||||
/// Print the names of all configured windows. Windows with a * in front of them are currently opened.
|
/// Print the names of all configured windows. Windows with a * in front of them are currently opened.
|
||||||
#[structopt(name = "windows")]
|
#[structopt(name = "windows")]
|
||||||
ShowWindows,
|
ShowWindows,
|
||||||
|
@ -219,6 +223,9 @@ impl ActionWithServer {
|
||||||
ActionWithServer::ShowState { all } => {
|
ActionWithServer::ShowState { all } => {
|
||||||
return with_response_channel(|sender| app::DaemonCommand::PrintState { all, sender })
|
return with_response_channel(|sender| app::DaemonCommand::PrintState { all, sender })
|
||||||
}
|
}
|
||||||
|
ActionWithServer::GetVar { name } => {
|
||||||
|
return with_response_channel(|sender| app::DaemonCommand::GetVar { name, sender })
|
||||||
|
}
|
||||||
ActionWithServer::ShowDebug => return with_response_channel(app::DaemonCommand::PrintDebug),
|
ActionWithServer::ShowDebug => return with_response_channel(app::DaemonCommand::PrintDebug),
|
||||||
};
|
};
|
||||||
(command, None)
|
(command, None)
|
||||||
|
|
Loading…
Add table
Reference in a new issue