今回はラズパイでpythonのGUIプログラムを書いて、起動時に実行しようとしたときに詰まったのでその時に行った解決策をまとめておこうかと思います。
#始めに
まず始めに、最新のRaspbianだと今回の方法は使えないかもしれません。風の噂でできなくなったと聞きました...orz
環境
- RaspberryPi 3B+
- Raspbian 10.3
- Python 3.6
- GUIはTkinter
- clock.py (GUIプログラム)
失敗策
起動時にプログラムを実行させるならrc.localやらsystemctlやらcronやら使え、とありますがどれもGUIのプログラムではエラーが出ました。logを見ると、DISPLAYが見つからん、というような感じだったはず...。
補足ですが、rc.localは少し前から非推奨になっています。起動時に何かしたいときはsystemctlにサービスを登録しましょう。
解決策
autostartを使いました。調べると様々な場所にautostartが見つかるのですが、今回動作を確認したのは、
/etc/xdg/lxsession/LXDE-pi/autostart
に存在するautostartをいじったときのみでした。
autostartの最後の行に、
@lxterminal -e sh /home/pi/python_clock/run.sh
と追記。
/home/pi/python_clock/run.shに
#!/bin/bash
cd /home/pi/python_clock
python3 clock.py
と書いて再起動で無事pythonで書かれたGUIプログラムが動きました。
まとめ
今回は無事動きましたが、autostartは廃止された方法なので今後は通用しないかもしれません。他に素晴らしい方法を知っている方がいらっしゃいましたら是非コメントにお願いします。