rufio
Runtime Unified Flow I/O Operator
ファイルを起点に、ツールとスクリプトを実行・連携させるTUIファイルマネージャー。 Ruby/Python/PowerShellに対応し、開発ワークフローを一箇所に統合します。
A TUI file manager as a unified runtime environment for tools and scripts.
日本語 | English
コンセプト
rufioは単なるファイルマネージャーではありません。ツールランタイム実行環境です。
- ファイル操作: 従来のファイルマネージャー機能
- スクリプト実行: Ruby/Python/PowerShellスクリプトをファイルコンテキストで実行
- ツール連携: 外部ツール(git, fzf, rga等)とのシームレスな統合
- 統一I/O: すべての入出力を単一のフローで管理
特徴
ツールランタイムとして
- マルチ言語スクリプト対応: Ruby, Python, PowerShell
- スクリプトパス管理: 複数のスクリプトディレクトリを登録・管理
- コマンド補完:
@プレフィックスでスクリプトをTab補完 - ジョブ管理: バックグラウンドでスクリプト/コマンドを実行
- 実行ログ: すべての実行結果を自動記録
ファイルマネージャーとして
- Vimライクなキーバインド: 直感的なナビゲーション
- リアルタイムプレビュー: ファイル内容を即座に表示(
batによるシンタックスハイライト対応) - 高速検索: fzf/rgaとの連携
- ブックマーク: よく使うディレクトリに素早くアクセス
- zoxide連携: スマートなディレクトリ履歴
クロスプラットフォーム
- macOS: ネイティブサポート
- Linux: ネイティブサポート
- Windows: PowerShellスクリプト対応
インストール
gem install rufio
または、Gemfileに追加:
gem 'rufio'
クイックスタート
1. 起動
rufio # カレントディレクトリで起動
rufio /path/to # 指定したディレクトリで起動
2. スクリプトパスを登録
- スクリプトを配置したいディレクトリに移動
B→2でスクリプトパスに追加
3. スクリプトを実行
:でコマンドモードを起動@+ スクリプト名の一部を入力Tabで補完Enterで実行
キーバインド
基本操作
| キー | 機能 |
|---|---|
j/k |
上下移動 |
h/l |
親/子ディレクトリ |
g/G |
先頭/末尾 |
Enter |
ディレクトリに入る/ファイルを開く |
q |
終了 |
ファイル操作
| キー | 機能 |
|---|---|
Space |
選択/選択解除 |
o |
外部エディタで開く |
a/A |
ファイル/ディレクトリ作成 |
r |
リネーム |
d |
削除 |
m/c/x |
移動/コピー/削除(選択済み) |
検索・フィルター
| キー | 機能 |
|---|---|
f |
フィルターモード |
s |
fzfでファイル検索 |
F |
rgaでファイル内容検索 |
ナビゲーション
| キー | 機能 |
|---|---|
b |
ブックマーク追加 |
B |
ブックマークメニュー |
0 |
起動ディレクトリに戻る |
1-9 |
ブックマークにジャンプ |
Tab |
次のブックマークへ循環移動(Filesモード限定) |
z |
zoxide履歴 |
ツールランタイム
| キー | 機能 |
|---|---|
: |
コマンドモード |
J |
ジョブモード |
L |
実行ログ表示 |
? |
ヘルプ |
Shift+Tab |
モード切り替え(逆順) |
コマンドモード
: でコマンドモードを起動し、様々なコマンドを実行できます。
スクリプト実行
:@build # @で始まるとスクリプト補完
:@deploy.rb # 登録済みスクリプトを実行
シェルコマンド
:!git status # !で始まるとシェルコマンド
:!ls -la # バックグラウンドで実行
組み込みコマンド
:hello # 挨拶メッセージ
:stop # rufioを終了
スクリプトパス
スクリプトパスとは
スクリプトファイルを配置するディレクトリを登録する機能です。登録したディレクトリ内のスクリプトは、コマンドモードで @ プレフィックスを使って実行できます。
管理方法
B → 3 でスクリプトパス管理メニューを開きます:
- 登録済みパスの一覧表示
d: パスを削除Enter: ディレクトリにジャンプESC: メニューを閉じる
対応スクリプト
| 拡張子 | 言語 |
|---|---|
.rb |
Ruby |
.py |
Python |
.ps1 |
PowerShell |
.sh |
Shell (bash/zsh) |
DSLコマンド
~/.config/rufio/commands.rb でカスタムコマンドを定義できます:
command "hello" do
ruby { "Hello from rufio!" }
description "挨拶コマンド"
end
command "status" do
shell "git status"
description "Gitステータス"
end
command "build" do
script "~/.config/rufio/scripts/build.rb"
description "ビルド実行"
end
設定
設定ファイル構成
~/.config/rufio/
設定例
# ~/.config/rufio/config.rb
# スクリプトパス - スクリプトを配置するディレクトリ
SCRIPT_PATHS = [
'~/.config/rufio/scripts',
'~/my-scripts',
'./scripts'
].freeze
# カラー設定(HSL形式推奨)
COLORS = {
directory: { hsl: [220, 80, 60] },
file: { hsl: [0, 0, 90] },
executable: { hsl: [120, 70, 50] },
selected: { hsl: [50, 90, 70] },
preview: { hsl: [180, 60, 65] }
}.freeze
ローカル設定
プロジェクトルートに rufio.rb を配置すると、そのプロジェクト専用のスクリプトパスを設定できます:
# ./rufio.rb(プロジェクトルート)
SCRIPT_PATHS = [
'./scripts',
'./bin'
].freeze
外部ツール連携
rufioは以下の外部ツールと連携して機能を拡張します。 すべてオプションです。インストールなしでも rufio は正常動作します。
| ツール | 用途 | キー | 必須 |
|---|---|---|---|
| fzf | ファイル名検索 | s |
オプション |
| rga | ファイル内容検索 | F |
オプション |
| zoxide | ディレクトリ履歴 | z |
オプション |
| bat | プレビューのシンタックスハイライト | — | オプション |
bat — シンタックスハイライト
bat をインストールすると、プレビューペインでコードファイルを開いた際に
シンタックスハイライトが表示されます(Ruby、Python、Go、Rust、TypeScript など15言語以上対応)。
ハイライトはバックグラウンドで非同期に読み込まれるため、大きなソースツリーでも カーソル移動が重くなりません。
# macOS
brew install bat
# Ubuntu/Debian
apt install bat
rufio -c を実行すると bat が正しく認識されているか確認できます。
インストール(全ツール)
# macOS
brew install fzf bat rga zoxide
# Ubuntu/Debian
apt install fzf bat zoxide
# rgaは別途インストール: https://github.com/phiresky/ripgrep-all
高度な機能
ネイティブスキャナー(実験的)
高速なディレクトリスキャンのためのネイティブ実装をサポート:
rufio --native # 自動検出
rufio --native=zig # Zig実装
JITコンパイラ
rufio --yjit # Ruby 3.1+ YJIT
rufio --zjit # Ruby 3.4+ ZJIT
ヘルスチェック
rufio -c # システム依存関係をチェック
rufio --check-health # 同上
開発
必要な環境
- Ruby 2.7.0以上
- io-console, pastel, tty-cursor, tty-screen gems
開発版の実行
git clone https://github.com/masisz/rufio
cd rufio
bundle install
./bin/rufio
テスト
bundle exec rake test
ライセンス
MIT License
貢献
バグ報告や機能リクエストは GitHub Issues でお願いします。 プルリクエストも歓迎です!