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ライクなキーバインド
  • ファイルプレビュー: テキストファイルの内容をその場で確認
  • リアルタイムフィルター: Spaceキーでファイル名の絞り込み表示
  • 高度な検索機能: 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 ディレクトリ内容を更新

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

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

検索機能

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

システム操作

キー 機能
q beniyaを終了

フィルター機能の詳細

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

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

使用例

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

検索機能の詳細

ファイル名検索 (/)

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

ファイル内容検索 (f)

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

必要な外部ツール

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

# macOS (Homebrew)
brew install fzf rga

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

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

設定

言語設定

beniyaは多言語対応しています。言語は以下の方法で設定できます:

環境変数(推奨)

# 日本語
export BENIYA_LANG=ja

# 英語(デフォルト)
export BENIYA_LANG=en

設定ファイル

# 設定ディレクトリを作成
mkdir -p ~/.config/beniya

# 設定例をコピー
cp config_example.rb ~/.config/beniya/config.rb

# 設定ファイルを編集
# 日本語の場合は LANGUAGE = 'ja'、英語の場合は LANGUAGE = 'en' を設定

優先順位

  1. 設定ファイル(~/.config/beniya/config.rb
  2. BENIYA_LANG環境変数
  3. デフォルト(英語)

色設定(カスタマイズ)

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. 可能であれば複数のプラットフォームでテストする