web-dev-qa-db-ja.com

UbuntuのVNCServerでさまざまなxstartupファイルを使用する

1台のコンピューターから2台のVNCServerを実行したいと思います。 xstartupで指定されたスタートアップコマンドを実行したいのですが、別のコマンドで別のコマンドを実行したいのです。これはどのように行うことができますか?ありがとう。

2
meteoritepanama

別のxstartupファイルを直接実行することはできませんが、実際にはシェルスクリプトであるため、最初のVNCセッションか2番目のVNCセッションかを判断できるスクリプトロジックを構築することでこれを実現できます。

例えば:

#!/bin/sh

# switch on display number for special sessions
[ $DISPLAY == ":1" ] && exec startupOne
[ $DISPLAY == ":2" ] && exec startupTwo

# ... else use the normal vnc xstartup

# 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 &
1
Shannon Nelson

私はbashスクリプトをいじるのは少し新しいですが、非常によく似た要件がありました。一般的に、iPadで作業するときは、軽量のXCFEが必要でしたが、LAN経由では完全なgnomeデスクトップが必要でした。

これを回避するには、2つの追加のxstartupファイルxstartup1とxstartupを作成し、実行時にxstartupファイルをコピーします。

スクリプトの例...

#!/bin/sh
vncserver -kill :2
vncserver -kill :1
cp xstartup1 xstartup
vncserver
cp xstartup2 xstartup
vncserver

これにより、古いセッションが存在する場合はそれが強制終了され、5901および5902でアクセス可能な新しいセッションが作成されます:)

0
Pete