como os programas de screenshot / screen grab funcionam em sistemas POSIX rodando o X?

3
  1. Como os capturam programas como gnome-screenshot ou xfce4-screenhooter obtém seus dados?
  2. Como eles podem acessar um fluxo da matriz de 2d pixels do monitor / tela?
  3. É possível transmitir somente dados específicos de um monitor em uma configuração de vários monitores? Eu quero enviar os dados para um programa que estou tentando escrever, que será um programa / script FOSS para configurações de multicomputadores / monitores.
por ConfusedStack 23.11.2014 / 22:18

1 resposta

5

Para as questões 1 e 2, vou dar uma wild suposição de que eles estão acessando a janela-raiz que pode ser desenhada através de RootWindow (3) , em seguida, usando XGetImage (3) para copiar o pixel da janela raiz dados em algum lugar para processá-lo ainda mais (por exemplo, descarregando-o para um PNG).

Estas páginas do manual podem ajudar: XOpenDisplay (3) , DefaultScreen (3) , RootWindow (3) , XGetImage (3)

Veja também esta pergunta no StackOverflow.

Quanto à questão 3, se Xinerama for usado, haverá mais de uma tela presente, e o aplicativo poderá obter informações sobre a posição e tamanho de cada tela, o que será novamente útil para selecionar a área a ser copiada com XGetImage(...) .

Claro que tudo isso pressupõe que você está usando o Xlib. Eu ouvi dizer que existe uma alternativa melhor chamada XCB , mas pessoalmente eu nunca usei isso até agora.

    
por 24.11.2014 / 00:41