summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorMaxVerevkin <maxxverrr@gmail.com>2023-08-21 16:12:23 +0300
committerMaxVerevkin <maxxverrr@gmail.com>2023-08-21 16:12:23 +0300
commitd1fe8e5999a5b16cfed7519f80b9710a7fbe1411 (patch)
tree5e13c09e6a11398fe5d2f936ad3a33863b9c77f5 /src/main.rs
parentf4fe586d35dee16ff13930451e79b23a0079129c (diff)
downloadi3bar-mango-d1fe8e5999a5b16cfed7519f80b9710a7fbe1411.tar.gz
allow setting config path via cli args
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs26
1 files changed, 17 insertions, 9 deletions
diff --git a/src/main.rs b/src/main.rs
index a4af365..d2f69d1 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -17,27 +17,35 @@ mod text;
mod utils;
mod wm_info_provider;
-use signal_hook::consts::*;
-
use std::io::ErrorKind;
use std::os::unix::io::AsRawFd;
+use std::path::PathBuf;
+use clap::Parser;
+use nix::errno::Errno;
+use nix::fcntl::OFlag;
+use nix::poll::{poll, PollFd, PollFlags};
+use signal_hook::consts::*;
use wayrs_client::{Connection, IoMode};
-use nix::{
- errno::Errno,
- fcntl::OFlag,
- poll::{poll, PollFd, PollFlags},
-};
-
use state::State;
+#[derive(Parser)]
+#[command(author, version, about, long_about = None)]
+struct Cli {
+ /// The path to a config file.
+ #[arg(short, long, value_name = "FILE")]
+ config: Option<PathBuf>,
+}
+
fn main() -> anyhow::Result<()> {
+ let args = Cli::parse();
+
let (sig_read, sig_write) = nix::unistd::pipe2(OFlag::O_NONBLOCK | OFlag::O_CLOEXEC)?;
signal_hook::low_level::pipe::register(SIGUSR1, sig_write)?;
let (mut conn, globals) = Connection::connect_and_collect_globals()?;
- let mut state = State::new(&mut conn, &globals);
+ let mut state = State::new(&mut conn, &globals, args.config.as_deref());
conn.flush(IoMode::Blocking)?;
let mut fds = Vec::with_capacity(3);