brewery
notashelf /
9df4e8fb8a334a8b613ce0a75fe8a5326b3efd4e

beer

public

A terminal worth pouring time into

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