調べたこと、作ったことをメモしています。
こちらに移行中: https://blog.shimazu.me/

電源入れたら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のプログラムを起動するための手順をまとめた記事がなかったので今回まとめてみました。デスクトップ環境のシステム、あまり良くわからない・・・。 こうすると良いよ!みたいなコツとかあったらぜひ教えてください。