如何在 Wayland 中设置窗口的 x,y 坐标?

Posted

技术标签:

【中文标题】如何在 Wayland 中设置窗口的 x,y 坐标?【英文标题】:How do I set the x,y coordinates of a window in Wayland? 【发布时间】:2016-02-25 17:09:57 【问题描述】:

显然这不是核心 Wayland 协议的一部分,但我使用的是 Weston,xdg-shell 扩展似乎有必要的方法:

xdg_surface_set_window_geometry

所以我运行wayland-scanner 来创建xdg 代码和头文件:

wayland-scanner code < ./weston-1.6.0/protocol/xdg-shell.xml > xdg_shell.c

wayland-scanner client-header < ./weston-1.6.0/protocol/xdg-shell.xml > xdg_shell.h

我使用的代码大致如下:

surface = wl_compositor_create_surface(compositor);
if(surface == NULL) 
    ...


native_window = wl_egl_window_create(surface, some_width, some_height);
if(native_window == NULL) 
    ...


_xdg_surface  = xdg_shell_get_xdg_surface(_xdg_shell, surface);

xdg_surface_set_window_geometry(_xdg_surface, 0, 0, some_width, some_height);

代码运行没有错误,但什么也不做。我在 Debian Jessie 上运行了常用的 Wayland 和 Weston 软件包。

如果除了xdg_shell 之外还有其他方法可能有效,我会全力以赴。

【问题讨论】:

你找到答案了吗?我还希望在 weston 下为我的窗口设置默认位置 在 Wayland/Weston 论坛的帮助下,我做了一个解决方法,即将我的窗口设置为具有透明背景的全屏输出尺寸,然后在全屏内偏移我的内容。目前,Wayland API 并不适用于这种应用程序级别的控制。 @mpr 你能分享你的代码或任何链接到论坛讨论的这个解决方法吗,我有点卡住了,需要应用相同的黑客 对不起Khode_Erfan,它早就不见了。看到这个问题仍然悬而未决,有点难过!我从来没有完全理解 Wayland 打算解决什么问题,事实上最终还是回到了与 X 相关的解决方案。 【参考方案1】:

不确定它是否符合您的需要,但在 weston_view_set_initial_position(...) 中的 weston/desktop-shell/shell.c 中有一个函数,名为 set_position。

我设置了默认的 xy 值,它可以工作。

【讨论】:

您是如何从您的客户端程序中获得weston_viewdesktop_shell 对象的? 可以在韦斯顿资源中访问。我不知道它是否可以从客户端程序端访问。此修改将应用于每个窗口。 我考虑过扩展 Weston,但目前我无法接受。我暂时不讨论这个问题,我认为 Wayland API 可能会在未来提供更多的应用程序级别控制。

以上是关于如何在 Wayland 中设置窗口的 x,y 坐标?的主要内容,如果未能解决你的问题,请参考以下文章

在 QGraphicsItem QT 中设置 X Y 坐标

我们可以获得winlogon屏幕的坐标(x,y),以便在系统中设置任何分辨率吗? (如附图所示)

如何在three.js中设置Z坐标系?

如何在 ConstraintLayout 中设置视图的绝对位置

如何在 google or-tools vrptw 中设置时间窗口?

如何在 ipython 笔记本中设置和显示带有熊猫图的 x/y 标签? [复制]