Pixel desktopからRetroPieを起動する [Raspberry Pi]
『そうだ,ラズパイでポータブルしよう!』のSW編の一部ですが,少々長いのと,あまり見ないネタなので,別エントリーにしてみました。
『そうだ,ラズパイでポータブルしよう!』は…
- そうだ,ラズパイでポータブルしよう!(タッチスクリーンの動作)
- 番外: リボンHDMIケーブルにやられてみる…
- そうだ,ラズパイでポータブルしよう!(実装編)
- そうだ,ラズパイでポータブルしよう!(ソフトウエア編)
- 番外: Pixel desktopからRetroPieを起動する ←このページ
- そうだ,ラズパイでポータブルしよう!(まとめ?)
な,感じでやってます。(ました。)
Pixel desktopからRetroPieを起動する
Google先生に伺っても,良い感じのネタが少なく,少々難儀しました。
まぁ,ラズパイでレトロゲームならLakkaやRecalBoxとかあるし,こんな面倒,やる人はそうは居ないと思いますが,何かの参考にして頂ければ幸いです。
動作の概要:
- 画面をPixel Desktop(tty7)からtty1に切り替え,ttyechoを使ってtty1上でEmulationStationを起動する。
* この際,元のX(tty7)は終了していません。 - EmulationStationが終了したら,Pixel Desktop(tty7)へ戻す。
条件:
- ラズパイの設定は,初期状態で行った方が,面倒に遭遇せずにすむと思います。
- 高速起動チューニングなどでttyを無効にしている場合,注意。
- ラズパイのBTはUART。 などなど
- RetroPieは,普通にセットアップする。
- LXTerminalで
git clone
してsudo ./retropie_setup.sh
しました。
# OS ImageじゃないRetroPieは初めて触りました。
- LXTerminalで
問題:
- Pixel Desktop(X)が起動したままなので,エミュのパフォーマンスが落ちる(かも)
- 入力系に問題が出るかも。(未確認)
手法:
- 基本,ご参考をトレースしてます。
ご参考:
* 以下,EmulationStationをESと記述してます。
1: RPiがコンソールとして使用している"tty1"を"tty2"へ変更する。
/boot/cmdline.txtのtty1
をtty2
へ修正。
~ console=tty2 ~
2: ttyechoを取得して設置
ttyecho
は,他のコンソールへテキストを送信するソフト(らしい)
# 以下,1行で実行
curl -O "http://aoakley.com/articles/artifacts/retropie-pixel/ttyecho" && sudo mv ttyecho /usr/local/sbin && sudo chmod 755 /usr/local/sbin/ttyecho && sudo chown root.root /usr/local/sbin/ttyecho
3: RetroPie.desktopを取得して設置
Desktop Entry
って,Xからソフトを起動させるファイル?
# 以下,1行で実行
curl -O "http://aoakley.com/articles/artifacts/retropie-pixel/retropie.desktop" && sudo mv retropie.desktop /usr/share/applications && sudo chmod 644 /usr/share/applications/retropie.desktop && sudo chown root.root /usr/share/applications/retropie.desktop
ちなみにダウンロードした retropie.desktop
の中身は…
[Desktop Entry]
Type=Application
Name=RetroPie
Comment=Retro video game emulators
Exec=sudo su -c "systemctl stop lightdm ; ttyecho -n /dev/tty1 \"emulationstation ; sudo systemctl start lightdm\""
Icon=face-smile-big
Terminal=false
Categories=Application;Game;
な感じ…
4: RetroPie.desktopから呼び出すスクリプトを用意
例えば…
nano /home/pi/RetroPie/startES.sh
中身は…
#!/bin/sh
sudo chvt 1
sudo su -c "ttyecho -n /dev/tty1 \"emulationstation ; chvt 7;\""
このスクリプトで,tty1へ切り替え →ttyechoでES起動 →ES終了したら,Pixel desktop(tty7)に戻るようにしています。
"ご参考"では,最後 startx
ですが,これだとES終了後,tty1でXが起動してしまい,元々のデスクトップ(tty7)と2重起動状態になってしまいます。
スクリプトに実行権限をつけます。
chmod +x /home/pi/RetroPie/startES.sh
5: retropie.desktopを修正
* 事前に Retropie.icoを用意して,/home/pi/RetroPie/
以下へ設置しておく事。
今回は,Retropie Icon | Papirus Apps Iconset | Papirus Development Teamから "ICO" ファイルをダウンロードしました。
retropie.desktopを開き
nano /home/pi/.local/share/applications/retropie.desktop
中身(Exec, Icon行)を修正
[Desktop Entry]
Type=Application
Name=RetroPie
Comment=Retro video game emulators
Exec=/home/pi/RetroPie/startES.sh
Icon=/home/pi/RetroPie/Retropie.ico
Terminal=true
Categories=Application;Game;
注意:
- ユーザー"pi"のデスクトップエントリーを修正していますので,他のユーザーと共用する場合は,RetroPieのフォルダを含め,色々調整が必要…
最後にReboot。。。
これで,Pixel DesktopからESを起動,ES終了でPixelに戻る事が出来ます。
しかも,Pixel Desktopを終了しないので,作業途中の物を開きっぱなしでもOK!
# でも,開きっぱなしは不安なので,一応,セーブしてからESを起動しましょう(笑
記事のおかげで、うまく出来ました。(今更かも?ですが)
ありがとうございました。
RasberryPI OS 32bitでうまくいったので、64bitでもやってみた所、
「2: ttyechoを取得して設置」がダメでした。
一応、「ttyecho source」でgoogle先生にお伺いし、
以下からソースを頂き、64bit環境でmake ttyechoしたもので動きました。
https://gist.github.com/FUT/5812683
original は https://www.humbug.in/2010/utility-to-send-commands-or-data-to-other-terminals-ttypts/ みたいですが、先に見つけたのを使用
追加情報まで
by 松永武 (2023-01-08 11:11)