Alterando a resolução / geometria da tela de um servidor vncs sem randr no Linux

9

Quero alterar a resolução / geometria da minha sessão VNC dinamicamente sem afetar os programas em execução nela.

Eu me referi: Alterando a resolução de uma sessão VNC no Linux . Como não tenho permissão root para atualizar a versão mais recente do vncserver, o comando a seguir não funciona a partir de agora:

vncserver -geometry 1280x1024 -randr 1280x1024,1280x800

Por enquanto, sempre que eu quiser alterar o tamanho da tela de um monitor para outro, eu mato a sessão e a reinicio com a -geometryopção modificada . Devido a isso, tenho que perder os programas dentro dele.

Existe alguma maneira de hackear o arquivo que armazena a geometria e altera os valores para alterar a resolução? Não consegui encontrar esse arquivo. Na minha pasta pessoal, vejo os arquivos abaixo:

mgandhi@starbase:~/.vnc$ ll
total 12
-rwxr-xr-x 1 mgandhi bc  334 Jun 25 10:32 xstartup
-rw------- 1 mgandhi bc    8 Jun 25 10:32 passwd
-rw-r--r-- 1 mgandhi bc    6 Jun 25 11:08 starbase.radisys.com:23.pid
-rw-r--r-- 1 mgandhi bc 1664 Jun 25 11:08 starbase.radisys.com:23.log

O conteúdo do xstartuparquivo não ajuda:

#!/bin/sh

# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &

... aqui a xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &linha permanece constante para qualquer resolução.

[Nota: Vejo que xrandrestá instalado na máquina Linux.]

iammilind
fonte

Respostas:

4

Uma solução "Hack": inicie o vncserver sem nenhuma geometria especificada

vncserver :1

Então eu vou me conectar ao vnc, e no Fedora, eu vou em Settings> Displays> Unknown 0 "e mudarei a resolução rapidamente assim. Dê alguns cliques em vez de digitar (DX), mas é fácil.

éolo
fonte
11
Esta opção resulta em "não é possível determinar a versão do xrandr" e nada mais: - / (Debian 8) mas parece interessante.
M3nda
1

Defina a opção geometry no arquivo de configuração systemd (ou script de inicialização aplicável) ~ este exemplo funciona com o Fedora 28 (assumindo que os descritores de arquivo selinux foram corrigidos).

Substitua USERNAME pelo nome de usuário real:

cat /etc/systemd/system/vncserver@\:1.service

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
User=USERNAME

# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver %i -geometry 1280x1024
PIDFile=/home/USERNAME/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target
Chad Geary
fonte
1

A resposta acima para o Fedora não funcionou para mim (RedHat Enterprise). Consegui realizar o que você precisa nestas etapas:

1) faça login na sua sessão VNC (existente)

2) abra um terminal e digite: xrandr -s 1920x1080 (ou outra geometria / tela suportada *)

para ver telas / resoluções suportadas por randr, digite:

xrandr (sem argumentos)

Fácil, e nada extravagante!

Momchil Milev
fonte
0

$HOME/.vnc/xstartupé o arquivo que você está procurando e, sim, você pode definir a geometria lá. Ele deve se ajustar ao se reconectar sem iniciar a sessão (não 100% de certeza, mas muita certeza).

Brad
fonte
11
Seria mais útil mostrar do que contar.
Scottlittle 30/05/19