← XeFM English | 日本語 · crftwr/xefm on GitHub · craftware

ファイル一覧の自動再読み込み

English | 日本語

概要

XeFM は、外部のアプリケーションがファイルに加えた変更を自動的に検出して表示します。表示中のディレクトリで別のプログラムがファイルを作成、削除、変更、名前変更すると、XeFM はファイル一覧を自動的に更新します。手動で更新する必要はありません。

この機能により、表示が実際のファイルシステムの状態と同期した状態に保たれ、古い情報のまま作業することによる混乱やミスを防げます。

仕組み

XeFM は左右両方のペインのディレクトリを同時に監視します。外部のアプリケーションが変更を加えると、次のようになります。

自動更新の間もカーソル位置と選択は保たれるので、作業が中断されることはありません。

設定

監視の有効化と無効化

ファイルの自動監視は既定で有効です。この設定を変えるには、XeFM の設定ファイル(~/.xefm/config.py)を編集し、Config クラスの定数を設定します。

FILE_MONITORING_ENABLED = True

自動監視を無効にするには、FILE_MONITORING_ENABLED を False にします。無効にすると、XeFM がファイル一覧を更新するのは、ディレクトリの移動や手動での更新といった操作をしたあとだけになります。

高度な設定項目

ほとんどのユーザーはこれらの設定を調整する必要はありませんが、細かく調整したい場合のために ~/.xefm/config.py で使えます。

FILE_MONITORING_ENABLED = True                # Enable/disable automatic reloading
FILE_MONITORING_COALESCE_DELAY_MS = 200       # Event coalescing window (milliseconds)
FILE_MONITORING_MAX_RELOADS_PER_SECOND = 5    # Maximum reloads per second (rate limiting)
FILE_MONITORING_FALLBACK_POLL_INTERVAL_S = 5  # Polling interval for fallback mode (seconds)

設定項目:

実行中の切り替え

XeFM の実行中に、アプリケーションを再起動せずに監視を有効または無効にできます。監視の切り替えコマンド(キーバインドを確認してください)を使うと、監視をすぐにオンまたはオフにできます。

実行中に監視を無効にすると、次のようになります。

監視モード

XeFM はストレージの種類に応じて異なる監視方法を使います。

ネイティブモード(推奨)

ローカルのファイルシステムでは、XeFM はオペレーティングシステムの効率のよい API を使います。

ネイティブモードでは、最小限のリソース消費(監視するディレクトリ 1 つあたり、通常はメモリ 5MB 未満、CPU 1% 未満)で変更を即座に検出できます。

フォールバックモード(ポーリング)

ローカルのパスでネイティブの監視が使えない場合、XeFM は自動的にポーリングモードに切り替わります。これは次のような場合に起こります。

フォールバックモードでは、XeFM は 5 秒ごと(設定で変更可能)に変更を確認します。ネイティブモードほど反応は速くありませんが、ローカルストレージであればどこでも監視が働きます。

リモートとクラウドのバックエンド(監視は無効)

自動監視が働くのは、ローカルのファイルシステム上にあるパスだけです。リモートや仮想のバックエンドでは無効になります。スキャンするローカルのパスがないので、ポーリングでも監視できません。次のものが該当します。

これらの場所ではファイル一覧は自動的に更新されません。変更を見るには手動で更新(ディレクトリに入り直す)してください。XeFM はこれらの場所ではエラーを報告せず、何も言わずに監視を行いません。

フォールバックモードの表示

ストレージの制約やエラーのために XeFM がフォールバックモードで動作しているときは、画面に状態表示が現れます。これにより次のことがわかります。

監視の対象

XeFM が監視するのは、現在の表示に直接含まれるファイルとディレクトリだけです。サブディレクトリ内の変更では親ディレクトリの一覧は更新されません。そうした変更は、そのサブディレクトリに移動したときに表示されます。

2 つのペインはそれぞれ独立して監視されます。

カーソルと選択の動作

自動更新の間、XeFM は作業中の状態を保ちます。

選択していたファイルがまだ存在する場合:

カーソル位置のファイルが削除された場合:

トラブルシューティング

ファイル一覧が自動的に更新されない

監視が有効か確認する:

  1. 設定で FILE_MONITORING_ENABLED が True になっていることを確かめます
  2. 実行中に監視をオフにしてからオンに戻してみます
  3. XeFM を再起動して設定を読み込み直します

フォールバックモードの表示を確認する:

S3、SSH、アーカイブをブラウズしていませんか?

ログファイルを確認する:

ネットワークドライブで監視が働かない

ネットワークドライブやリモートファイルシステムは、ネイティブの変更通知に対応していないことがよくあります。XeFM はこれを自動的に検出し、フォールバックのポーリングモードに切り替えます。フォールバックモードの表示が出て、変更は数秒以内に表示されるはずです。

ネットワークドライブで監視がまったく働かない場合は、次を確認してください。

  1. そのディレクトリの読み取り権限があることを確認します
  2. ネットワーク接続が安定していることを確かめます
  3. XeFM のログにエラーメッセージがないか確認します
  4. ネットワークが遅い場合は FILE_MONITORING_FALLBACK_POLL_INTERVAL_S を大きくすることを検討します

更新が多すぎる/UI が重く感じる

非常に頻繁に変更が起こるディレクトリ(ビルドの出力ディレクトリなど)で作業していると、次のようなことが起こる場合があります。

対処法:

  1. FILE_MONITORING_MAX_RELOADS_PER_SECOND を小さくして更新頻度を制限します
  2. FILE_MONITORING_COALESCE_DELAY_MS を大きくして、より多くの変更をまとめます
  3. 変更の多いディレクトリでは一時的に監視を無効にします
  4. 変更の少ない親ディレクトリに移動します

エラーのあと監視が働かなくなる

XeFM にはエラーからの自動回復機能があります。

ログファイルにエラーメッセージがないか確認してください。よくある問題は次のとおりです。

回復するには次を試してください。

  1. 別のディレクトリに移動してから戻ります
  2. 監視をオフにしてからオンに戻します
  3. XeFM を再起動します
  4. システムの上限を確認します(Linux:cat /proc/sys/fs/inotify/max_user_watches)

監視数の上限を増やす(Linux)

Linux システムでは、同時に監視できるディレクトリの数に上限があります。”too many open files” エラーが出る場合は、次のようにします。

# Check current limit
cat /proc/sys/fs/inotify/max_user_watches

# Temporarily increase limit (until reboot)
sudo sysctl fs.inotify.max_user_watches=524288

# Permanently increase limit
echo "fs.inotify.max_user_watches=524288" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

パフォーマンスについて

ファイルの自動監視は軽量になるように設計されています。

フォールバックモードのリモートファイルシステムでは、次の点に注意してください。

監視を無効にしたほうがよい場合

次のような場合は、自動監視を無効にしたほうがよいかもしれません。

監視を無効にしても、XeFM の基本機能には影響しません。移動、コピー、削除といった操作のあとには、これまでどおりファイル一覧が更新されます。

関連機能

技術的な詳細

実装の詳細に興味のある開発者や上級ユーザーは、次を参照してください。

フィードバックと問題の報告

ファイルの自動監視で問題が起きた場合は、次のようにしてください。

  1. 上のトラブルシューティングの節を確認します
  2. XeFM のログにエラーメッセージがないか確認します
  3. 監視を無効にしてから再び有効にしてみます
  4. 解決しない問題は、ログの抜粋と再現手順を添えて報告してください