Sentar no mesmo computador e fazê-lo em um terminal virtual diferente do servidor X não está funcionando.
Q-108: Eu uso os terminais virtuais (VTs) do Linux para implementar a 'Troca rápida de usuário' entre as sessões dos usuários (por exemplo, Betty está em Ctrl-Alt-F7, Bobby está em Ctrl-Alt-F8 e Sid está em Ctrl-Alt -F1: eles usam essas teclas para alternar entre as sessões.) Como a exibição em um visualizador de VNC que se conecta ao x11vnc é completamente preta, não é atualizada ou os pixels são alterados, a menos que a sessão X x11vnc esteja anexada VT ativo?
Isso parece ter a ver com a maneira como os aplicativos (o servidor X processa neste caso) devem "funcionar bem" se não estiverem no VT ativo (às vezes chamado de VC para console virtual). Ou seja, eles não devem ler no teclado ou mouse ou gerencie a exibição de vídeo, a menos que eles tenham o VT ativo. Dado que parece que a chamada XGetImage () deve finalmente recuperar os dados do buffer de quadros do próprio hardware de vídeo, faria sentido que a pesquisa do x11vnc não funcionasse, a menos que a sessão X tivesse controle ativo do VT.
Não parece haver uma maneira fácil de solucionar isso. Até o xwd (1) não funciona nesse caso (tente). Algo precisaria ser feito em um nível mais baixo, digamos no servidor XFree86 / Xorg X. Além disso, o uso do Shadow Framebuffer (uma cópia do framebuffer de vídeo é mantida na memória principal) não parece corrigir o problema (última verificação em 2007.)
Se ninguém estiver sentado na estação de trabalho e você quiser alternar remotamente o VT para aquele associado à sua sessão X (para que o x11vnc possa pesquisá-lo corretamente), pode-se usar o comando chvt (1), por exemplo, "chvt 7" para VT # 7.