如何在 Wayland 上截图?

How can I take a screenshot on Wayland?

现在需要开发一个可以在Ubuntu、CentOS、fedora上进行截图的插件。我尝试用 Xlib 编写它。在Ubuntu和CentOS上可以运行,但是Fedora用的是Wayland,我开发的插件不能用

gnome截屏可以在这些平台上运行,但是看了他的源码后发现它可以通过调用其他进程来实现截屏,我很难学习。

有什么方法可以在 Wayland 引擎上截屏吗?

我是用dbus搞定的,这里是轻代码:

    method_name = "Screenshot";
    method_params = g_variant_new ("(bbs)",
                                     TRUE,
                                     FALSE, /* flash */
                                     filename);

    connection = g_application_get_dbus_connection (g_application_get_default ());
    g_dbus_connection_call_sync (connection,
                               "org.gnome.Shell.Screenshot",
                               "/org/gnome/Shell/Screenshot",
                               "org.gnome.Shell.Screenshot",
                               method_name,
                               method_params,
                               NULL,
                               G_DBUS_CALL_FLAGS_NONE,
                               -1,
                               NULL,
                               &error);