x2vnc - Dois PCs, um único teclado e mouse
Colaboração: Carlos E. Morimoto
Data de Publicação: 25 de Junho de 2005
O uso de dois monitores é um recurso já bastante conhecido
e cada vez mais popular. É possível também usar um segundo
micro remotamente, usando o VNC, SSH ou mesmo se conectando
a ele via XDMCP, o protocolo de compartilhamento nativo
do X.
Que tal então juntar as duas coisas? Ter ao mesmo tempo
dois PCs, com a possibilidade de rodar dois sistemas
operacionais diferentes e, ao mesmo tempo, toda a
praticidade de um sistema dual monitor, onde basta arrastar
o mouse para o canto da tela para que o cursor e o teclado
passem a atuar sobre o monitor do segundo micro?
Você pode ter dois PCs rodando Linux, dois PCs com
o Windows ou ainda um PC com o Linux com um Mac ao
lado. É possível ainda ter três ou até quatro PCs, para
literalmente ser "envolvido" pelos monitores :-)
Muita gente usa o VMWare ou o Win4lin para rodar
dois sistemas operacionais ao mesmo tempo, mesmo que
sacrificando parte do desempenho. Este recurso é um passo
adiante por permite ter ao mesmo tempo dois sistemas
operacionais completos, sem nenhum tipo de limitação e ao
mesmo tempo um aumento de desempenho, já que cada um tem
seu próprio PC e você pode distribuir seus aplicativos
entre eles.
Gnu Linux + Windows
O primeiro passo é ligar os dois PCs em rede e colocar seus
monitores lado a lado. Vamos começar pelo uso mais comum,
que é ter um PC com o Linux como principal e um PC com o
Windows (ou Mac) como secundário.
O primeiro passo é instalar o servidor VNC no PC com o
Windows (ou Mac). Tanto faz utilizar o VNC original, quanto
o Tight VNC. Não é preciso fazer nenhuma configuração,
apenas manter o servidor ativo.
Você pode baixar o VNC para Windows no: http://www.tightvnc.com/
Esta versão é bem simples de usar. Depois de instalar o
programa é criada uma seção dentro do iniciar, com ícones
para ativar o servidor ou abrir o cliente VNC. Ao ativar
o servidor ele fica residente na forma de um ícone ao lado
do relógio. Você é obrigado a definir uma senha de acesso
para evitar acessos não autorizados.
Neste caso o VNC não servirá para permitir o acesso remoto,
mas sim como uma ponte para que o cursor do mouse chegue
à segunda máquina.
Chegamos então à parte B, que é a configuração da máquina
Linux, que será usada como PC primário. Tudo o que você
precisa fazer é instalar um pequeno programa, o x2vnc,
que cuida da parte pesada. Você pode baixa-lo no:
http://fredrik.hubbe.net/x2vnc.html
O programa tem apenas 56 kb, só mais um exemplo de que
tamanho não é documento :-). Para instala-lo use os
comandos:
$ tar -zxvf x2vnc-1.4.tar.gz (descompacta o pacote)
$ cd x2vnc-1.4.tar.gz (acessa o diretório criado)
$ ./configure (roda o script de configuração)
$ make (gere o executável)
$ su <senha> (para virar root)
# mkdir /usr/local/man/man1/
# make install (finalmente instala o programa)
Algumas distribuições já incluem este pacote. No Debian
por exemplo você pode instala-lo com um: "apt-get install
x2vnc"
Feito isso basta acessar (a partir do micro Linux) o
servidor VNC ativo na máquina Windows, usando o comando:
$ x2vnc 192.168.0.3:0
Substituindo naturalmente o 192.168.0.3 pelo endereço
IP correto. O ":0" indica que o programa acessará a tela
principal do VNC, que é justamente o que queremos.
Pronto, estabelecida a conexão, basta levar o cursor do
mouse até o canto direito da tela e ele automaticamente
passa para a tela do micro Windows, e levando-o de volta
para a esquerda ele volta ao micro Linux. Naturalmente,
o teclado acompanha o rastro do mouse, atuando sobre o PC
onde estiver o mouse. É exatamente como ter um PC com dois
monitores, mas desta vez com dois PCs.
O que o x2vnc faz é criar uma janela invisível, com um
único pixel de largura, posicionada no canto esquerdo da
tela. Esta janela captura o rastro do mouse, enviando-o
para o servidor VNC ativo no segundo micro que se encarrega
de controlar o rastro do mouse na máquina Windows.
Se por acaso o segundo monitor for colocado à esquerda
do primeiro, basta incluir a opção "-west" no comando e
o mouse mudará de PC ao ser levado para o canto esquerdo
da tela:
$ x2vnc -west 192.168.0.3:0
Você pode usar também as opções "-north" e "-south" que
capturam o cursor respectivamente no canto superior e
inferior da tela. Não é necessário que os dois PCs usem a
mesma resolução de tela. Você pode ter um usando 1024x768
e outro usando 800x600, por exemplo, sem problemas. Até
a rodinha do mouse funciona normalmente.
Já que você controlará o PC Windows através da outra
máquina, não há necessidade de manter nem teclado nem
mouse instalados. No caso do teclado basta configurar
a opção "halt on" do setup com a opção "no errors" e o
BIOS deixará de exibir a mensagem de falta do teclado. No
caso do mouse existe um pequeno problema no Windows 2000
e XP que faz com que a seta do mouse suma caso não haja um
mouse instalado na máquina. O cursor funciona normalmente,
mas sem a setinha fica difícil de controlá-lo. Nestes casos
você precisa manter um mouse baratinho qualquer conectado
para evitar o problema.
Mais alguns parâmetros que podem ser incluídos no comando são:
-shared : permite que o mesmo PC secundário seja usado por
mais de um PC. Serviria por exemplo para ter dois PCs, cada
um com o seu operador e um terceiro PC entre os dois para
uso comum. Lembre-se também que o servidor VNC na máquina
Windows também pode aceitar conexões remotas, exibindo
a mesma tela. Isto pode ser usado com uma ferramenta de
trabalho em grupo.
-hotkey : se você acha incômodo o mouse ir sozinho para o
outro monitor ao chegar ao canto da tela, você pode ativar
um atalho de teclado para fazer a mudança. O default é
ctrl+F12, mas você pode criar um atalho personalizado,
incluindo as teclas desejadas no comando, como em:
"-hotkey shift-ctrl-F1".
-scrolllines : serve para ajustar a sensibilidade da roda
do mouse. A opção "-scrolllines 5" faz com que a tela role
5 linhas a cada passo e assim por diante.
A partir destas opções, você pode criar um
comando personalizado que se ajuste melhor às suas
necessidades. Pode ser por exemplo:
$ x2vnc -west scrolllines 5 shared 192.168.0.3:0
Infelizmente, você precisa repetir o comando a cada vez
que reiniciar os PCs, mas você pode criar um atalho para
facilitar as coisas. No KDE clique sobre a barra de tarefas
e em "Adicionar > Botão especial > Aplicação Não-KDE". Na
linha do comando escreva "/usr/local/bin/x2vnc". Na tela de
configuração do atalho Marque a opção "roda no terminal"
e escreva o restante do comando, incluindo as opções e o
endereço da máquina que será contactada. Aproveite para
escolher um ícone.
Agora ao clicar sobre o atalho abre-se uma janela de
terminal com o comando e você precisa apenas digitar sua
senha para se conectar ao segundo micro.
Um aviso importante é que as últimas versões, a partir
do 1.4.1, incorporaram alguns recursos que a tornaram
incompatíveis com algumas distribuições Linux e algumas
combinações de servidores X e versões do Kernel. Se ao
tentar ativar o x2vnc você receber uma mensagem de erro
qualquer, não esquente a cabeça. Simplesmente baixe a
versão 1.3.1 (ou outra anterior) e tente novamente. Por
mais azarado que você possa ser, pode ter certeza que
uma das versões disponíveis na página irá funcionar com
você :-)
Apesar da idéia soar um pouco estranha para muitos, o
funcionamento do programa é quase perfeito. A sensibilidade
do mouse fica praticamente inalterada e a velocidade em
ambos os micros não é prejudicada.
O único grande problema é que a acentuação só funciona no
segundo micro caso você esteja utilizando um teclado US
Internacional. Ao utilizar um teclado ABNT2 a acentuação
não funciona no segundo micro. Isto já foi incluído na
lista de bugs em aberto e deve ser corrigido nas próximas
versões.
Gnu Linux + Linux
Vamos então à segunda possibilidade, que é ter lado a lado
duas máquinas Linux. Neste caso a única mudança é que ao
invés de instalar o VNC Server na máquina secundária, você
usará o o krfb (Compartilhamento do Desktop), um programa
do pacote KDE originalmente destinado a permitir que o
desktop principal seja acessado remotamente, seja para
usar seu micro a distância, seja para dar suporte remoto.
Este programa faz parte do pacote kdenetwork, que você pode
instalar com o comando "urpmi kdenetwork" (no Mandrake),
"apt-get install kdenetwork" (Debian e Conectiva), etc. O
Kurumin já vem com ele funcionando direto do CD
Este programa emula a funcionalidade do compartilhamento
de desktop do Windows XP, permitindo que outra pessoa
se conecte na sua máquina e veja o seu desktop usando um
cliente VNC. A única diferença entre o vncserver for Linux
e o krfb é que ele compartilha a tela :0, a que você está
vendo no monitor ao invés de criar uma seção do X separada.
Basta abrir o programa e clicar no "Criar Convite
pessoal". Ele abrirá uma tela dando o IP da máquina
(do servidor), que o cliente usará para se conectar e
uma senha:
Feito isso você já poderá se conectar usando o x2vnc
normalmente, da mesma forma que faria ao usar uma segunda
máquina com o Windows.
O problema desta configuração default do krfb é que é
utilizada uma configuração "segura" e por isso os convites
são válidos por apenas uma hora. Não seria muito prático
ficar reconectando o x2vnc oito vezes por dia, mas existe
uma solução fácil para isso.
Na tela principal do programa, clique no "Configurar". Na
tela seguinte, marque as opções "Permite conexões sem
convite" e "Permite conexões sem convite para controlar
o ambiente de trabalho". Defina uma senha de acesso.
Mesmo configurado desta maneira, o krfb ainda é seguro,
pois além da senha de acesso, toda vez que alguém tenta
se conectar à sua máquina, ele exibe um aviso, informando
o IP da máquina e pedindo sua confirmação.
Para poder se conectar remotamente, é preciso manter o krfb
aberto na segunda máquina. Se você quiser que ele seja
ativado automaticamente durante o boot, basta arrastar o
ícone para dentro da pasta .kde/Autostart dentro do seu
diretório home.
Versões antigas do krfb, até o KDE 3.1 ainda não possuíam
esta opção. Nelas era preciso fazer uma pequena adaptação
para que não fosse necessário ficar gerando convites e os
renovando toda hora:
Crie um convite e estabeleça a conexão normalmente. Depois,
acesse a pasta ".kde/share/config/" (dentro do home do
usuário que estiver utilizando) e abra o arquivo krfbrc.
Aqui ficam a configuração dos convites, incluindo a data
de duração em texto puro. Apenas a senha está encriptada
e por isso não pode ser alterada:
[invitations]
creation0=2005,4,19,12,12,41
expiration0=2005,4,19,13,12,41
invitation_num=0
password0=ï¿ï¿¦ï¾µï¿²ï¾¥ï¿ï¾²
Tudo o que você precisa fazer é alterar o campo
"expiration" que indica quando o convite expira. Se você
alterar o ano, de 2005 para 2006 por exemplo, o convite
poderá ser usado por um bom tempo :-) A única limitação
é que o convite é eliminado quando o micro é desligado,
por isso você ainda terá o trabalho de abrir o krfb uma
vez por dia, a menos que deixe seus micros sempre ligados.
Windows + Windows
Finalmente, caso você queira utilizar duas máquinas
Windows, precisará utilizar o Win2VNC. Este programa tem
exatamente a mesma função do x2vnc, com a diferença que
roda sobre o Windows. Você só precisa instala-lo no PC
Windows primário e usá-lo para acessar o VNC Server no PC
Windows secundário. Você pode baixa-lo em:
http://fredrik.hubbe.net/win2vnc.html
Windows + Linux
A última possibilidade seria ter um PC Windows como
primário e um PC Linux como secundário. Neste caso você
utilizaria o Win2VNC no PC primário, com o Windows e o
krfb no PC secundário com o Linux.
Gostou da dica? Veja a agenda de cursos presenciais com Carlos E. Morimoto em Porto Alegre e São Paulo
- Curso: Redes e Servidores Linux (com Carlos E. Morimoto)
Em Porto Alegre, início dia 04/07
- Curso: Programando em Shell Script (com Júlio Cezar Neves)
Em Porto Alegre, início dia 11/07