English | 日本語
ターミナルモードでは、XeFM はターミナルを必要とするものに自分のターミナルを貸します。サブシェル(subshell、Shift-X)や、'options': {'terminal': True} を指定した PROGRAMS のエントリ(vim、less、REPL など)です。デスクトップアプリには自前のターミナルがないので、代わりにターミナルを開きます。現在のディレクトリで、シェルまたはそのプログラムを実行する新しいターミナルウィンドウです。
そのため、同じ config.py がどちらのモードでも動きます。違いは次のとおりです。
XEFM_* 変数(ペインのディレクトリ、選択項目、XEFM_ACTIVE)と [XeFM] プロンプトマーカーは、ターミナルモードのサブシェルとまったく同じく、ウィンドウを開いた時点で設定されます。その後の XeFM での変更には追従しません。terminal: True のプログラムがエラーで終了した場合は、Enter を押すまでウィンドウが開いたままになり、最後の出力を読めるようにします。サブシェルは、シェルが終了したときにそのターミナルが普段するのと同じようにウィンドウを閉じます。
~/.xefm/config.py の TERMINAL でアプリケーションを選びます。その中で動くシェルはこれまでどおり SUBSHELL で選びます。プラットフォームの既定のものを使うには、TERMINAL を None のままにしておきます。
| プラットフォーム | 既定 |
|---|---|
| macOS | Terminal.app |
| Windows | インストールされていれば Windows Terminal(wt.exe)、なければ新しいコンソールウィンドウ |
別のターミナルを使うには、そのコマンドラインを指定します。XeFM が実行したいものは末尾の引数として付け加えられるので、ターミナルにコマンドを実行させるときと同じ形で指定してください。
TERMINAL = ['open', '-a', 'iTerm'] # macOS: an app that runs a script it opens
TERMINAL = ['wezterm', 'start', '--'] # takes the command as trailing arguments
TERMINAL = ['alacritty', '-e']
TERMINAL = ['wt.exe', '-w', '0', 'nt'] # Windows Terminal: a tab in the current window
文字列でもかまいません('wezterm start --')。シェルと同じように分割されます。スペースを含む Windows のパスにはリストを使ってください。
ログペインに理由が表示されます。
TERMINAL のコマンドがインストールされていないか、PATH 上にありません。PROGRAMS と terminal: TrueSUBSHELL