如何在没有弃用警告的情况下检查 python/Gtk 3.0 中的当前屏幕尺寸?

How to check the current screen dimensions in python / Gtk 3.0 without deprecation warnings?

我需要知道当前 Gtk.Window.The 最常推荐的方法下方屏幕的尺寸(确切地说:高度):

window = Gtk.Window()
screen = window.get_screen()
h = screen.height()

完成工作,但给我 DeprecationWarning: Gdk.Screen.height is deprecated,并且可能迟早会停止工作。我不想添加任何新的依赖项,所以 this cool cheat sheet 没有帮助。

我的代码预计可以在 Linux 多头设置上运行,并且这必须是当前屏幕的高度。

更详细的背景:我正在开发的程序是壁纸管理器。我希望(浮动)window 垂直使用所有可能的 space,并在两侧留下一些 space,以观察背景变化。

没有合理的解决方案,我决定按照this answer

def check_height_and_start(window):
    w, h = window.get_size()
    window.destroy()

    if common.sway or common.env['wm'] == "i3":
        h = h * 0.95

    app = GUI(h)



def main():
    (...)
    w = Gtk.Window() # actually I derived from Gtk.Window to make the window transparent

    if common.sway or common.env['wm'] == "i3":
        w.fullscreen()  # .maximize() doesn't work as expected on sway
    else:
        w.maximize()

    w.present()
    GLib.timeout_add(delay_ms, check_height_and_start, w)
    Gtk.main()

这样 window 高度不包括面板(如果有)。不幸的是,它在平铺 window window 管理器时不起作用,所以我不得不使用 fullscreen() 而不是 maximize(),并任意降低高度。

delay_ms最佳值随硬件速度和使用的WM而变化,这是另一个不便之处。