Zmiana rozdzielczości ekranu / geometrii serwera vncserver bez randr w Linuksie


9

Chcę dynamicznie zmieniać rozdzielczość / geometrię mojej sesji VNC bez wpływu na działające w niej programy.

Odniosłem się: zmiana rozdzielczości sesji VNC w systemie Linux . Nie mam uprawnień roota do aktualizacji nowszej wersji vncserver, więc następujące polecenie nie działa od teraz:

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

Na razie za każdym razem, gdy chcę zmienić rozmiar ekranu z jednego monitora na drugi, zabijam sesję i uruchamiam ją ponownie ze zmodyfikowaną -geometryopcją. Z tego powodu muszę zgubić znajdujące się w nim programy.

Czy jest jakiś sposób włamać się do pliku, który przechowuje geometrię i zmienić wartości zmiany rozdzielczości? Nie mogłem znaleźć takiego pliku. W moim katalogu domowym widzę poniższe pliki:

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

Zawartość xstartuppliku nie pomaga:

#!/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 &

... tutaj xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &linia pozostaje stała dla dowolnej rozdzielczości.

[Uwaga: Widzę, że xrandrjest zainstalowany na maszynie z systemem Linux.]

Odpowiedzi:


4

Rozwiązanie „Hack”: uruchom vncserver bez określonej geometrii

vncserver :1

Następnie połączę się z VNC, aw Fedorze przejdę do Ustawienia> Wyświetlacze> Nieznane 0 "i zmieniam rozdzielczość w ten sposób. Weź trochę klikania zamiast pisania (DX), ale to proste.


1
Ta opcja powoduje, że „nie można określić wersji xrandr” i nic więcej: - / (Debian 8), ale wygląda interesująco.
m3nda

1

Ustaw opcję geometrii w systemowym pliku konfiguracyjnym (lub w innym przypadku odpowiednim skrypcie startowym) ~ ten przykład działa z Fedorą 28 (zakładając, że deskryptory plików selinux są naprawione).

Zastąp USERNAME rzeczywistą nazwą użytkownika:

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

1

Powyższa odpowiedź dla Fedory nie działała dla mnie (RedHat Enterprise), udało mi się osiągnąć to, czego potrzebujesz w następujących krokach:

1) zaloguj się do sesji VNC (istnieje)

2) otwórz terminal i wpisz: xrandr -s 1920x1080 (lub inną obsługiwaną geometrię / wyświetlacz *)

aby zobaczyć obsługiwane przez Randr wyświetlacze / rozdzielczości, wpisz:

xrandr (bez argumentów)

Łatwe i nic szczególnego!


0

$HOME/.vnc/xstartupto plik, którego szukasz i tak, możesz ustawić tam geometrię. Powinien dostosować się po ponownym połączeniu bez przerywania sesji (nie w 100% pewny, ale całkiem pewny).


1
Lepiej byłoby pokazać niż powiedzieć.
scottlittle
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.