я нашел это код сделать снимок экрана на сайте Теда Мельчарека.
/*
* gdk-screenshot.cpp: Save a screenshot of the root window in .png format.
* If a filename is specified as the first argument on the commandline,
* then the image will be saved to that filename. Otherwise, the image will
* be saved as "screenshot.png" in the current working directory.
*
* Compile with:
* g++ -o gdk-screenshot gdk-screenshot.cpp `pkg-config --cflags --libs gdk-x11-2.0`
*/
#include <gdk/gdk.h>
#include <gdk/gdkx.h>
int main(int argc, char** argv)
{
gdk_init(&argc, &argv);
GdkWindow* window = window = gdk_get_default_root_window ();
GdkPixbuf* screenshot = gdk_pixbuf_get_from_drawable (NULL, window, NULL,
0, 0, 0, 0,
gdk_screen_width(),
gdk_screen_height());
GError* error = NULL;
const char* filename = (argc > 1) ? argv[1] : "screenshot.png";
return TRUE == gdk_pixbuf_save (screenshot, filename, "png",
&error, NULL);
}
Я скомпилировал его, как описано, и он, кажется, работает, так как он производит изображение с правильными размерами, но скриншот полностью черный.
Это похоже на общий вопрос на системах под управлением Wayland (я использую Archlinux с Wayland), поэтому мой вопрос:
Какие изменения необходимо внести в этот код, чтобы он создал правильный скриншот на Wayland (и X)?
Задача ещё не решена.
Других решений пока нет …