作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个使用 glutin 的程序,我想提供一个命令行标志来使窗口覆盖重定向,以便它可以用作某些不支持桌面的窗口管理器的桌面墙纸窗口类型。
我做了很多研究,并设法拼凑了一段我认为可行的代码,使用 glutin 提供的 xlib 显示和窗口。这是我现有的代码:
unsafe {
use glutin::os::unix::WindowExt;
let x_connection = std::sync::Arc::<glutin::os::unix::x11::XConnection>::into_raw(display.gl_window().get_xlib_xconnection().unwrap());
((*x_connection).xlib.XChangeWindowAttributes)(
display.gl_window().get_xlib_display().unwrap() as *mut glutin::os::unix::x11::ffi::Display,
display.gl_window().get_xlib_window().unwrap() as glutin::os::unix::x11::ffi::XID,
glutin::os::unix::x11::ffi::CWOverrideRedirect,
&mut glutin::os::unix::x11::ffi::XSetWindowAttributes {
background_pixmap: 0,
background_pixel: 0,
border_pixmap: 0,
border_pixel: 0,
bit_gravity: 0,
win_gravity: 0,
backing_store: 0,
backing_planes: 0,
backing_pixel: 0,
save_under: 0,
event_mask: 0,
do_not_propagate_mask: 0,
override_redirect: 1,
colormap: 0,
cursor: 0,
}
);
}
它没有给我任何错误,并且编译和运行其余代码都很好,但它没有像我想要的那样使窗口覆盖重定向。
最佳答案
我想通了。 override-redirect 仅在映射窗口时发生,因此如果我取消映射并再次映射它,它就会起作用!
现在是代码:
unsafe {
use glutin::os::unix::WindowExt;
use glutin::os::unix::x11::XConnection;
use glutin::os::unix::x11::ffi::{Display, XID, CWOverrideRedirect, XSetWindowAttributes};
let x_connection = std::sync::Arc::<XConnection>::into_raw(display.gl_window().get_xlib_xconnection().unwrap());
let x_display = display.gl_window().get_xlib_display().unwrap() as *mut Display;
let x_window = display.gl_window().get_xlib_window().unwrap() as XID;
((*x_connection).xlib.XChangeWindowAttributes)(
x_display,
x_window,
CWOverrideRedirect,
&mut XSetWindowAttributes {
background_pixmap: 0,
background_pixel: 0,
border_pixmap: 0,
border_pixel: 0,
bit_gravity: 0,
win_gravity: 0,
backing_store: 0,
backing_planes: 0,
backing_pixel: 0,
save_under: 0,
event_mask: 0,
do_not_propagate_mask: 0,
override_redirect: 1,
colormap: 0,
cursor: 0,
}
);
((*x_connection).xlib.XUnmapWindow)(x_display, x_window);
((*x_connection).xlib.XMapWindow)(x_display, x_window);
}
关于rust - 如何使用 glutin 进行窗口覆盖重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45527720/
我正在创建一个使用 glutin 的程序,我想提供一个命令行标志来使窗口覆盖重定向,以便它可以用作某些不支持桌面的窗口管理器的桌面墙纸窗口类型。 我做了很多研究,并设法拼凑了一段我认为可行的代码,使用
我正在尝试将 GUI 添加到 small project of mine使用连杆。我设法解决了 3 个编译错误: error[E0433]: failed to resolve. Could not
我是一名优秀的程序员,十分优秀!