Rustで開発されたファイルマネージャーのfelixが注目を集めています。felixとはターミナル上で高速で軽快に動くファイルマネージャーです。vimとの親和性が高く、ターミナル上で作業することの多いエンジニアに役立つツールです。本稿ではファイルマネージャーの定番を振り返りつつfelixについて紹介します。
TUIファイルマネージャーの定番3本をおさらい
ファイルマネージャーとは、その名が示すとおり、ファイル管理するためのソフトウェアのことです。ファイルの一覧画面から任意のファイルを開いたり、コピーしたり削除したりする機能を備えています。Windowsで言えばOS標準のエクスプローラーがこれに相当します。
Windows以前のMS-DOS時代から、さまざまな形態のファイルマネージャーが存在しました。Windows以降はOS標準のものを使うことが増えましたが、GUIが使えない制限された環境や、普段からターミナル上で作業することの多いエンジニアは、テキストベースのファイルマネージャーを愛用してきました。
ちなみに、TUI (Text-based User Interface)とは、テキストを使用したインターフェースのことです。GUIが普及する以前に利用されていたインターフェイスで、グラフィカルな要素をテキストを用いて表現します。
これまで、ターミナル上で動作する定番のファイルマネージャーと言えば、ranger、nnn、Midnight Commanderなどでした。いずれも、ターミナル上でのファイル操作を改善する上で、便利な機能をたくさん備えています。簡単に少し振り返ってみましょう。
まず、「Midnight Commander(mc)」です。これは、DOS時代から使われてきた伝統的なファイルマネージャーの系譜を引くツールです。基本的に、左右に分かれた2つのパネルを持ち、それぞれにディレクトリとファイルの一覧が表示されます。それで、タブキーを使って左右のパネルを行き来しながら、ファイル操作を行うものになっています。
次に、Pythonで開発されている「Ranger」を見てみましょう。このファイルマネージャーはコマンドラインエディタのvimのようなキー操作で軽快にファイル処理を行うことが可能です。ファイル検索やインクリメンタル検索を備えているだけでなく、タブで操作対象を切り替える機能や、ブックマークの機能など、便利な機能をたくさん備えています。macOSのFinderに近い画面構成となっており、ディレクトリの往来がスムーズです。
そして、「nnn」はC言語で記述されたとにかくシンプルなファイルマネージャーです。必要最低限の機能のみを備えており、必要な機能はプラグインで追加できるようになっています。画面上部にフルパスが表示されおり、矢印キーなどを利用してディレクトリ間を移動します。
felixについて
そして、群雄割拠するファイルマネージャー界に登場したのが、felixです。Rustで開発されているオープンソース(MITライセンスを採用)のプロジェクトです。GitHubでソースコードが公開されています。
最初のバージョン0.1.2がリリースされたのが2021年10月という比較的新しいツールですが、今年の夏に怒濤のバージョンアップが行われ、本稿執筆時の最新版は2.8.1です。マルチプラットフォーム対応しており、macOS/Linuxをはじめ多くのOSで動作します。(ただし、原稿執筆時点でWindowsでのサポートは限定的なので、Windowsの場合はWSLで利用すると良いでしょう。)
作者は日本人のkyoheiu氏で、技術ブログ(https://zenn.dev/kyoheiu)にfelixの紹介記事を書いています。それによると「Vimの基本的な操作感をファイルマネージャーとして再現すること」を目標にして開発したとのことです。また、「シンプルで高速」であることや「アプリを簡単に設定できること」にも拘っているそうです。