環境
- Arch Linux(2014/01/18時点で最新)
- Awesome WM v3.5.2
- tigervnc 1.2.0-4
- x2vnc 1.7.2
- hostname: e732za12b
- username: pocke
VNCを使ってAndroid端末をサブディスプレイにする - テクニカルプア
TigerVNC - ArchWiki
ひとつ目の記事を見てたら出来ましたが、数カ所異なってたとこがありました。
やりたいことは、Android端末をLinuxでサブディスプレイにしたいなー、って感じです。
WindowsとかMacとかだと専用のアプリがあるみたいですが、Linuxだとなさそうです。
そのため、LinuxでVNCサーバーを立ち上げ、それをAndroid端末で表示してる感じです。
だからvnc用にWMがもうひとつ立ち上がっちゃうのですよねー…ぐぬぬ
vnc server のインストール
上記のブログではtightvncを使っていますが、tigervncがpacmanに入ってtightvncはyaourtにあるようなので、tigervncをインストールします。
$ sudo pacman -S tigervnc
Linux側から端末に映しているものを操作できるよう、x2vncをインストールします。
AURにあるのでyaourtを使います。
$ yaourt -S x2vnc
vnc server の設定
一旦vnc serverを起動します。
$ vncserver :1 You will require a password to access your desktops. Password: Verify: New 'e732za12b:1 (pocke)' desktop is e732za12b:1 Creating default startup script /home/pocke/.vnc/xstartup Starting applications specified in /home/pocke/.vnc/xstartup Log file is /home/pocke/.vnc/e732za12b:1.log
パスワードの入力を求められるので、てきとーなものを入力してください。
タブレットなどから接続する時に必要なパスワードになります。
vnc serverの設定をするので、一旦vnc server を殺します。
$ vncserver -kill :1
~/.vnc/xstartupを編集します。.xinitrcみたいなものです。
### file: ~/.vnc/xstartup #!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS OS=`uname -s` if [ $OS = 'Linux' ]; then case "$WINDOWMANAGER" in *gnome*) if [ -e /etc/SuSE-release ]; then PATH=$PATH:/opt/gnome/bin export PATH fi ;; esac fi if [ -x /etc/X11/xinit/xinitrc ]; then exec /etc/X11/xinit/xinitrc fi if [ -f /etc/X11/xinit/xinitrc ]; then exec sh /etc/X11/xinit/xinitrc fi [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & twm &
デフォルトだとこんな感じでした。
私の環境だと、/etc/X11/xinit/xinitrc が呼び出されてtwmが起動されていました。
これは本意ではなく~/.xinitrcを使いたいので、if [ -x /etc/X11/xinit/xinitrc ]; then行より前にしたのようなものを追加します。
if [ -f ~/.xinitrc ]; then exec sh ~/.xinitrc fi
これで普段使っている.xinitrcがvnc serverでも使われます。
vnc server の起動
$ vncserver :1 -depth 16 -geometry 1024x768 -alwaysshared
みたいな。
- depthが色数、-geometry が画面サイズみたいです。好みで調整すればいいんじゃないですかね。
- alwayssharedはAndroidのクライアントとx2vncの両方でログインするのに必要みたいです。
$ x2vnc -shared -east localhost:1 x2vnc: VNC server supports protocol version 3.8 (viewer 3.3) Password: x2vnc: VNC authentication succeeded x2vnc: Desktop name "e732za12b:1 (pocke)" x2vnc: Connected to VNC server, using protocol version 3.3 x2vnc: VNC server default format: screen[0] pos=3289 screen[1] pos=1924 Xinerama detected, x2vnc will use screen 1. x2vnc: pointer multiplier: 1.860983
x2vncを起動します。
- eastオプションの他にも-north -south -east -westオプションがあります。上下左右どこにディスプレイを拡張するか、って感じですね。
パスワードを要求されるので、さっき設定したものを入力します。
デーモンにはなってくれないみたいなので、このままターミナルは開いておきましょう。
こんな感じで後はAndroidのvncクライアントから接続すればよい感じです。
vncクライアントは良さそうなものが見つかったら追記しようと思います。
xrandrでマルチディスプレイ環境にしているけどいい感じに動きました。神。
ただ、vncserverを:2でも立ち上げてもっとディスプレイを増やそうとしたら、x2vncの方がうまく動かない感じでした。残念。
ちなみにこんな感じです