linux - 在 Linux 中确定和恢复窗口状态

标签 linux x11 xlib

我使用 xlib。我想记住窗口位置并在下次启动时将其恢复到该位置。这将对用户有所帮助,因为他不需要在每次启动时将窗口移动/调整到所需位置。

它或多或少工作正常,除了一种情况。当窗口最大化时,我找不到确定其真实(非最大化)大小和位置的方法。也许有人知道该怎么做?

最佳答案

据我所知,没有标准的方法可以做到这一点。例如,如果您阅读 Metacity 的源代码,您可以看到它在 MetaWindow 对象中保留了这个未最大化的大小,但我不认为它存储在一个属性中,而且我在 EWMH 或 ICCCM 规范中没有看到这个属性.

某些特定的窗口管理器可能会将其存储在非标准属性中。

当窗口最大化时,您可以获得带有最大化标志的属性更改事件(libwnck 是一个旧的库,用于跟踪这类事情,也许有一个我不知道的更新的库)。但是我怀疑是否定义了调整大小是在设置标志之前还是之后发生的。您或许可以试探性地假设在设置最大化标志后的 1 秒内调整覆盖大部分屏幕的大小是最大化或某种类似的 hack。

综上所述,我怀疑获得此功能的最简单方法是将其实现为窗口管理器扩展或插件,许多 WM 都以某种方式支持它。

对此(X session 管理协议(protocol))有一个旧的规范,不幸的是,该规范被荒谬地破坏、不清楚并且基本上不可能实现。一个从 Unresolved 核心问题——可能需要应用程序合作来解决——是如何在重新启动时识别“相同”窗口以恢复其大小。 对此只有有缺陷的启发式方法。

(我很久以前写过 metacity 并在几个 session 管理器上工作过,所以曾经我可以告诉你更多,但我忘记了很多细节。)

关于linux - 在 Linux 中确定和恢复窗口状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39312725/

相关文章:

linux - 运行 Contiki 教程时出现 "Not a git repository:"错误消息

编译 c 源代码时找不到 -lagent(不兼容的库)

linux - Qt 消息框显示在 Debian linux 的左上角

x11 - 如何使用 Yocto Project 工具更改窗口管理器?

c - 我的 X11 代码有什么问题?

linux - 如何自动响应 Linux Bash 脚本中的提示?

java - Java中的内存主机和内存参数xms和xmx之间的关系

r - 通过X11无法显示任何图像

Python:Xlib——我如何提升(置于顶部)窗口?

linux - x11 - 如何设置 _NET_WM_ALLOWED_ACTIONS