2024-11-18

Termux で任意のシェルをワンタッチで自動実行するショートカットの作り方

 

【2024-11-19 一部訂正】記事末に記載の MacroDroid の事例を訂正

 

 

例えば SwitchBot スマートプラグの電源を、curl で叩いてオン・オフするシェルを作ったとします。

 

これをショートカットにしてワンタッチで実行できるようにする、というのが主旨です。

 

 

これを可能にするため、コマンド(群)をシェルにして特定のディレクトリに置いておき、このシェルを Termux のショートカットでワンタッチ実行するのです(MacroDroid で設定すれば自動実行化も可能)。

 

使うアプリは次のものです。

 

   ・Termux / Termux:Widget

   ・Shortcut Maker

   ・Shell Script Editor(または Text Editor)

 

 

特定のディレクトリとは、Termux のホームディレクトリの ~/.shortcuts ディレクトリです。

 

ここにシェルを入れておくとショートカット化した Termux を起動すると自動実行されます。

 

実行時にターミナル画面を表示しない場合はシェルを ~/.shortcuts/tasks サブディレクトリに置きます。

 

 

ショートカット化には Termux:Widget を使います。

 

 

 

Shortcut Maker は Android の「ファイル」を操作できるようにするために使います。

 

「ファイル」のアクティビティをショートカット化することで、~/.shortcuts ディレクトリにアクセスすることができますので、作成したシェルを、例えば内部ストレージの Downloads ディレクトリに保存し、これを ~/.shortcuts ディレクトリにコピーまたは移動できるようになります。

 

「ファイル」アプリは Files by Google のことではありません。

 

Android 機はデフォルトでファイル マネージャーがインストールされていません。

ただし、設定アプリに隠されていますが利用可能なファイル マネージャー「ファイル(Files)」があります。

これのショートカットを 1 回クリックするだけでそのファイル マネージャーを開くことができます。

 

 

 

 

「ファイル(Files)」は Android に基本機能として備わっているものの、ホーム画面上には置くことができず、通常は起動することができません。

 

 

アクティビティをショートカット化して初めて操作できるようになり、Android 機の内部ストレージ以外に、Termux のホームディレクトリも操作できるようになります。

 

 

したがってシェルを内部ストレージから Termux のディレクトリにコピーまたは移動ができるようになるのです。

 

図で表すと下図のような関係です(Files が「ファイル」)。

 


 

 

 

さて、UMUDIGI S5 Pro へは Google Play Store から最新版 Termux をインストールできません(インストール対象外機種になっています)。

 

また対象機種であっても Termux は Google Play Store からインストールできますが、Termux:Widget はインストールできません。

 

 

なので、どちらも F-Droid からインストールしますが、その前に F-Droid 自体をインストールします。

 

スマホのブラウザで F-Droid にアクセスしダウンロードします。

 


 

 

ダウンロードした F-Droid.apk をインストールします。

 

インストールしたら F−Droid アプリを開きます。

 



赤く囲んだ検索レンズマークをタッチします。

検索窓に「termux」と入力します。

 


 

「Termux Terminal emulator with packages」をタッチしてインストールします。

 

引き続き「Termux:Widget Launch Termux commands from the homescreen」をインストールします。

 

 

インストールした Termux を起動し、コマンドラインから "pkg upgrade" を実行し、"pkg install curl" で「curl」をインストールします。

 

pkg コマンドは、必要に応じていろいろなパッケージをインストールするときに使います。

 

 


 

 

さて、ここで curl を叩いて SwitchBot の電源オフ・オンをしてみましょう。

 

デバイスIDトークンはモザイクをかけています


 

最初に "turnOff" で SwitchBot のランプが消えて電源オフが確認できます。

 

次に "turnOn" で SwitchBot のランプが点いて電源オンが確認できます。

 

 

ここまでで Termux での curl の動作が確認できました。

 

 

 

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

シェルをワンタッチで自動実行するショートカットを作成していきます

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

必要なものは Termux:Widget のほかに次のものです。

 

Google Play Store からダウンロード・インストールします。

 

   ・Shell Script Editor(または Text Editor)

 



 

   ・Shortcut Maker


 

 

 

 

1.Shell Script Editor で次のような Script を作成します

 

 


 

 

 

SW_Off.sh は SwitchBot を電源オフにするスクリプトです。

 

SW_On.sh は SwitchBot を電源オンにするスクリプトです。

 

作成したら適当なディレクトリに保存します。

 

ここでは内部ストレージの Downloads ディレクトリに保存します。

 

 

 

 

2.「ファイル」のショートカットを作成します

 

Shortcut Maker アプリを起動します。

次の画面になりますので、アクティビティをタッチします。




 

スクロールダウンしていくと後ろの方に「ファイル(Files)」があります。

 


 

右側にある ∨ をタッチすると「ファイル」のアクティビティが5つ表示されます。

 


 

2番目の「com.android.documentsui.files.FilesActivity」をタッチすると次の画面になります。

 


 

 

[ショートカットを作成]をタッチすると画面が次のようになります。



 

 

[ファイル ショートカット]部分を長押ししてホーム画面にドラッグします。

 


 

「ファイル」のショートカットが作成できました。

 

「ファイル(ショートカット)」を開きます。

 


 

Downloads の中身は次のようになっています。

 


 

SW_On.sh がオンにするシェルです。

SW_Off.sh がオフにするシェルです。

 

これらを「コピー」して Termux の ~/.shortcuts/tasks にペーストするため、左上の をタッチして Termux をタッチします。

 

 

 

次のようになります。

 


 

.shortcuts をタッチします。

 


 

tasks をタッチし、2つのファイル(シェルスクリプト)をペーストします。

 


 

Termux:Widget を右クリックして「ウィジェット」をタッチするとつぎの画面になります。

 


 

赤く囲んだ部分をタッチします。

 


 

tasks をタッチします。



 

SW_Off.sh をタッチします。




赤く囲んだ部分を長押ししてホーム画面にドラッグします。

 

 

事前に緑で囲んだアイコンのようにすでにショートカットを作成しています。

 

ショートカット「SW_Off.sh」をタッチすると SwitchBot の電源が切れます。

 

ショートカット「SW_On.sh」をタッチすると SwitchBot の電源が入ります。

 

 

 

 

このショートカットを MacroDroid の UI 画面操作でクリックして SwitchBot の電源をオフにすることができます。

 


トリガー:充電が => 90% になったら以下のアクションを発動

 

アクション:

   ① 画面をオフにする

       ② でロック画面を確実に表示させるためにいったん画面オフ

   ② 画面をオンにする

       ロック画面を表示

   ③「[1回の繰り返し] を開始」部分は次のアクションです

       ・下から上へスワイプして PIN 入力画面にする

       ・4桁の PIN コードを入力する

   ④ ③ でロックが解けたらホーム画面を表示

   ⑤ UI 画面操作で「『SW_Off』を含む部分(ショートカットアイコンのアイコン名の箇所)
       をクリックする」というアクション

       このアクションで SwitchBot の電源がオフになります

   ⑥「充電が完了しました!」という通知をします 

 

 

このマクロによって 90% まで充電したら SwitchBot プラグの電源をオフにして充電を自動停止するということが実行できます。

 

 

少々マニアックなやり方ですが、Termux - Widget によって SwitchBot の電源オフを行う一つのやり方です。

 

 

 

この事例によらず、シェルをワンクリックで実行するというのはアイデア次第でいろいろできそうです。

 

 

 

 

 

 

 

 

 

0 件のコメント: