我想做一个webkit窗口,并显示为我的壁纸。
我发现了一个解决方法来创建一个webkit2gtk窗口,如下所示。
// [dependencies]
// gtk = "0.16.0"
// gtk-layer-shell = "0.5"
// webkit2gtk = "1.1.0"
use gtk::gdk;
use gtk::prelude::*;
use gtk::Application;
use gtk::ApplicationWindow;
use webkit2gtk::WebViewExt;
fn main() {
let app = Application::new(None, Default::default());
app.connect_activate(move |app| {
let display = gdk::Display::default().unwrap();
for i in 0..display.n_monitors() {
let monitor = display.monitor(i).unwrap();
let gtk_window = ApplicationWindow::new(app);
gtk_window.set_default_size(1920, 1080);
let webview = webkit2gtk::WebView::new();
gtk_window.add(&webview);
webview.load_uri("http://localhost:8081");
// gtk_layer_shell::init_for_window(>k_window);
// gtk_layer_shell::set_layer(>k_window, gtk_layer_shell::Layer::Background);
// gtk_layer_shell::set_monitor(>k_window, &monitor);
gtk_window.show_all();
}
});
app.run();
}
字符串
上面的代码运行良好,并创建了2个webview窗口(因为我有2个监视器)。然而,如果我向代码中添加一些gtk_layer_shell操作(如上所述),任何地方都不会出现窗口。
我想知道这是不是webkit2gtk的bug或者我的代码有问题。
1条答案
按热度按时间dfty9e191#
你用层shell创建的窗口需要设置大小,而
set_default_size
似乎没有完成它的工作。将
gtk_window.set_default_size(1920, 1080);
替换为gtk_window.set_size_request(1920, 1080);
,窗口应显示。如果你想创建一个带有shell层的全屏窗口,你可以跳过大小要求,使用锚点代替:
字符串