Raspberry PIとGoogle Homeを買って色々連携させようと模索中なのだけど、I/Fが音声だけというのは味気ない。
Raspberry PI自体はリビングのテレビにHDMIで接続しているので、こいつを活用できないかと言うのが最初の動機。
QtやSDLで今更に頑張ってもいいのだけど、手慣れたWeb関連の技術的が使えた方が楽だからなんか出来ないかと探してみたら以下の方法できたのでメモ。
基本方針
- X起動用に小さなWindowManagerをバックエンド起動
- 上記のDISPLAYにchromiumをキオスクモードで起動
最初、FrameBufferとかでChromiumとかを動かせないかとも考えたんだけど、今回はマシンパワー自体が足かせになるわけじゃないので、シンプルにX経由で起動。
かといってGnomeとか入れるのも嫌なので軽量WMのmatchbox-window-managerを入れる形に。
インストール
まずは必要なライブラリーの準備をします。
sudo apt-get install -y xinit matchbox-window-manager chromium-browser
Xの起動
続いてXの起動。まずは単純に以下を実行。
$ xinit matchbox-window-manager
/usr/lib/xorg/Xorg.wrap: Only console users are allowed to run the X server
xinit: giving up
xinit: unable to connect to X server: Connection refused
xinit: server error
たぶん、こんな感じで死にます。 Xwrapper.configで起動ユーザーを絞ってるのが原因なので、以下のように変更します。
$ diff Xwrapper.config /etc/X11/Xwrapper.config
15c15
< allowed_users=anybody
---
> allowed_users=console
$ cp Xwrapper.config /etc/X11/Xwrapper.config
で再びWMを起動します。
xinit matchbox-window-manager &
今度は上手く起動したはずです。
Chromiumの起動
続いてChromiumを起動します。
$ DISPLAY=:0 chromium-browser
上記で問題なく起動したと思います。DISPLAYを指定してるのでSSH経由の実行でも問題なく動作します。
キオスクモードにしてかつ適当なURLを指定して見ましょう。
$ DISPLAY=:0 chromium-browser -kiosk "http://www.youtube.com"
無事、フルスクリーンで起動したとおもいます。あとはURLのところを自分のnodejsとかにして、WebSocketで通信して操作すればGoogle Homeの音声コマンド等と連携してして色々出来そうです。
それではHappy Hacking!