RaspberryPiで起動したGUIアプリをMac上に表示する方法をわかりやすく紹介!!

雑な日記
スポンサーリンク

SSH接続先のRaspberryPi(リモートサーバも可能)で実行したGUIをローカルPCに表示させたい!

SSH接続先のでMatplotlibにより表示される図をローカルPCに表示させたい!

これらの方法をMac用 X Window Systemである XQuartzを用いて、わかりやすく紹介します!

ローカルPC(Mac)からRaspberry Piをリモート操作させたい方はご参考ください!!

筆者環境
  • ローカルPC:Macbook Air (M1 2020)
  • SSH接続先(リモートサーバ側):RaspberryPi 4 Model B
  • GUI 構築ライブラリ:tkinter
  • 図示ライブラリ:matplotlib

スポンサーリンク

今回生じたエラー

RaspberryPi内に作成した tkinterライブラリを用いてGUIアプリを起動するプログラムを ローカルPCからSSH接続で実行すると、下記のエラーが出てしまします。

_tkinter.TclError: no display name and no $DISPLAY environment variable

DISPLAY環境設定でRaspberryPIのIPアドレスを設定しましたが、上手くいきませんでした。

XQuartz のインストール(Mac側)

SSH接続先で起動したGUIアプリ(以下matplotlibの図示も含む)をローカルPCで表示するためには、X Window System(X11とも呼ばれる)を立ち上げることで解決します。

Mac用のX Window System がXQuartz です。Apple公式サイトでも説明されています。

本記事ではMacターミナルからのインストール方法を説明します。

はじめにHomebrewのインストールが必要です。Homebrewのインストールがまだの方はこちらの記事にそって、インストールお願いします。

【M1 Mac Apple silicon】Mac環境にPython3をインストールする方法
今回はPythonの「3系」のインストール方法を紹介します。Pythonには「2系」と「3系」と呼ばれるバージョンがあります。Macには「2系」が入っていますが、現在のPythonの主流は「3系」になっております。PythonをMacにイ

Homebrewインストール後は下記の通りにXQuartzをインストールします。

brew cask install 〜 は現在現在無効の為、brew install –cask 〜を使ってください。

brew install --cask xquartz

一度、Macをログアウトし、ログインする。下記の実行でDISPLAY環境変数が設定されていれば成功です。

echo $DISPLAY
/private/tmp/com.apple.launchd.SqGOYkY1R8/org.xquartz:0

SSH接続先(sshd)の設定 RaspberryPi側

RaspberryPi に SSH接続し、configファイル設定変更します。

sudo vim /etc/ssh/sshd_config

コメントアウトになっているので、#は消します。

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost no

sshdを再起動

sudo systemctl restart sshd

設定変更は以上になります。

MacからRaspberryPiにssh接続

MacからSSH接続する際に、以下のように -XY を追記する必要があります。その後は、RaspberryPi内のプログラムを普段通り実行するのみです。

ssh -XY raspi

筆者がRaspberryPi内に作成していた手書き数字を認識するプログラムをMacで実行してみます。

無事Mac上でGUIアプリが開き、書いた数字を認識して結果を表示してくれました。

matplotlibを用いた図示表示もXQuartzで無事表示できました。

コメント

タイトルとURLをコピーしました