NOTA: Estou ciente de que esta resposta se aplica ao modo virtual do RealVNC em vez do modo de serviço ( vncserver-x11-serviced
), mas acho que o modo virtual é geralmente mais útil de qualquer maneira, e é o único cuja resolução pode ser alterado dinamicamente . É provavelmente uma técnica bastante semelhante para alterar a resolução do RealVNC quando ele está sendo executado no Modo de Serviço.
Após a instalação do RealVNC (no momento da escrita, versão 5.2.1), aplicando uma licença livre usando vnclicense -add ...
e executando o servidor VNC em seu "Modo Virtual" (também existem os modos Serviço e Usuário que Eu não vou entrar aqui já que já é bastante complexo), eu descobri o quão profundo é esse rabbithole. :-) A documentação para isso está longe de ser abrangente ou óbvia, e os únicos artigos da base de conhecimento sobre o site da RealVNC são um pouco datado (falando sobre o comando vncserver
em vez do recomendação atual aparente , vncserver-virtual
) ou sobre alterando a resolução dinamicamente com RandR durante uma sessão, não escolhendo qual resolução deve ser usada quando o servidor VNC for iniciado.
Em primeiro lugar, a palavra "geometria" tende a ser usada no contexto do Sistema X Window em vez da palavra "resolução". A resolução padrão dada a você pelo servidor VNC (ou talvez o próprio X) parece ser 800x600.
Agora, você pode passar parâmetros diretamente para o X Server ao iniciar o servidor do RealVNC manualmente a partir da linha de comando (ou obviamente de forma automatizada na inicialização de algo como rc.local
), e o parâmetro a passar para definir a resolução é% código%. Então, isso iniciará uma instância virtual do servidor RealVNC com resolução de 1280x1024:
> vncserver-virtual -geometry 1280x1024
Eu geralmente corro como root quando estou testando coisas como esta, então eu mudo para o usuário cuja área de trabalho eu quero o VNC primeiro:
> sudo -u [someuser] vncserver-virtual -geometry 1280x1024
Isso requer a passagem de um parâmetro geometry
na linha de comando, é claro. RealVNC também suporta a configuração do serviço VNC através de vários arquivos de configuração. No entanto, confusamente, config para "Xvnc" (o servidor RealVNC subjacente usado em sistemas UNIX que se comunica com o X, e que precisa usar o parâmetro geometry
config) tem que ir em um localização diferente dos arquivos de configuração" normais "do RealVNC; geometry
para configurações de todo o servidor ou /etc/vnc/config.custom
para configurações específicas do usuário. Estes são totalmente separados dos outros arquivos de configuração do RealVNC e descobrir isso foi muito difícil. Como eu disse, os documentos sobre isso são terríveis. Portanto, para não precisar especificar a resolução na linha de comando, crie o arquivo ~/.vnc/config
e forneça o seguinte conteúdo:
-geometry 1280x1024
Então quando você corre:
> sudo -u [someuser] vncserver-virtual
... a resolução para essa instância do servidor VNC será padronizada para 1280x1024.
Eu assumo que este arquivo de configuração também será usado pelo daemon /etc/vnc/config.custom
também, para cada uma das vncserver-virtuald
instâncias que ele gera (na verdade, pode ser a única maneira de definir a resolução padrão para o daemon), mas como o daemon requer uma licença corporativa para usar e eu estou usando apenas a licença livre, eu não pude testá-lo. / p>
Ufa!
A propósito, mencionei o RandR anteriormente. Essa é outra maneira de obter uma resolução / geometria diferente ao se conectar ao servidor RealVNC em sistemas UNIX. Só funciona quando o servidor RealVNC está sendo executado no "Modo Virtual". Ele também permite a mudança dinâmica de resoluções durante a sessão VNC, e é um pouco melhor documentado do que o material do parâmetro vncserver-virtual
que mencionei acima. :-) Quando esta definição de configuração está definida (e ela entra no conjunto "normal" de arquivos de configuração RealVNC, não aqueles separados para Xvnc ... go figura), você deve ser capaz de usar o comando -geometry
de dentro da sessão VNC para alterar dinamicamente a resolução para uma das resoluções especificadas na configuração xrandr
.