Você está procurando por Xvfb
. Do manual:
Xvfb is an X server that can run on machines with no display hardware and no physical input devices. It emulates a dumb framebuffer using virtual memory.
Existe uma configuração para o Xorg (ou qualquer servidor de janelas X) que crie um "stub" de um servidor X de forma que ele aceite chamadas de API de aplicativos e os desconsidere ao invés de processar as chamadas, atualizando o buffer de quadros, e escrevendo para a memória? Eu preciso ser capaz de executar uma aplicação gráfica (como o Firefox), mas eu realmente não me importo com a saída gráfica e gostaria de reduzir o overhead de renderização, tanto quanto possível. Eu estou tentando obter horários de página da web que são inalterados por renderização gráfica.
Alternativamente, existe alguma maneira de "gravar" todas as chamadas da API do servidor X, despejá-las em disco e reproduzi-las mais tarde, de modo a separar os timings da renderização gráfica, mas ainda criar capturas de tela do que aplicação olhou em vários pontos no tempo?
Você está procurando por Xvfb
. Do manual:
Xvfb is an X server that can run on machines with no display hardware and no physical input devices. It emulates a dumb framebuffer using virtual memory.
Costumava haver um programa para fazer isso em 1996 e apenas recentemente removido do debian, chamado xmon
, que estava em duas partes, xmond
que filtrava as solicitações e respostas para um servidor X11 e xmonui
que era um gui no qual você poderia alternar quais solicitações seriam suprimidas e, portanto, não desenhar nada. Foi um desdobramento do programa xscope
(para rastrear as solicitações e respostas) que ainda é distribuído. No entanto, para encontrar as fontes e compilar xmon
hoje você precisa ser um pouco entusiasta. Eu suponho que foi removido porque não havia mais erros do X11 para serem depurados ...
man xmon : O diagrama a seguir mostra a relações entre xmon e o xmon daemon. e os clientes e o servidor.
----------
| xmonui |
----------
|
v
------------ ----------
| client 1 |<------->| |
------------ | | ----------
: | xmond |<----->| server |
: | | ----------
------------ | |
| client n |<------->| |
------------ ----------
|
v
monitor output to stdout
Uma otimização alternativa que você pode tentar com Xvfb
é criar uma tela muito pequena de, digamos, 64x64 pixels e talvez de profundidade 1 (monocromática), e colocar a janela do firefox fora da tela, portanto não será renderizada muita coisa não será visível.