Se o que você quer é gravar o que acontece na saída do servidor X (ou seja, no framebuffer final), você pode tentar ffmpeg
- sua página man tem um exemplo:
ffmpeg -f x11grab -s cif -r 25 -i :0.0 /tmp/out.mpg
Note que o protocolo X é algo diferente - as mensagens são passadas entre os clientes e o servidor quase o tempo todo e elas não necessariamente precisam carregar qualquer informação gráfica (elas podem pertencer a eventos de entrada, eventos de danos - isto é, parte da janela do cliente sendo revelada, etc.).