I want to take a screenshot. In Windows, that’s a simple Graphics::CopyFromScreen call.
In Linux, I feel a little confused on how to do this. It seems there is a principal and stark distinction between X11 and Wayland, so I have to include both code paths. For either, it seems there is quite a lot of boilerplate code, often tagged as ‘may break depending on your configuration, good luck’.
Effectively, what I found is recommended most often is to call ffmpeg to let it handle that. I’m sure that works, but I find it rather unpalatable.
I find this strange. Taking a screenshot is, in my mind at least, supposed to be a straightforward part of a standard library. Perhaps it is, and I just completely missed it? If not, is there a good library that works out-of-the-box on most variants of linux?
Update: Thank you all for the input. I eventually went with calling ImageMagick. It is fast, easy to use, well documented, and supports capturing arbitrary displays with little effort.
Maybe you can try looking through KDE’s Spectale source code to see how they do it?
Nice idea. I’ve had a look and it appears to be embedded in a lot of Qt code that is hard for me to follow and/or use in dotnet :/