kioskbrowser/src/main.rs

56 lines
1.4 KiB
Rust

use gtk::prelude::*;
use gtk::{Window, WindowType};
use webkit2gtk::glib;
use webkit2gtk::{WebView, WebViewExt};
fn main() {
gtk::init().unwrap();
let window = Window::new(WindowType::Toplevel);
window.connect_delete_event(|_, _| {
gtk::main_quit();
glib::Propagation::Proceed
});
let webview = WebView::new();
webview.connect_load_changed(|_, load_event| {
eprintln!("Loaded: {load_event:?}");
});
webview.connect_load_failed(|_, load_event, failing_uri, error| {
eprintln!(
"Load failed: {load_event:?} while loading {failing_uri} - {}",
error.message()
);
false
});
webview.connect_load_failed_with_tls_errors(|_, host, _, errors| {
eprintln!("Load failed: {errors:?} while contacting {host}");
false
});
window.add(&webview);
window.show_all();
window.fullscreen();
let (sender, receiver) = async_channel::unbounded();
std::thread::spawn(move || {
tokio::runtime::Builder::new_current_thread()
.enable_all()
.build()
.unwrap()
.block_on(async {
sender
.send("https://kitchen.pyrocufflink.blue/")
.await
.unwrap();
})
});
glib::spawn_future_local(async move {
let url = receiver.recv().await.unwrap();
webview.load_uri(url);
});
gtk::main();
}