segunda-feira, 18 de março de 2013

Acesso remoto vnc com tightvnc com desktop xfce4



Para isto é necessário ter instalado o tightvnc ou nas distros baseada em ubuntu os pacotes tightvncserver e xvnc4viewer. 

Como usar o tightvnc:

$ vncpasswd  (cria a senha de acesso para o seu computador)
$ vncserver    (ativa o servidor vnc)
$ vncviewer   (cliente para controlar o computador que está rodando o servidor vnc)

Para quem usar o desktop xfce4 para que o mesmo seja mostrado na janela do vnc, seja nas distro ubuntu ou derivadas e de outras distros ou Windows é necessário colocar algumas linhas no arquivo ~/.vnc/xstartup do computador a ser controlado. Caso não seja colocadas as linhas referente ao ambiente xfce4, será exibido uma janela de fundo cinza sem nada e o clique do mouse para tentar exibi algum menu suspenso também não funcionará.

O conteúdo do arquivo ~/.vnc/xstartup  deve ter as seguintes linhas para poder visualizar o desktop xfce4, caso faltar alguma delas, alguma coisa não funcionará corretamente dentro da janela do vnc.

unset SESSION_MANAGER (necessário para alguns gerenciadores de janela)
/etc/X11/Xsession                (necessário para alguns gerenciadores de janela)
/usr/bin/xfce4-session & 
xfwm4  & 
Thunar --daemon & 
xfsettingsd & 
xfce4-panel & 
xfdesktop & 
startxfce4 &

As linha acimas em azul são todas referente ao desktop xfce4.
Com tudo pronto, agora qualquer computador da sua rede local ou pelo internet poderá acessar o seu remotamente pelo vnc, mesmo que eles usem outros programas de vnc diferentes.

Com o vnc instalado e configurado o ambiente xfce4 no arquivo ~/.vnc/xstartup do computador de nome mesa, para acessar a partir de um outro micro da sua rede local faça:
$ vncviewer mesa:1 

Onde vncviewer é o programa que irá visualizar o desktop do computador mesa a ser controlado (o computador que vai ser controlado deve está rodando o servidor vncserver).

Para exibir o menu da janela do vncviewer tecle F8.  

Notas:
Computadores com Linux, sempre deve especificar imediatamente após o nome do computador ou IP o número da instância do vncserver (:1), mesmo a partir de um computador rodando Windows.

Acesso pelo IP da rede numa rede local:  vncviewer 192.168.1.110:1

O valor 1 após 2 pontos (:1) é obrigatório, e indica o o número da instância, que é fornecido ao executar o vncserver (somente pra computadores com Linux), não tendo nada a ver com o IP. 

Caso você tenha apenas um computador você pode acessar o mesmo pelo vnc para saber como é o funcionamento do mesmo e que será idêntico como se fosse a partir de um outro computador e que também servirá para testar as opções configuradas no arquivo ~/.vnc/xstartup sem precisar ter outro computador por perto para fazer o teste.

Toda nova configuração que você fizer no arquivo ~/.vnc/xstartup você deve finalizar o servidor vncserver e iniciar novamente o mesmo para utilizar a nova configuração.
Use o seguinte comando, sendo que o nome do servidor do vncserver varia conforme o tipo do pacote do vnc e da distro usada.
Exemplo para terminar o servidor vncserver.
$ killall Xvnc 
$ killall Xtightvnc

As configurações padrão do arquivo ~/.vnc/xstartup podem varia de distro para distro.

Outros gerenciadores de janelas

No arquivo ~/.vnc/xstartup, para poder utilizar outros gerenciadores de janela instalados diferente do padrão da distro é necessário comentar a linha /etc/X11/Xsession e caso você não querer usar o desktop xfce4 remova ou comente todas as linhas referente ao xfce4 ou simplesmente exclua este arquivo, pois quando for executado novamente o vncserver será criado outro arquivo com as opções padrão, caso o mesmo não existir no diretório ~/.vnc.
Exemplo de outro gerenciador de janela no arquivo ~/.vnc/xstartup
wmaker &


Tamanho da janela  vncviewer

Quando você executar o servidor vncserver por padrão ele utiliza a resolução utilizada pelo seu desktop para os outros micros que acessar o seu remotamente. 
Por exemplo, o micro mesa que executou o vncserver sem parâmetros por padrão usar resolução 1280x1024 então quem acessar a sua maquina remotamente utilizará esta resolução na janela do vncviewer e no caso do micro controlador utilizar a mesma resolução de tela haverá um barra de rolagem, com um espaço pra rolar um pouquinho já que ambos computadores usam a mesma resolução de tela. Se o micro controlador usa uma resolução maior não haverá barra de rolagem na janela do vncviewer. 

Caso o micro controlador usa uma resolução inferior ao seu haverá barra de rolagem para rolar a janela com bastante espaço pra rolar a tela, o que é ruim para exibir  a barra de programas ou a barra de títulos do programa executado dentro da janela do vnc tendo que está sempre rolando a janela para acessar o item desejado. 
Por exemplo o micro que vai controlar o seu usa resolução de 1024x768 e o seu computador que executou o vncserver por padrão usa 1280x1024 de resolução, então você deve especificar uma resolução menor que é usada no micro que vai controlar o seu remotamente para não exibir a barra de rolagem nele, como por exemplo 800x600 que é um tamanho ideal pra o micro que vai controlar o seu remotamente se ele usa resolução 1024x768. 
$ vncserver -depth 16 -geometry 800x600 

Pronto, agora o computador que irá controlar o seu cujo o desktop do mesmo usa uma resolução de 1024x768, não mais haverá barra de rolagem na janela do vnc já que o desktop remoto aparece por inteiro.

Xfce4 do Slackware 13.1

Já no arquivo ~/.vnc/xstartup da distro Slackware 13.1 a linha  exec /etc/X11/xinit/xinitrc devem ser comentada para que funcione a visualização do desktop xfce4.
A linha xfwm4 & usada no Xubuntu sem opções não funciona corretamente as janelas no Slackware, devendo acrescentar as opções --replace --display :1.0 (xfwm4 --replace --display :1.0 & )

Ser não usar a opção --replace --display :1.0 não será exibida a barra de títulos das janelas, não tendo como minimizar, mover ou fechar a janela, tendo que usar o menu Arquivo da aplicação para fechar a mesma).

Outros gerenciadores de janelas no Slackware 13.1

As duas linhas do arquivo ~/.vnc/xstartup abaixo devem ser comentadas (# sustenido na frente), sendo que o padrão é descomentadas.
unset SESSION_MANAGER 
exec /etc/X11/xinit/xinitrc 

Elas devem está comentadas pois se não tiver não será exibido o desktop wmaker ou qualquer desktop simples de window managers pra o X e sim o desktop padrão do sistema ou conforme uma configuração errada apenas uma tela cinza com o cursor do mouse.

Outras:


Para que computadores Windows também possam ver o desktop do computador Linux é necessário configurar o gerenciador de janela no arquivo ~/.vnc/xstartup, pois senão será apresentado apenas uma janela com fundo cinza sem nada na mesma.



Um comentário:

  1. Muito legal, mas como eu faço apara ver um programa rodando na janela local, se eu crio um icone pelo vnc ele aparece na local. Mas quando abro o wireshark no vnc nada acontece, mas no pc da maquina local funciona. Se eu abro o IDE arduino abre com o vnc , mas o wireshark so funciona na janela atual.

    ResponderExcluir