iPhone から MacOS 上の Wine を操作する

「iPhone から Wine を動かして Windows ゲームやろうぜ」的な話。

「X11 って X Window System なんだよなぁ」なんて思い、VNC で直接 Wine にアクセス出来るのではないかと思ったわけで。

とりあえず MacPorts から VNC を入れてみたけど Xvnc がインストールされないようなので VNC クライアントから X を起動するのは難しそう。

X11 を起動してから x0vncserver を使って display :0 を待機させてみたけど画面真っ暗。ディスプレイはそこにあるんだけど何も表示されない。う〜ん…。でも Xephyr を使って新しいディスプレイを作成すればうまく出来そう。

というわけで簡単にシェルスクリプトを書いてみる。

bash
#!/bin/sh

Xephyr :1 -screen 1024x768 -host-cursor &
export PID=$!
if [ $? = 0 ] ; then
     sleep 5s
     DISPLAY=:1
     openbox --config-file $HOME/.config/openbox/menu.xml &
     xterm -geometry 80x20+0+0 -e sh -c "x0vncserver -PasswordFile=$HOME/.vnc/passwd & wine explorer" &
     xterm -geometry 80x20+0+280 && kill ${PID}
fi

流れはこんな感じ。

  1. Xephyr で 1024x768px のディスプレイを作成。
  2. プロセス番号を変数に登録しておく。
  3. ディスプレイが起動するまで5秒待つ。←適当
  4. ウィンドウマネージャーに OpenBox を使う。
  5. xterm を呼び出して起動時に VNC サーバーと Wine を実行するスクリプトを走らせる。
  6. 予備の xterm を起動しておく。
  7. 予備の xterm が終了すると Xephyr を終了する。

わざわざ xterm を起動してスクリプトを実行しなくても VNC と Wine は起動出来るけど操作出来たほうがいいかなと思って display :1 で起動させてる。最初のサブプロセスの起動を確認してから次の処理をするように出来れば sleep は使わなくていいんだけどどうやって書けばいいかわからない(失敗したら○秒待ってやり直せと書けばいいのか?)。

 

Mac 上では Xephyr ウィンドウ内で操作が出来る。


 

iPhone からは『PocketCloud』を使えば Control や Shift、カーソルキーも使える。

 

Xephyr では OpenGL が上手く動かないみたいなのでゲームは起動出来るものと出来ないものがある。当然、レイテンシも発生するのでアクションゲームは厳しいがシュミレーションゲームならそこそこ出来る。

うはwwwこれでwwwiPhone で Windows ゲームできるwwwww

と草生やして喜びたいところだが致命的な欠点がある…

音を発するのは Mac だ(パパラパッパパー

ま、X の勉強ということで。X の使い方をまだよく理解してないので勉強してもう少しマシな方法を考える予定。というか Xephyr とか x0vncserver 使わずに普通に Wine 起動して Mac の画面共有使ったほうがよっぽどマシなんだけどね。

そもそも母艦を Windows にすれば(ry

 

うまく行くと思ったけど iPhone から SSH でスクリプトを実行すると「Xephyr がディスプレイを開けません」になってしまう(´・ω・`)

Xephyr だと iPhone のディスプレイで表示しようとしてしまうのか…。


他の部分をちょっとメモ。

色がおかしい

解像度と一緒に色数を指定する。

bash
Xephyr :1 -screen 1024x768x24

フォントサイズがおかしい

起動時に DPI を指定。

bash
Xephyr :1 -screen 1024x768x24 -dpi 96
Mac Fan (マックファン) 2012年 10月号 [雑誌]

Mac Fan (マックファン) 2012年 10月号 [雑誌]

  • 作者:
  • 出版社/メーカー: マイナビ
  • 発売日: 2012/08/29
  • メディア: 雑誌