【问题标题】:Xlib: How to ask window manager for maximized window size?Xlib:如何要求窗口管理器最大化窗口大小?
【发布时间】:2013-09-06 00:22:20
【问题描述】:

我希望我的程序窗口尽可能大,而不会重叠窗口管理器的各种小窗口,例如寻呼机。在创建窗口之前,有什么方法可以询问 wm 最大化的窗口大小是多少?

【问题讨论】:

    标签: xlib window-managers x11


    【解决方案1】:

    _NET_WORKAREA 根窗口的属性可能是最接近的匹配。但是,在多头系统上,它会为您提供所有显示器上的组合工作区域。

    如果那是您想要的,那很好(但请参阅here 关于使窗口跨越多个监视器)。如果您想在单个监视器上最大化,那么就会出现问题,因为没有像 _NET_WORKAREA 这样的每个监视器 API。你最好的办法是创建一个最大化状态的窗口,然后查询它的大小。如果这不是一个选项,恐怕您将不得不查询可用监视器的数量和大小,然后通过从整个区域中减去“struts”来计算每个监视器的工作区域(参见here 关于@ 987654325@ 和 _NET_WM_STRUT_PARTIAL)。

    【讨论】:

    • 这很有趣,但我使用的 wm 都没有为 _NET_WORKAREA 提供有效值。我使用 XFCE,我使用 twm。
    • 那么没有办法了。
    • 程序没有办法查询根窗口以找出屏幕上存在哪些窗口以及它们在哪里?我应该想,如果我有这些信息,就有可能找到未被占用的最大矩形区域。
    • 您可以这样做,但您不一定知道哪些窗口属于 WM/桌面。无论如何,不​​要在您的应用中复制现代 WM 的某些功能,而是考虑切换到现代 WM。
    猜你喜欢
    • 2011-05-30
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    • 2021-10-29
    相关资源
    最近更新 更多