为什么不鼓励从代码中移动 GUI 窗口?

问题描述

好吧,标题几乎说明了一切:为什么我不应该从代码中在屏幕上移动 GUI(例如 Gtk)窗口?在 Gtk 3 中有一个用于在屏幕上移动窗口的 API,但它在 Gtk 4 中被删除了,因为从代码中移动窗口是不好的;只有用户应该这样做(不要要求我提供资源,我在某处阅读过但忘记了在哪里并且找不到它)。但是我想不出任何原因它不应该是好的,但是有几个原因它可以是好的,例如在应用程序重新启动之间恢复窗口的位置。你能解释一下吗?

解决方法

主要原因是它不可能跨平台工作,所以它被定义为损坏的 API。这也是它在 GTK4 中被删除的原因。例如:在 Wayland 会话之上运行时,这是不可能实现的,因为该协议不允许获取/设置全局坐标。如果您仍然希望进行类似的工作,则必须为您希望支持的平台调用特定的平台 API(例如 X11)。

关于某些显示协议不支持它的原因:它对用户体验和安全性不利。在用户体验方面:一些合成师可能有特殊的行为,因为他们需要在小型设备上工作,或者因为他们有一个信息亭模式,在这种模式下,一切都应该全屏运行,或者他们提供平铺体验。应用程序自己定位它们的窗口然后往往会产生意想不到的行为。在安全性方面:如果您允许这样做,从技术上讲,应用程序可以重新定位和调整自己的大小,使其覆盖您的屏幕,同时使自己透明,而不会被注意到,这意味着它有可能抓取所有输入。>

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...