Linux で randr を使用せずに vncserver の画面解像度/ジオメトリを変更する

Linux で randr を使用せずに vncserver の画面解像度/ジオメトリを変更する

VNC セッション内で実行されているプログラムに影響を与えずに、VNC セッションの解像度/ジオメトリを動的に変更したいと考えています。

参照:Linux で VNC セッションの解像度を変更する新しい 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% 確実ではありませんが、ほぼ確実です)。

関連情報