web-dev-qa-db-ja.com

vnc:デフォルトで開かれているターミナルアプリケーションでシェルプロンプトを取得できない

私はVNCサーバー(mintのvnc4server)をセットアップしており、~/.vnc.にデフォルトのxstartupファイルがあります。twmウィンドウマネージャーを使用しています。 VNCサーバーに接続すると、正常に認証されて端末が表示されますが、プロンプトが表示されません。マウスを使用してターミナルで新しいタブを開くことができますが、押されたキーのどれもターミナルアプリケーションによって操作されません。いくつかのランダムなキーを押してパケットをキャプチャすると、それらのキーがVNCサーバーボックスで「クライアントキーイベント」として受信されます。 VNCクライアントはキーボードイベントとマウスイベントを渡し、フレームバッファの更新を受信できるようですが、何らかの理由で、サーバーで実行されているアプリケーションがキーボードイベントを処理していないようです。

xstartupファイル:

~/.vnc$ ls
passwd  rag-tos-laptop:1.log  rag-tos-laptop:1.pid  xstartup*  xstartup.bak*

~/.vnc$ cat 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 &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &
twm &

Screenshot showing terminal menu

さらに調査したところ、geditを起動すれば作業できる(文章を入力できる)ことがわかりました。これは、任意の端末(+ Shell)での作業にのみ問題があるようです。 xstartupでgnome-terminalを起動しても、VNCビューアでシェルを取得できません。さらに診断情報:

~/.vnc$ ps --ppid 3334 -o pid,ppid,stat,cmd
  PID  PPID STAT CMD
 3342  3334 S    gnome-pty-helper
 3343  3334 Ss+  bash

~/.vnc$ ls -l /proc/3334/fd
total 0
lr-x------ 1 rag rag 64 Jan  5 23:25 0 -> /dev/null
l-wx------ 1 rag rag 64 Jan  5 23:25 1 -> /home/rag/.vnc/rag-tos-laptop:1.log
lrwx------ 1 rag rag 64 Jan  5 23:25 10 -> socket:[17343]
lrwx------ 1 rag rag 64 Jan  5 23:25 11 -> anon_inode:[eventfd]
lrwx------ 1 rag rag 64 Jan  5 23:25 12 -> /dev/ptmx
lrwx------ 1 rag rag 64 Jan  5 23:25 13 -> /dev/pts/4
lrwx------ 1 rag rag 64 Jan  5 23:25 14 -> socket:[19273]
lrwx------ 1 rag rag 64 Jan  5 23:25 15 -> anon_inode:[eventfd]
l-wx------ 1 rag rag 64 Jan  5 23:24 2 -> /home/rag/.vnc/rag-tos-laptop:1.log
lrwx------ 1 rag rag 64 Jan  5 23:25 3 -> socket:[19263]
lrwx------ 1 rag rag 64 Jan  5 23:25 4 -> socket:[19267]
lrwx------ 1 rag rag 64 Jan  5 23:25 5 -> anon_inode:[eventfd]
lrwx------ 1 rag rag 64 Jan  5 23:25 6 -> anon_inode:[eventfd]
lrwx------ 1 rag rag 64 Jan  5 23:25 7 -> socket:[20165]
lrwx------ 1 rag rag 64 Jan  5 23:25 8 -> socket:[17342]
lrwx------ 1 rag rag 64 Jan  5 23:25 9 -> anon_inode:[eventfd]

~/.vnc$ ls -l /proc/3343/fd
total 0
lrwx------ 1 rag rag 64 Jan  5 23:23 0 -> /dev/pts/4
lrwx------ 1 rag rag 64 Jan  5 23:23 1 -> /dev/pts/4
lrwx------ 1 rag rag 64 Jan  5 23:23 2 -> /dev/pts/4
lrwx------ 1 rag rag 64 Jan  5 23:25 255 -> /dev/pts/4
4
rag

私はまったく同じ問題を抱えていました。無駄のない軽量なTWMを使用することを好みます。 Linux Mintボックスは私のホームサーバーであり、とにかくGUIツールを必要とすることはめったにありません。私がそれに行っていることのほとんどすべてはコマンドラインのものです-たくさんのスクリプトが走っています。

これが私がしたことです:

  1. sudo apt-get install xterm
  2. xtermを使用するように〜/ .vnc/xstartupを編集します

#!/bin/sh

exec /etc/X11/xinit/xinitrc [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources

xsetroot -solid grey   

vncconfig -iconic &  #!/bin/sh



/usr/bin/xterm -geometry 80x24+10+10 -ls -title "xterm" &   

/usr/bin/xterm -geometry 80x24+200+200 -ls -T "xterm" &   

twm &

VNC server running TWM window manager on Linux Mint 17.1 つまり、mate-terminal、gnome-terminal、x-terminal-emulatorではなく、xtermを使用します。

なぜ他の人が動かないのか分かりませんが、xtermには満足しています。 1つのウィンドウで複数のシーズ/タブを実行しているようには見えませんが、xterm&と入力するだけで同じウィンドウで新しいセッションを開くことで同じことができます。

を使用してカットアンドペースト Shift-Ctrl-C そして Shift-Ctrl-Vも機能しませんが、テキストをマウスで強調表示してからターゲットウィンドウに移動し、マウスの中央ボタン(または左と右を同時に)を押して貼り付けることで、同じことができます。これは、ラップトップのvncviewerウィンドウから同じラップトップのFirefoxブラウザウィンドウに、上記のxstartupファイルを貼り付けた方法です。サーバー上のxterm間でも同じ方法が機能します。

注:-title引数は無視されます。繰り返しますが、理由はわかりません。

3
Steve Bates