diff options
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 00000000..9d472a7d --- /dev/null +++ b/src/main.rs @@ -0,0 +1,52 @@ +#![allow(irrefutable_let_patterns)] + +mod handlers; + +mod grabs; +mod input; +mod state; +mod winit; + +use smithay::reexports::{calloop::EventLoop, wayland_server::Display}; +pub use state::Smallvil; + +pub struct CalloopData { + state: Smallvil, + display: Display<Smallvil>, +} + +fn main() -> Result<(), Box<dyn std::error::Error>> { + if let Ok(env_filter) = tracing_subscriber::EnvFilter::try_from_default_env() { + tracing_subscriber::fmt().with_env_filter(env_filter).init(); + } else { + tracing_subscriber::fmt().init(); + } + + let mut event_loop: EventLoop<CalloopData> = EventLoop::try_new()?; + + let mut display: Display<Smallvil> = Display::new()?; + let state = Smallvil::new(&mut event_loop, &mut display); + + let mut data = CalloopData { state, display }; + + crate::winit::init_winit(&mut event_loop, &mut data)?; + + let mut args = std::env::args().skip(1); + let flag = args.next(); + let arg = args.next(); + + match (flag.as_deref(), arg) { + (Some("-c") | Some("--command"), Some(command)) => { + std::process::Command::new(command).spawn().ok(); + } + _ => { + std::process::Command::new("weston-terminal").spawn().ok(); + } + } + + event_loop.run(None, &mut data, move |_| { + // Smallvil is running + })?; + + Ok(()) +} |
