Я хочу динамически изменять разрешение/геометрию моего сеанса VNC, не влияя на работающие внутри него программы.
Я имел в виду:Изменение разрешения сеанса VNC в LinuxУ меня нет прав root для обновления новой версии vncserver, поэтому следующая команда сейчас не работает:
vncserver -geometry 1280x1024 -randr 1280x1024,1280x800
На данный момент, всякий раз, когда я хочу изменить размер экрана с одного монитора на другой, я убиваю сеанс и перезапускаю его с измененной -geometry
опцией. Из-за этого мне приходится терять программы внутри него.
Есть ли способ взломать файл, который хранит геометрию и изменить значения для изменения разрешения? Я не смог найти такой файл. В моей домашней папке я вижу следующие файлы:
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
Содержимое xstartup
файла не помогает:
#!/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 &
... здесь xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
линия остается постоянной при любом разрешении.
[Примечание: я вижу, что он xrandr
установлен на Linux-машине.]
решение1
«Хакерское» решение: запустить vncserver без какой-либо указанной геометрии
vncserver :1
Затем я подключусь к VNC, и в Fedora просто зайду в «Настройки»>«Дисплеи»>«Неизвестный 0» и изменю разрешение на лету, вот так. Придется немного пощелкать, а не набрать (DX), но это просто.
решение2
Приведенный выше ответ для Fedora мне не помог (RedHat Enterprise), я смог выполнить то, что вам нужно, выполнив следующие шаги:
1) войдите в свою сессию VNC (существующую)
2) откройте терминал и введите: xrandr -s 1920x1080 (или другую поддерживаемую геометрию/дисплей*)
чтобы увидеть поддерживаемые randr дисплеи/разрешения, введите:
xrandr (без аргументов)
Просто и ничего лишнего!
решение3
Установите параметр геометрии в файле конфигурации systemd (или в другом применимом скрипте запуска) ~ этот пример работает с Fedora 28 (при условии, что дескрипторы файлов selinux фиксированы).
Замените USERNAME на фактическое имя пользователя:
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
решение4
$HOME/.vnc/xstartup
это тот файл, который вы ищете, и да, вы можете задать геометрию там. Он должен настроиться при повторном подключении, не прерывая сеанс (не уверен на 100%, но почти уверен).