如何通过在Wayland中单击来识别窗口


15

我想确定窗口在Wayland中属于哪个进程。是否有类似xpropX的东西,允许用户单击以选择一个窗口并输出所有窗口详细信息,包括PID?


我怀疑是否会存在像xprop这样的命令。Wayland的一个主要目标是限制对其他进程窗口的访问。
mviereck

@mviereck即使在Wayland中,超级用户当然也可以看到窗口信息吗?
Nathaniel M. Beaver

@bariumbitmap:仅当合成器在其自身的内存之外(例如,在文件中或通过API)提供这些信息时。我不知道这样的规范(但是可能存在)。当然,如果您不需要所有合成器的通用解决方案,则可以派出一个类似weston的合成器并自己实现。
mviereck '18

为什么不只是xprop?它通过XWayland在窗口上显示了很多细节,包括_NET_WM_PID(CARDINAL),它是发起者进程PID。
istepaniuk

Answers:


1

好消息,Gnome Shell中内置了类似的东西,xprop与Xorg Wayland的作品不同。最终,如果您使用的是KDE,i3或其他工具,那么这可能会落入其他工具领域。

首先,在键盘上键入“ ALT + F2”键,这将弹出一个菜单,如下所示:

alt ft

之后,发出命令lg(用于“窥视镜”)。

然后将打开窥视玻璃窗口,我们可以从中提取窗口信息。从窥镜的右上角选择“窗口”:

窗口部分

从那里,您将看到一个窗口列表,您可以从中单击要标识的窗口的名称。

清单

在这种情况下,我选择gedit作为示例:

Gedit

在该输出的第一行中,您可能会注意到:

Inspecting object: object instance proxy GType: MetaWindowX11 ...`

“ GType”将是MetaWindowX11或MetaWindowWayland之一。

此信息来自https://fedoraproject.org/wiki/How_to_debug_Wayland_problems

我有


3
那么,这是否可以找出运行所列示窗口的进程的PID?
czerny

0

草案xdg-foreign协议扩展,其允许获得的把手wl_surface的,由其他韦兰客户端创建。有了手柄,您可以从中获得从客户表面获得的任何东西。但是,此协议仍然有局限性:

  • 显然,如果未在客户端中实现,它将无法正常工作。
  • 它针对的是客户了解对方,所以它并没有提供一种方式来触发它:您的客户端通信与外国客户在某些方面,未涉及的扩展。然后,外国客户通过此扩展程序为您的客户发布一个句柄。
  • 与相比,它获得了太多的控制权xprop。实际上,您甚至可以在异物表面上绘画!

因此,这不太可能成为任何客户端从任何客户端获取表面参数的通用方法。但是请不要失望:在技术历史上,有很多例子表明,最初出于某种目的而设计的技术已被广泛用于其他目的,例如汽车点烟器或Android中的Accessibility API。而且,在将来,可能会出现一个更适合您的任务的协议扩展,因为确实需要它(例如,对于时间跟踪器)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.