起動済みのXをTigerVNCで共有

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

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

Bug 700070 – don’t need standalone prefs anymore

一応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とかを．

＃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でも出来ることを知りました!

第411回　VNCサーバー／クライアントを使用してみる：Ubuntu Weekly Recipe｜gihyo.jp … 技術評論社

Ubuntu Weekly Recipe 第411回　VNCサーバー／クライアントを使用してみる – いくやの斬鉄日記

今回は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 を名前に含むパッケージを、すべてのスイート、すべてのセクション、すべて

のアーキテクチャで検索しました。

残念ながら、検索結果はありませんでした

Debian – パッケージ検索結果 – 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

見つからない?

Ubuntu – パッケージ内容検索結果 – 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に接続しました．

うまく行きました :)

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

tigervnc.bphinz.com/nightly/

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

$ 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というそれらしいものがあるようです．そのうち試してみよう．