z2term

使いこなしガイド / 2. マクロ

2. マクロ(Android を操る)

ここからが Z2Term の独自部分です。シェルから Android 本体を操作する z2-* コマンドと、それをまとめた「マクロ」を説明します。

1. ターミナル 2. マクロ 3. 自動化 4. エッジ・タイル

マクロとは、ここでは何のことか

Z2Term でいうマクロは、~/.z2term/macros/ に置いたふつうのシェルスクリプトです。 特別な書き方はありません。効いてくるのは置き場所で、ここに置くと次の 3 つが使えるようになります。

  1. 名前だけで呼べる(この場所は PATH に入っています)。remind.sh 30m 薬 のように。
  2. きっかけで自動実行できる(z2-when → 3 章)。
  3. エッジパネルやタイルに割り当てられる(→ 4 章)。

まずは同梱のサンプルを入れてみるのが早道です。

z2-macro list            # どんなサンプルがあるか見る
z2-macro install all     # 全部 ~/.z2term/macros/ に置く
z2-macro show remind     # 中身を読む(そのまま書き換えて構いません)
導入すると、そのスクリプトの動かし方(常駐に登録する / z2-when で回す / タイルに割り当てる)も一緒に表示されます。既にあるファイルは上書きしません。

Android を操作する z2-* コマンド

権限の設定は要りません(一部、OS 側の許可が要るものだけ後述)。よく使うものを挙げます。

コマンドできること
z2-notify通知を出す。-h でバナー、-b ラベル で返事のボタン
z2-ask通知の返信欄で質問して、答えを受け取る(下記)
z2-toast / z2-say画面下の短いメッセージ / 読み上げ
z2-clipクリップボードの読み書き
z2-state今の端末の状態(画面・ロック・充電・電池・Wi-Fi・SSID・マナーモード・音量…)
z2-battery / z2-sensor電池 / 照度・加速度・近接
z2-torch / z2-vibrate / z2-volume / z2-mediaライト / バイブ / 音量 / 再生キー
z2-open / z2-share / z2-intentURL やファイルを開く / 共有シートへ / 任意の Intent
z2-notiいま出ている通知を読む(要「通知アクセス」)
z2-screen keepon時間を決めて画面を消させない(アプリを畳んでも効きます)
z2-alarm時刻の予約(Doze 中でも起きます)
z2-sessionこのアプリのタブを操る(新規タブ・文字を入れる・画面を取り出す)
z2-tile / z2-iconクイック設定タイルへの割り当て / アイコンの差し替え(→ 4 章)
z2-when自動化ハブ(→ 3 章)
z2adb / z2doctorPC 不要の adb / 環境の健康診断
どのコマンドも--help を付けると詳しい説明が出ます(例: z2-tile --help)。全体の一覧は z2help です。

スクリプトから質問する(z2-ask)

z2-ask は通知の返信欄で質問し、打ち込まれた答えを標準出力に返します。 アプリを開かずに通知を下ろして答えるだけで、待っていたスクリプトが続きを始めます。

通知シェードに出た質問と、その返信欄
通知シェードのまま答えられます
# 答えなければ非ゼロで終わるので「やめる」がそのまま書ける
name=$(z2-ask "ブランチ名は?") || exit 1
git switch -c "$name"

選択肢から選ばせたいときは z2-notify -b です。押されたボタンは ~/.z2term/events.jsonl に 1 行増えるので、それを見て続きを分岐させます。

z2-notify -h -n cleanup -b はい -b あとで "掃除しますか?" "一時ファイルを消します"

自分のマクロを書く

ふつうの POSIX シェルスクリプトです。1 行目にシェバン、2 行目に「何をするものか」を コメントで書いておくと、タイルの一覧にその説明が出ます。

#!/bin/sh
# ~/.z2term/macros/lowbat.sh ─ 電池が減ったら知らせる
level=$(z2-state level)
[ "$level" -lt 20 ] || exit 0
z2-notify -h "電池 ${level}%" "そろそろ充電してください"
z2-say "電池が少なくなりました"

置いたら実行できるようにします。

chmod +x ~/.z2term/macros/lowbat.sh
lowbat.sh                 # 名前だけで呼べます

知っておくと詰まらないこと

at / atd / systemd は使えません。 この環境には PID 1 が無く、atd も入っていません。 「指定の時刻に 1 回」を at で書くと何も起きず、エラーも出ません。 cron は動きますが省電力(Doze)で止まります。 時刻で動かすものは z2-when time: か z2-alarm だけを使ってください。
背景に投げた処理は、スクリプトが終わっても生き残ります。 & や nohup で逃がした子プロセスは止まりません。 時間のかかるダウンロードなどは、前景で待たずに背景へ投げてください。
同梱マクロは部品として呼べます。 たとえば時刻の解釈と通知の組み立ては remind.sh に任せられます。
sh ~/.z2term/macros/remind.sh 明日 09:00 "打ち合わせ"

AI に書いてもらう

マクロガイド には、そのファイル 1 本を AI に渡せば動くマクロが出てくるように、 仕様とコピペ用の指示文がまとまっています。「§7. AI にマクロを作ってもらう」をご覧ください。