電源入れたらRaspberryPiのターミナルがGUIで全画面表示されるようにする
概要
デモ展示では電源を刺したら自動でプログラムが起動するようにするのが失敗しないコツだと思います。ただ、そのへんの設定をパパっとできるようにまとまってる記事とかあまり見つけられなかったので、備忘録がてら、今回行った設定を書いておきます。
今回はコンソールで日本語の表示をいい感じにしたいと思っていろいろ試しました。
その結果、GUIありでインストールして、lxterminalを全画面で自動起動した上でプログラムを走らせることにしました。もともとGUIは必要ないと思ってRasbian Streach Liteをインストールしていたので、GUIを入れるところからやりました。
GUIのセットアップ
これでGUIに必要な一式がはいります。
$ sudo apt install -y rpi-chromium-mods python-sense-emu python3-sense-emu python-sense-emu-doc realvnc-vnc-viewer xserver-xorg xinit raspberrypi-ui-mods lightdm
インストール後、raspi-config
を使ってGUIで起動するように設定すると再起動を促され、言われるがままにするとGUIが出ます。
$ sudo raspi-config
自動起動するプログラムの設定
まず適当に起動用シェルスクリプトを作ります。なんかautostartとかいうのはダブルクオートとかを勝手に展開しちゃうっぽくてシェルに渡るコマンドではうまくクオートされないという問題に悩みました。
ここではしょうがないのでターミナル起動用とターミナル内で実行するスクリプトの2つスクリプトを作ります。
/home/pi/autostart.sh
#!/bin/bash
lxterminal -t "Title for the demo" -e /home/pi/autostart_terminal.sh
/home/pi/autostart_terminal.sh
#!/bin/bash
while :
do
echo "Hello world!"
# 実行したいコマンド
done
次に、起動時に自動で実行するように設定します。
$ vi ~/.config/lxsession/LXDE-pi/autostart
なかみはこんな感じ。はじめの2つは消しちゃってもいいですが、そのままにしておけばデスクトップが普通に起動するので、いざというときにマウス挿してパパっと復帰できると思います。
@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
# @xscreensaver -no-splash
# @point-rpi
@xset s off
@xset -dpms
@bash /home/pi/autostart.sh
lxterminalを全画面で起動する
$ vi ~/.config/openbox/lxde-pi-rc.xml
下の方にある<applications>
を探して、その中にこんなものを置きます。
<application class="Lxterminal" name="lxterminal">
<fullscreen>yes</fullscreen>
<!--<maximized>yes</maximized>-->
</application>
fullscreenをyesにするとターミナルの真っ黒画面が全画面で出るのであたかも普通のCUIのコンソールのように見えます。
maximizedをyesにするとターミナルのタイトルが普通に見えるので、その場合にはlxpanelやらpcmanfmやらはコメントアウトしたほうがよさそうです。
ここまでで自動起動の準備はOKです。
日本語を出せるようにする
まずフォントを入れます。
たとえばこのへんとかからNoto Sans CJK JPとか落としてきて入れるとよさそうです。
$ mkdir ~/.fonts
$ cd ~/.fonts
$ wget https://noto-website-2.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip
$ unzip NotoSansCJKjp-hinted.zip
つぎに、lxterminalで使うフォントやらなんやら変えましょう。デモの場合は文字が大きい方が見栄えがよいので、文字も大きくします。また、スクロールバーやメニューバーも消すと良いでしょう。
以下のように設定を変更しました。(これら以外はそのまま)
~/.config/lxterminal/lxterminal.conf
fontname=Noto Sans Mono CJK JP 16
hidescrollbar=true
hidemenubar=true
hideclosebutton=true
hidepointer=true
さいごに、ロケールを変えます。raspi-config
でLocalization OptionsからChange Localeを選んで、ja_JP.UTF8とかを選択すると良いと思います。
$ sudo raspi-config
ここまででターミナルに日本語が出るようになっていると思います。
カーソルを消す
unclutterを入れておくと、操作がないときにカーソルが消えます。デモするときに邪魔なカーソルが必要なくなるのでとても便利です。
sudo apt install unclutter
また、unclutterを自動起動するために以下を~/.config/lxsession/LXDE-pi/autostart
に追記します。
@unclutter
最後に再起動したら完成です。
さいごに
意外と自動でGUIのプログラムを起動するための手順をまとめた記事がなかったので今回まとめてみました。デスクトップ環境のシステム、あまり良くわからない・・・。
こうすると良いよ!みたいなコツとかあったらぜひ教えてください。