gtk-rs 自定义 Wayland 表面

问题描述

我正在尝试实现一个像 wofi 这样的小自定义菜单。我从未真正使用过 rust、gtk 或任何与wayland 相关的东西,所以请耐心等待。

我想生成一个没有装饰的浮动窗口。由于合成器(在我的情况下摇摆)处理窗口定位和装饰,我似乎无法让它工作。我尝试生成一个简单的窗口和一个弹出窗口,但它们都有边框、标题栏或由我的合成器定位。

let window = gtk::applicationwindow::new(application);

// or this for popup
// let window = gtk::Window::new(gtk::WindowType::Popup);
// window.set_application(Some(application));

window.set_title(consts::APP_NAME);
window.set_size_request(600,800);
window.set_position(gtk::WindowPosition::Center);
window.set_modal(true);
window.set_keep_above(true);
window.set_app_paintable(true);
window.set_resizable(false);
window.set_decorated(false);

我检查了 wofis 代码,他们正在使用自定义的wayland 表面 gdk_wayland_window_set_use_custom_surface(gdk_win);。 Rust 中是否有等价物?据我所知,该函数是 wlroots 的一部分,我发现了一个名为 wlroots-rs 的板条箱,但没有机会真正了解它。

有没有办法为 Rust 中的 gtk 窗口创建和使用客户表面?或者有没有更简单的方法来强制隐藏边框/装饰和窗口的定位?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)