Termuxカスタマイズ

Termuxはアプリの設定画面以外に、~/.termux/termux.propertiesを編集することでより詳細にカスタマイズできます。
インストール時にテンプレートが生成されるほか、 Termux Wikiにドキュメントがあります。

ソフトキー拡張

ターミナルを物理的なキーボードなしで利用するとキーが不足しがちです。
特殊なキーアサインとして、Androidの戻るボタンをESCに変更するconfigがあります。

back-key=escape

Termuxには戻る操作がないため、無難なキーアサインです。 viなどの操作時に多少使いやすいキーを利用できるでしょう。

キーボードの上にExtra Keysという領域があり、標準ではCTRLTabキーなどをレイアウトしています。
Extra Keysは 解説のとおり、カスタマイズ可能です。

1行でレイアウトした例は以下のような記述になります。

extra-keys = [[{key: 'TAB', popup: 'ESC'}, {key: 'CTRL', popup: 'ALT'}, {key: '/', popup: '-'}, {key: 'LEFT', popup: 'HOME'}, {key: 'UP', popup: 'PGUP'}, {key: 'DOWN', popup: 'PGDN'}, {key: 'RIGHT', popup: 'END'}]]

標準では使われていない拡張にpopupがあります。これはフリックした場合に別のキーをアサインできるものです。
ソフトキーは表示サイズと押しやすさが比例するため、表示キー数を減らすと使いやすくなるでしょう。macroもアサインできます。

なお、「SHIFT」キーもmacroなどで想定どおりに使えます。Gboardなどのキーボード上に表示されているShiftのように動作するボタンは、候補の切り替えキーでShiftとしては動作しません。

日本語キーボード入力

これはカスタマイズではなく標準機能ですがText Input Viewという入力モードがあり、日本語キーボードなどを利用できます。

実はExtra Keysの表示行は左向きにスワイプでき、Text Input Viewに切り替えられます。
Termuxの通常入力は英数字の直接入力ですが、Text Input ViewにはIME経由で入力でき、Enterを押すとカーソル位置に文字列を送ります。

Emacsやvi(挿入モード)といったターミナル上で動作するエディタにソフトキーで日本語のまとまった文を入力する際に便利です。
通常の直接入力に戻すにはText Input Viewの領域を逆方向にスワイプします。

Spacemacs/vim

Extra KeysとText Input Viewを駆使すると、 Spacemacsなどviキーバインドをソフトキーボードで最低限利用できます。

  • ESCは戻るボタンに割り当てられる
  • Extra Keysのカーソルキーはリピート入力になる
  • CtrlAlt(meta)はON/OFF切替え操作で同時押しをエミュレート
  • SpacemacsのSPCリーダーキーはソフトキーボードに適している
  • ソフトキーの日本語入力はSKKよりText Input Viewの方が適している

サーバー環境と共通になる点は便利です。

ボリュームキーのカスタマイズは難あり

スマートフォンの音量ボリュームキーは音量調節の目的で使う機会が少なく、カスタマイズの余地があります。
Termuxも 既定のキーアサインを提供していますが、プレフィクス動作であり使いやすくはないでしょう。

ボリュームキーをカスタマイズするには別のアプリが必要です。KeyMapperなどで設定は可能ながら、Androidの制約から専用のキーボードを必要とするといった制約があり、キー入力目的には難があります。

MacroDroidなどから スクリプト実行する目的に割り当てた方が使いやすくなるでしょう。

Shebangの互換性

Linuxなどの多くの実行スクリプトは冒頭に#!/bin/bashといった shebangを記載して直接実行可能にしています。
termuxの場合、bashが/data/data/com.termux/files/usr/bin/bashであるためスクリプトの互換性がありません。envも想定PATHにないため無意味です。

Termuxに同梱されている Termux-execを利用すると、#!/bin//data/data/com.termux/files/usr/bin/を探索して一般的なスクリプトを動作させられます。

.bashrcなどでLD_PRELOADに追加することで有効になります。

export LD_PRELOAD=${PREFIX}/lib/libtermux-exec.so

LD_PRELOADを変更したくない場合には、 termux-fix-shebungというユーティリティでスクリプトを書き換えます。

OpenSSH

opensshのパッケージをインストールすると、SSH接続できます。
一般的なopensshコマンドであるため~/.sshのセットアップを利用できます。

とくに不満がなければ他のSSHアプリが不要化します。SSHトンネルも動作します。

URLをコピー

デスクトップOS向けの多くのターミナルはOSC52という制御シークエンスに対応しており、ターミナル内のコピー操作をローカルOSのクリップボードに引き渡せます。

TermuxはOSC52には対応していないようです。
何でもコピーできるわけではないのですが、URLのみ対応する独自実装を持っており、URL表示状態でマウス右クリック相当の操作(画面長押しなど)メニューからコピーできます。

メニューリストのURLを長押しするとURLに対応するインテント処理となり、たとえばGoogleドキュメントなどはアプリ起動します。

この機能で、期待する操作をそれなりに広くカバーできます。

中馬崇尋
Chuma Takahiro