MJHD

エモさ駆動開発

XMonadでiPhoneをディスプレイとして使う

f:id:wait0000:20150901143109j:plain

こんな感じで余ってるiPhoneVNCで接続し、3つめのディスプレイにした。
その際の設定のメモ。
(もちろん、PCでもiPhoneでもiPodでもAndroidでも何でも繋げる。)

環境

PC

ArchLinux
X.Org Server 1.17.2
XMonad 0.11.1
XRandR 1.4.3
iPhone4S (640x960)
ディスプレイ1(1920x1080)
ディスプレイ2(1366x768)

準備

iPhone側にRealVNC Viewerアプリをインストールする。無料。

あらかじめRandR#マルチディスプレイ - ArchWikiを参照し、/etc/X11/xorg.conf.d/10-multihead.confファイルを設定しておく。

ちなみに、今回の環境ではこんな感じ。

Section "Monitor"
    Identifier "HDMI3"
    Option     "PreferredMode" "1920x1080"
    Option     "Position"      "0 0"
EndSection

Section "Monitor"
    Identifier "VGA1"
    Option     "PreferredMode" "1360x768"
    Option     "Position"      "1920 0"
EndSection

HDMI接続とVGA接続のディスプレイが設定されている。

この段階で一度再起動しよう。(もしくはDMの再起動)

次に、以下のコマンドを実行し、VNC接続時のパスワードを設定する。(保存先は~/.vnc/passwdとする)

x11vnc -storepasswd`

XRandRとx11vncの設定

~/.xprofileまたは~/.xinitrc(どちらか使用している方)に以下の行を追加する。
おそらく、xmonadを起動する行の前が良い。

xrandr --newmode "640x960_60.00" 50.57 640 680 744 848 960 961 964 994 -hsync +vsync
xrandr --addmode VIRTUAL1 640x960_60.00
xrandr --output VIRTUAL1 --mode 640x960_60.00 --right-of VGA1

x11vnc --clip 640x960+3286+0 -rfbauth ~/.vnc/passwd -ncache 10 -nocursorhape &

xrandr --newmode ~~~の値は、* Modeline Calculatorなどで計算できる。
xrandr --addmode ~~~で、解像度を一覧に追加し、xrandr --output ~~ --mode ~~ --right-of ~~~で、iPhoneの解像度と位置を設定している。

x11vncの行では、--clipオプションによってiPhoneの解像度とiPhoneの位置(今回は一番右端に配置するため、1920+1366=3286)を指定している。

ここで一度ログインし直す。

接続

iPhoneのアプリ側でPCのIPアドレスを入力する。(プライベートIPでよければip addrコマンドによって調べられる。)
設定したパスワードを入力すれば接続完了。

ちなみに

今回は.xprofileなどで設定したが、もちろん10-multihead.confにVIRTUAL1の設定を書くのでも良いと思う。
今回はiPhoneの位置を変更しやすいよう、.xprofileに書いた。

参考

LinuxでiPadをセカンドモニターにする - 技術日記@kiwanami