56 lines
1.4 KiB
Rust
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();
|
|
}
|