forked from NotAShelf/beer
Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: Iee271b093801326cff2489218063ab4c6a6a6964
54 lines
1.2 KiB
Rust
54 lines
1.2 KiB
Rust
//! beer, a fast, software-rendered, Wayland-native terminal emulator.
|
|
|
|
mod grid;
|
|
mod pty;
|
|
mod vt;
|
|
mod wayland;
|
|
|
|
use std::process::ExitCode;
|
|
|
|
use pound::Parse;
|
|
|
|
/// A fast, software-rendered, Wayland-native terminal emulator.
|
|
#[derive(Parse)]
|
|
#[pound(name = "beer", version = "0.0.0")]
|
|
struct Cli {
|
|
/// Run as a daemon hosting multiple windows.
|
|
#[pound(long)]
|
|
server: bool,
|
|
}
|
|
|
|
fn main() -> ExitCode {
|
|
init_logging();
|
|
match run(Cli::parse()) {
|
|
Ok(()) => ExitCode::SUCCESS,
|
|
Err(err) => {
|
|
tracing::error!("{err:#}");
|
|
eprintln!("beer: {err:#}");
|
|
ExitCode::FAILURE
|
|
}
|
|
}
|
|
}
|
|
|
|
fn init_logging() {
|
|
use tracing_subscriber::{EnvFilter, fmt};
|
|
|
|
let filter = EnvFilter::try_from_env("BEER_LOG")
|
|
.or_else(|_| EnvFilter::try_from_default_env())
|
|
.unwrap_or_else(|_| EnvFilter::new("warn"));
|
|
|
|
fmt()
|
|
.with_env_filter(filter)
|
|
.with_writer(std::io::stderr)
|
|
.init();
|
|
}
|
|
|
|
fn run(cli: Cli) -> anyhow::Result<()> {
|
|
if cli.server {
|
|
tracing::info!("starting beer server");
|
|
todo!("server mode")
|
|
}
|
|
|
|
tracing::info!("starting beer");
|
|
wayland::run()
|
|
}
|