brewery
notashelf /
a3c41c6ccb204abc6cea3025ebf51ba02b0780ec

beer

public

A terminal worth pouring time into

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