beer/src/main.rs
NotAShelf b2d656e7bd
input: encode keyboard events and send them to the shell
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I6ee2acd5f74575f4bcc2f41417207c626a6a6964
2026-06-26 10:21:19 +03:00

56 lines
1.2 KiB
Rust

//! beer, a fast, software-rendered, Wayland-native terminal emulator.
mod font;
mod grid;
mod input;
mod pty;
mod render;
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(code) => code,
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<ExitCode> {
if cli.server {
anyhow::bail!("server mode is not implemented yet");
}
tracing::info!("starting beer");
wayland::run()
}