brewery
notashelf /
0df5588f02af0396fd7abfdd81aa839211ed77b8

beer

public

A terminal worth pouring time into

Star0tarball
clone
ssh://git@git.notashelf.dev:33/notashelf/beer.git
src/main.rsRust55 lines1.2 KB
1
//! beer, a fast, software-rendered, Wayland-native terminal emulator.
2
3
mod font;
4
mod grid;
5
mod pty;
6
mod render;
7
mod vt;
8
mod wayland;
9
10
use std::process::ExitCode;
11
12
use pound::Parse;
13
14
/// A fast, software-rendered, Wayland-native terminal emulator.
15
#[derive(Parse)]
16
#[pound(name = "beer", version = "0.0.0")]
17
struct Cli {
18
    /// Run as a daemon hosting multiple windows.
19
    #[pound(long)]
20
    server: bool,
21
}
22
23
fn main() -> ExitCode {
24
    init_logging();
25
    match run(Cli::parse()) {
26
        Ok(code) => code,
27
        Err(err) => {
28
            tracing::error!("{err:#}");
29
            eprintln!("beer: {err:#}");
30
            ExitCode::FAILURE
31
        }
32
    }
33
}
34
35
fn init_logging() {
36
    use tracing_subscriber::{EnvFilter, fmt};
37
38
    let filter = EnvFilter::try_from_env("BEER_LOG")
39
        .or_else(|_| EnvFilter::try_from_default_env())
40
        .unwrap_or_else(|_| EnvFilter::new("warn"));
41
42
    fmt()
43
        .with_env_filter(filter)
44
        .with_writer(std::io::stderr)
45
        .init();
46
}
47
48
fn run(cli: Cli) -> anyhow::Result<ExitCode> {
49
    if cli.server {
50
        anyhow::bail!("server mode is not implemented yet");
51
    }
52
53
    tracing::info!("starting beer");
54
    wayland::run()
55
}