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)
設定項目:
FILE_MONITORING_ENABLED(既定値:True)- 自動監視を有効または無効にしますFILE_MONITORING_COALESCE_DELAY_MS(既定値:200)- 複数の変更を 1 回の更新にまとめる時間幅(ミリ秒)FILE_MONITORING_MAX_RELOADS_PER_SECOND(既定値:5)- UI が頻繁な再描画で重くなるのを防ぐための、1 秒あたりの自動更新の最大回数FILE_MONITORING_FALLBACK_POLL_INTERVAL_S(既定値:5)- ネイティブの監視が使えないときのポーリング間隔(秒)XeFM の実行中に、アプリケーションを再起動せずに監視を有効または無効にできます。監視の切り替えコマンド(キーバインドを確認してください)を使うと、監視をすぐにオンまたはオフにできます。
実行中に監視を無効にすると、次のようになります。
XeFM はストレージの種類に応じて異なる監視方法を使います。
ローカルのファイルシステムでは、XeFM はオペレーティングシステムの効率のよい API を使います。
ネイティブモードでは、最小限のリソース消費(監視するディレクトリ 1 つあたり、通常はメモリ 5MB 未満、CPU 1% 未満)で変更を即座に検出できます。
ローカルのパスでネイティブの監視が使えない場合、XeFM は自動的にポーリングモードに切り替わります。これは次のような場合に起こります。
フォールバックモードでは、XeFM は 5 秒ごと(設定で変更可能)に変更を確認します。ネイティブモードほど反応は速くありませんが、ローカルストレージであればどこでも監視が働きます。
自動監視が働くのは、ローカルのファイルシステム上にあるパスだけです。リモートや仮想のバックエンドでは無効になります。スキャンするローカルのパスがないので、ポーリングでも監視できません。次のものが該当します。
これらの場所ではファイル一覧は自動的に更新されません。変更を見るには手動で更新(ディレクトリに入り直す)してください。XeFM はこれらの場所ではエラーを報告せず、何も言わずに監視を行いません。
ストレージの制約やエラーのために XeFM がフォールバックモードで動作しているときは、画面に状態表示が現れます。これにより次のことがわかります。
XeFM が監視するのは、現在の表示に直接含まれるファイルとディレクトリだけです。サブディレクトリ内の変更では親ディレクトリの一覧は更新されません。そうした変更は、そのサブディレクトリに移動したときに表示されます。
2 つのペインはそれぞれ独立して監視されます。
自動更新の間、XeFM は作業中の状態を保ちます。
選択していたファイルがまだ存在する場合:
カーソル位置のファイルが削除された場合:
監視が有効か確認する:
FILE_MONITORING_ENABLED が True になっていることを確かめますフォールバックモードの表示を確認する:
S3、SSH、アーカイブをブラウズしていませんか?
ログファイルを確認する:
ネットワークドライブやリモートファイルシステムは、ネイティブの変更通知に対応していないことがよくあります。XeFM はこれを自動的に検出し、フォールバックのポーリングモードに切り替えます。フォールバックモードの表示が出て、変更は数秒以内に表示されるはずです。
ネットワークドライブで監視がまったく働かない場合は、次を確認してください。
FILE_MONITORING_FALLBACK_POLL_INTERVAL_S を大きくすることを検討します非常に頻繁に変更が起こるディレクトリ(ビルドの出力ディレクトリなど)で作業していると、次のようなことが起こる場合があります。
対処法:
FILE_MONITORING_MAX_RELOADS_PER_SECOND を小さくして更新頻度を制限しますFILE_MONITORING_COALESCE_DELAY_MS を大きくして、より多くの変更をまとめますXeFM にはエラーからの自動回復機能があります。
ログファイルにエラーメッセージがないか確認してください。よくある問題は次のとおりです。
回復するには次を試してください。
cat /proc/sys/fs/inotify/max_user_watches)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
ファイルの自動監視は軽量になるように設計されています。
フォールバックモードのリモートファイルシステムでは、次の点に注意してください。
FILE_MONITORING_FALLBACK_POLL_INTERVAL_S を調整します次のような場合は、自動監視を無効にしたほうがよいかもしれません。
監視を無効にしても、XeFM の基本機能には影響しません。移動、コピー、削除といった操作のあとには、これまでどおりファイル一覧が更新されます。
実装の詳細に興味のある開発者や上級ユーザーは、次を参照してください。
doc/dev/FILE_MONITORING_IMPLEMENTATION.md - アーキテクチャと実装xefm/file_monitor_manager.py - 監視全体を取りまとめる中心部xefm/file_monitor_observer.py - ディレクトリごとの監視ファイルの自動監視で問題が起きた場合は、次のようにしてください。