// Incantation to not allocate a Windows console when compiled in release mode #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] mod injector; mod panel; mod themes; mod web_view; use std::{net::SocketAddr, sync::mpsc, thread}; async fn serve_panel(addr_listener: mpsc::Sender) { let (panel_addr, panel_listener) = crate::panel::serve_panel(); addr_listener.send(panel_addr).unwrap(); panel_listener.await; } fn main() { let (tx, rx) = mpsc::channel(); thread::spawn(move || { let runtime = tokio::runtime::Builder::new_current_thread() .enable_all() .build() .expect("Couldn't create async runtime"); runtime.block_on(serve_panel(tx)); }); let panel_addr = rx.recv().unwrap(); crate::web_view::open_webview(&format!("http://{}/", panel_addr)) .expect("Failed to open web view"); }