aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs52
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(())
+}