Project

beniya

0.0
The project is in a healthy, maintained state
A terminal-based file manager inspired by Yazi, written in Ruby with plugin support
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Development

~> 5.0
~> 13.0
~> 1.21

Runtime

~> 0.8
 Project Readme

beniya

Ruby製のターミナルベースファイルマネージャー

日本語 | English

概要

beniyaは、Yaziにインスパイアされたターミナル上で動作するファイルマネージャーです。Rubyで実装されており、プラグインサポートを備えています。軽量で高速な操作性を提供し、ファイルの閲覧・管理・検索機能を備えています。

特徴

  • 軽量でシンプル: Rubyで書かれた軽量なファイルマネージャー
  • 直感的な操作: Vimライクなキーバインド
  • ファイルプレビュー: テキストファイルの内容をその場で確認
  • ファイル選択・操作: 複数ファイルの選択、移動、コピー、削除が可能
  • ベースディレクトリ操作: 起動ディレクトリへの一括ファイル移動・コピー
  • リアルタイムフィルター: sキーでファイル名の絞り込み表示
  • 高度な検索機能: fzfとrgaを使った強力な検索
  • マルチプラットフォーム: macOS、Linux、Windowsで動作
  • 外部エディタ連携: お気に入りのエディタでファイルを開く
  • ヘルスチェック: システム依存関係の確認機能

インストール

gem install beniya

または、Gemfileに追加してください:

gem 'beniya'

使い方

基本的な起動方法

beniya           # カレントディレクトリで起動
beniya /path/to  # 指定したディレクトリで起動

ヘルスチェック

beniya -c                # システム依存関係をチェック
beniya --check-health    # 上記と同じ
beniya --help           # ヘルプメッセージを表示

キーバインド一覧

基本ナビゲーション

キー 機能
j 下に移動
k 上に移動
h 親ディレクトリに移動
l / Enter ディレクトリに入る・ファイルを選択

高速ナビゲーション

キー 機能
g リストの先頭に移動
G リストの末尾に移動

ファイル操作

キー 機能
o 選択中のファイルを外部エディタで開く
e 現在のディレクトリをファイルエクスプローラーで開く
r ディレクトリ内容を更新
a 新しいファイルを作成
A 新しいディレクトリを作成

ファイル選択・操作

キー 機能
Space ファイル・ディレクトリを選択・選択解除(複数選択可)
m 選択したアイテムをベースディレクトリに移動
p 選択したアイテムをベースディレクトリにコピー
x 選択したアイテムを削除

リアルタイムフィルター機能

キー 機能
f フィルターモード開始・再編集
文字入力 ファイル名で絞り込み(フィルターモード中)
Enter フィルター維持で通常モードに戻る
ESC フィルターをクリアして通常モードに戻る
Backspace 文字削除(フィルターモード中)

検索機能

キー 機能
s fzfによるファイル名検索(プレビュー付き)
F rgaによるファイル内容検索

ブックマーク機能

キー 機能
b ブックマークメニューを表示
1-9 対応する番号のブックマークに移動

zoxide連携機能

キー 機能
z zoxide履歴からディレクトリを選択移動

システム操作

キー 機能
q beniyaを終了

ファイル選択・操作機能の詳細

ファイル・ディレクトリ選択 (Space)

  • 選択・選択解除: Spaceキーでファイルやディレクトリを選択・選択解除
  • 複数選択: 複数のファイルやディレクトリを同時に選択可能
  • 視覚的表示: 選択されたアイテムは✓マークと緑色の背景で表示
  • 選択状態の表示: 画面上部2行目に選択中のアイテム数が表示

ベースディレクトリ操作

beniya起動時のディレクトリがベースディレクトリとして設定され、選択したファイルの移動・コピー先となります。

操作 キー 機能
移動 m 選択したアイテムをベースディレクトリに移動
コピー p 選択したアイテムをベースディレクトリにコピー
削除 x 選択したアイテムを削除

削除操作の詳細

  • フローティングダイアログ確認: モダンなフローティングウィンドウで明確な選択肢を表示
  • 視覚的フィードバック: 赤い枠線と警告色で注意を引く
  • 安全な操作: 削除前のダブルチェック
  • 包括的エラーハンドリング: 削除失敗時の詳細なエラーメッセージ
  • リアルタイム結果表示: フローティングダイアログで成功/失敗数を表示
  • ファイルシステム検証: 成功報告前に実際の削除を確認
  • デバッグサポート: BENIYA_DEBUG=1でオプションのデバッグログ出力

操作の流れ

1. Space → ファイル・ディレクトリを選択(複数選択可)
2. 操作キーを選択:
   - m → ベースディレクトリに移動
   - p → ベースディレクトリにコピー
   - x → 削除
3. フローティングダイアログ → Y/Nで確認、ESCでキャンセル
4. 結果表示 → フローティングウィンドウで操作結果を確認

安全機能

  • フローティング確認ダイアログ: 確認用のモダンなフローティングウィンドウインターフェース
  • 視覚警告システム: 危険な操作時の赤い枠線と警告色
  • 重複チェック: 同名ファイルがある場合は自動でスキップ
  • エラーハンドリング: 権限不足などのエラーに適切に対応
  • 操作ログ: フローティングダイアログで処理結果を詳細表示
  • 削除後検証: ファイルシステムから実際に削除されたことを確認

フィルター機能の詳細

リアルタイムフィルター (f)

  • フィルター開始: fキーを押してフィルターモードに入る
  • 文字入力による絞り込み: 日本語・英数字・記号に対応
  • リアルタイム更新: 文字を入力するたびに表示が更新される
  • フィルター維持: Enterキーでフィルターを保持したまま通常操作に戻る
  • フィルタークリア: ESCキーでフィルターをクリアして通常表示に戻る
  • 再編集: フィルター適用中にfキーで再編集モード
  • 文字削除: Backspaceで文字削除、全削除時は自動でフィルタークリア

使用例

1. f → フィルターモード開始
2. ".rb" → Rubyファイルのみ表示
3. Enter → フィルター維持で通常操作
4. j/k → フィルター結果内をナビゲーション
5. f → フィルター再編集
6. ESC → フィルタークリア

検索機能の詳細

ファイル名検索 (s)

  • fzfを使用したインタラクティブなファイル名検索
  • リアルタイムプレビュー表示
  • 選択したファイルは自動で外部エディタで開かれる

ファイル内容検索 (F)

  • rga(ripgrep-all)を使用した高度なファイル内容検索
  • PDF、Word文書、画像内テキストなども検索対象
  • 検索結果をfzfで絞り込み、該当行にジャンプしてファイルを開く

ブックマーク機能の詳細

ブックマーク操作 (b)

  • ブックマーク追加: [A] - 現在のディレクトリをブックマークに追加
  • ブックマーク一覧: [L] - 登録済みブックマークの一覧表示
  • ブックマーク削除: [R] - ブックマークを削除
  • 番号ジャンプ: 1-9 - 対応する番号のブックマークに直接移動

高速ナビゲーション (1-9)

  • ブックマークメニューを経由せず、数字キーでブックマークに直接ジャンプ
  • 最大9個のブックマークをサポート
  • ブックマーク情報は画面上部に表示

ブックマークの永続化

  • ブックマーク情報は ~/.config/beniya/bookmarks.json に自動保存
  • beniya再起動後もブックマーク情報が保持される
  • JSONファイルを直接編集することも可能

zoxide連携機能の詳細

zoxide履歴移動 (z)

  • スマート履歴: zoxideが記録したディレクトリ移動履歴を表示
  • フリークエンシー順: よく使用するディレクトリほど上位に表示
  • インタラクティブ選択: フローティングウィンドウで履歴を選択
  • 高速ナビゲーション: 数字キーで直接ディレクトリを選択
  • パス省略表示: ホームディレクトリを~で表示し見やすく

使用例

1. z → zoxide履歴メニューを表示
2. 1-20 → 表示された番号でディレクトリを選択
3. ESC → キャンセルして元の画面に戻る

zoxideについて

zoxideは、ディレクトリ移動履歴を学習するスマートなcdコマンドです。

# zoxideのインストール
# macOS (Homebrew)
brew install zoxide

# Ubuntu/Debian
apt install zoxide

# その他のインストール方法は公式ドキュメントを参照
# https://github.com/ajeetdsouza/zoxide#installation

動作要件

  • zoxideがシステムにインストールされている必要があります
  • zoxideが無効な場合は適切なメッセージが表示されます
  • 履歴が空の場合も適切にハンドリングされます

必要な外部ツール

検索機能・履歴機能を使用するには、以下のツールが必要です:

# macOS (Homebrew)
brew install fzf rga zoxide

# Ubuntu/Debian
apt install fzf zoxide
# rgaは別途インストールが必要: https://github.com/phiresky/ripgrep-all

# その他のLinuxディストリビューション
# パッケージマネージャーまたは手動インストールが必要

各ツールの用途

  • fzf: ファイル名検索機能(sキー)
  • rga: ファイル内容検索機能(Fキー)
  • zoxide: ディレクトリ履歴移動機能(zキー)

設定

色設定(カスタマイズ)

beniyaではファイルタイプや UI 要素の色をカスタマイズできます。HSLカラーモデルによる直感的な色指定をサポートしています。

サポートされる色形式

# HSL(色相・彩度・明度)- 推奨形式
{hsl: [220, 80, 60]}  # 色相220度、彩度80%、明度60%

# RGB(赤・緑・青)
{rgb: [100, 150, 200]}

# HEX(16進数)
{hex: "#6496c8"}

# 従来のシンボル
:blue, :red, :green, :yellow, :cyan, :magenta, :white, :black

# ANSIカラーコード
"34" または 34

設定例

# ~/.config/beniya/config.rb
COLORS = {
  # HSLでの色指定(直感的で調整しやすい)
  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]},      # シアンでプレビュー

  # 他の形式も併用可能
  # directory: :blue,                 # シンボル
  # file: {rgb: [200, 200, 200]},     # RGB
  # executable: {hex: "#00aa00"},     # HEX
}

HSLカラーモデルについて

  • 色相(Hue): 0-360度(0=赤、120=緑、240=青)
  • 彩度(Saturation): 0-100%(0=グレー、100=鮮やか)
  • 明度(Lightness): 0-100%(0=黒、50=標準、100=白)

設定可能な項目

  • directory: ディレクトリの色
  • file: 通常ファイルの色
  • executable: 実行可能ファイルの色
  • selected: 選択中の項目の色
  • preview: プレビューパネルの色

開発

必要な環境

  • Ruby 2.7.0以上
  • io-console, pastel, tty-cursor, tty-screen gems

開発版の実行

git clone https://github.com/masisz/beniya
cd beniya
bundle install
./exe/beniya

テスト実行

bundle exec rake test

対応プラットフォーム

  • macOS: ネイティブサポート
  • Linux: ネイティブサポート
  • Windows: 基本機能をサポート

ライセンス

MIT License

貢献

バグ報告や機能リクエストはGitHub Issuesでお願いします。

プルリクエストも歓迎です!

開発ガイドライン

  1. 既存のコードスタイルと規約に従う
  2. 新機能にはテストを追加する
  3. 必要に応じてドキュメントを更新する
  4. 可能であれば複数のプラットフォームでテストする