Simple WebkitGTK browser window test

master
Dustin 2025-07-31 18:03:29 -05:00
parent 8edfe72f15
commit fbd9ecedc7
3 changed files with 1110 additions and 1 deletions

1071
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -4,3 +4,7 @@ version = "0.1.0"
edition = "2024"
[dependencies]
async-channel = "2.5.0"
gtk = { version = "0.18.2", features = ["v3_24_30"] }
tokio = { version = "1.47.0", default-features = false, features = ["net", "rt", "time"] }
webkit2gtk = { version = "2.0.1", features = ["v2_40"] }

View File

@ -1,3 +1,37 @@
use gtk::prelude::*;
use gtk::{Window, WindowType};
use webkit2gtk::glib;
use webkit2gtk::{WebView, WebViewExt};
fn main() {
println!("Hello, world!");
gtk::init().unwrap();
let window = Window::new(WindowType::Toplevel);
window.connect_delete_event(|_, _| {
gtk::main_quit();
glib::Propagation::Proceed
});
let webview = WebView::new();
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();
}