comment les programmes de capture d'écran / d'écran fonctionnent-ils sur les systèmes POSIX exécutant X?

  1. Comment les programmes de capture d'écran tels que gnome-screenshot ou xfce4-screenshooter obtiennent-ils leurs données?
  2. Comment peuvent-ils accéder à un stream de la masortingce de pixels 2d du moniteur / écran?
  3. Est-il possible de diffuser uniquement datatables d'un moniteur spécifique sur une configuration multi-moniteur? Je veux canaliser datatables dans un programme que j'essaye d'écrire, qui sera un programme / script FOSS pour les configurations multi-ordinateur / moniteur.

Pour les questions 1 et 2, je vais deviner qu'ils accèdent à la window racine via RootWindow (3) , puis en utilisant XGetImage (3) pour copyr datatables de pixels de la window racine quelque part pour les traiter plus loin PNG).

Ces pages man peuvent aider: XOpenDisplay (3) , DefaultScreen (3) , RootWindow (3) , XGetImage (3)

Voir aussi cette question sur StackOverflow.

En ce qui concerne la question 3, si Xinerama est utilisé, il y aura plus d'un écran présent, et l'application pourra get des informations sur la position et la taille de chaque écran, ce qui sera de nouveau utile pour sélectionner la zone à copyr avec XGetImage(...) .

Bien sûr, tout cela suppose que vous utilisez Xlib. J'entends qu'il y a une meilleure alternative appelée XCB , mais personnellement, je ne l'ai jamais utilisé jusqu'à présent.