起動済みのXをTigerVNCで共有

通常はVNCは新しいXを起動して使うことが多いと思いますが,ヘッドレス環境や入力デバイスの貧弱な環境デモの際など既に起動済みのXの画面を利用したいことがあります.(例えばKoboとかマウス忘れたとか><)


昔はvinoを使っていましたが,設定画面がGnomeに統合されてGnome環境以外で利用するのが面倒になってしまいました.


一応dconfを書き換えれば設定できます.

% gsettings list-recursively org.gnome.Vino
org.gnome.Vino notify-on-connect true
org.gnome.Vino alternative-port uint16 5900
org.gnome.Vino disable-background false
org.gnome.Vino use-alternative-port true
org.gnome.Vino icon-visibility 'client'
org.gnome.Vino use-upnp true
org.gnome.Vino view-only false
org.gnome.Vino prompt-enabled false
org.gnome.Vino disable-xdamage false
org.gnome.Vino authentication-methods ['vnc']
org.gnome.Vino network-interface ''
org.gnome.Vino require-encryption false
org.gnome.Vino mailto ''
org.gnome.Vino lock-screen-on-disconnect false
org.gnome.Vino vnc-password 'xxxxxxxxxxx'

GUIが良ければdconf-editorとかを.

20160304_00:03:38-25955

#MATE環境でvinoが起動してこない場合は次のページを -> Raspberry_Pi/Ubuntu_MATE – matoken’s wiki.

Gnome重いしdconf書き換えるんもめんどいなということで最近はx11vncを使っていました.

$ sudo apt install x11vnc
$ x11vnc -localhost -rfbauth $HOME/.vnc/passwd -display :0

今回以下の記事を読んでTigerVNCでも出来ることを知りました!

今回はVinoと同じく現在ログインしているデスクトップを転送するため,TigerVNCサーバーはユーザー権限で動作し,新しい仮想ディスプレイは作成しません。TigerVNCにはそのような便利なコマンドが用意されています。

続いて次のコマンドを実行し,TigerVNCを起動します。

$ x0vncserver -display :0 -passwordfile ~/.vnc/passwd

TigerVNCに含まれるx0vncserverを使うといけるようです.

しかしDebianにもパッケージがないようです.

$ w3m -dump 'https://packages.debian.org/search?suite=all&section=all&arch=any&searchon=names&keywords=tigervnc'|grep 'tigervnc を名前に含むパッケージを' -A4
tigervnc を名前に含むパッケージを、すべてのスイート、すべてのセクション、すべて
のアーキテクチャで検索しました。
 
残念ながら、検索結果はありませんでした
 

Ubuntu 14.04環境が別にあるのでそちらにいくやさんの用意されたリポジトリを用意して導入してみます.

しかし,add-apt-reposotoryが見当たりません.環境がおかしくなっている?

$ sudo add-apt-reposotory ppa:ikuya-fruitsbasket/tigervnc
sudo: add-apt-reposotory: command not found
$ add-apt-reposotory
コマンド 'add-apt-reposotory' は見つかりませんでした。もしかして:
 コマンド 'add-apt-repository' - パッケージ 'software-properties-common' (main)
add-apt-reposotory: コマンドが見つかりません
$ sudo apt install software-properties-common
$ add-apt-reposotory -h
コマンド 'add-apt-reposotory' は見つかりませんでした。もしかして:
 コマンド 'add-apt-repository' - パッケージ 'software-properties-common' (main)
add-apt-reposotory: コマンドが見つかりません
$ apt-file update
$ apt-file search add-apt-reposotory
$ dpkg -L software-properties-common|grep add-apt-reposotory

見つからない?

あ,スペルミスだ
~s/add-apt-reposotory/add-apt-repository/gですね.よく見ましょうorz

$ dpkg -L software-properties-common |grep bin
/usr/bin
/usr/bin/add-apt-repository
/usr/bin/apt-add-repository
$ add-apt-repository
エラー: root で実行する必要があります
$ add-apt-repository
エラー: root で実行する必要があります

ということでこんな感じでいけました.

$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:ikuya-fruitsbasket/tigervnc
$ sudo apt update && sudo apt upgrade
$ sudo apt install tigervncserver

よし早速!

$ x0vncserver -display :0 -passwordfile ~/.vnc/passwd
x0vncserver: unable to open display ":0"
~ImageCleanup called

そういえば起動してませんでした.この端末はX入れているけどX転送でたまにアプリを使うくらいなので起動していないのです.
slimを起動(確かデフォルトはlightdm)してloginして

$ sudo service slim start

再度

$ x0vncserver -display :0 -passwordfile ~/.vnc/passwd

そしてRemminaで接続……出来ない.fwのせいでした.とりあえずssh -L で5900を転送してlocalhostに接続しました.

20160304_04:03:41-24566

うまく行きました :)

しかし,クライアント側もTigerVNCで繋いでみたいところ.とりあえずi686とx86_64についてはバイナリ配布もされているようなのでこれを利用してみます.

とりあえず適当なディレクトリに展開して実行で動きました.

$ wget http://tigervnc.bphinz.com/nightly/xc/x86_64/tigervnc-Linux-x86_64-1.6.80-20160302gitf34a386c.tar.gz
$ md5sum tigervnc-Linux-x86_64-1.6.80-20160302gitf34a386c.tar.gz
ea9ea2396d42819d4ea588a6598f583b  tigervnc-Linux-x86_64-1.6.80-20160302gitf34a386c.tar.gz
$ tar xf tigervnc-Linux-x86_64-1.6.80-20160302gitf34a386c.tar.gz -C ~/tmp
$ ~/tmp/usr/bin/vncviewer &

ちなみに
vnc4serverにもx0vnc4serverというそれらしいものがあるようです.そのうち試してみよう.