beniya 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.md +288 -0
- data/README_EN.md +289 -0
- data/beniya.gemspec +40 -0
- data/bin/beniya +31 -0
- data/config_example.rb +88 -0
- data/lib/beniya/application.rb +28 -0
- data/lib/beniya/color_helper.rb +150 -0
- data/lib/beniya/config.rb +179 -0
- data/lib/beniya/config_loader.rb +110 -0
- data/lib/beniya/directory_listing.rb +99 -0
- data/lib/beniya/file_opener.rb +114 -0
- data/lib/beniya/file_preview.rb +172 -0
- data/lib/beniya/health_checker.rb +224 -0
- data/lib/beniya/keybind_handler.rb +332 -0
- data/lib/beniya/terminal_ui.rb +469 -0
- data/lib/beniya/version.rb +5 -0
- data/lib/beniya.rb +17 -0
- metadata +161 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e79b1aa2e0e9c1dbd6ab81b29f2caf64850680cb6a163fe07c2785c62b50763b
|
4
|
+
data.tar.gz: e171046a7755250a457a9b181a215be8ffb8006c954d808468aa550c05caf4d1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f13cbdf3db58b88777c86896102360b57651417399938cec2e4209f535297fb819903ff55740766073cbc7ffcb5974d29068bba08df931ca907f0e6fc418dcea
|
7
|
+
data.tar.gz: afb80e08066796192cfa63d948892f690629b6f02fca78db6352df7fd7b45cbfd5bb8716e659af4e4bea0fa625b88379f09598895678a796eaffb13227489f4e
|
data/README.md
ADDED
@@ -0,0 +1,288 @@
|
|
1
|
+
# beniya
|
2
|
+
|
3
|
+
Ruby製のターミナルベースファイルマネージャー
|
4
|
+
|
5
|
+
**日本語** | [English](./README_EN.md)
|
6
|
+
|
7
|
+
## 概要
|
8
|
+
|
9
|
+
beniyaは、Yaziにインスパイアされたターミナル上で動作するファイルマネージャーです。Rubyで実装されており、プラグインサポートを備えています。軽量で高速な操作性を提供し、ファイルの閲覧・管理・検索機能を備えています。
|
10
|
+
|
11
|
+
## 特徴
|
12
|
+
|
13
|
+
- **軽量でシンプル**: Rubyで書かれた軽量なファイルマネージャー
|
14
|
+
- **直感的な操作**: Vimライクなキーバインド
|
15
|
+
- **ファイルプレビュー**: テキストファイルの内容をその場で確認
|
16
|
+
- **リアルタイムフィルター**: Spaceキーでファイル名の絞り込み表示
|
17
|
+
- **高度な検索機能**: fzfとrgaを使った強力な検索
|
18
|
+
- **マルチプラットフォーム**: macOS、Linux、Windowsで動作
|
19
|
+
- **外部エディタ連携**: お気に入りのエディタでファイルを開く
|
20
|
+
- **多言語対応**: 日本語・英語インターフェース
|
21
|
+
- **ヘルスチェック**: システム依存関係の確認機能
|
22
|
+
|
23
|
+
## インストール
|
24
|
+
|
25
|
+
```bash
|
26
|
+
gem install beniya
|
27
|
+
```
|
28
|
+
|
29
|
+
または、Gemfileに追加してください:
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
gem 'beniya'
|
33
|
+
```
|
34
|
+
|
35
|
+
## 使い方
|
36
|
+
|
37
|
+
### 基本的な起動方法
|
38
|
+
|
39
|
+
```bash
|
40
|
+
beniya # カレントディレクトリで起動
|
41
|
+
beniya /path/to # 指定したディレクトリで起動
|
42
|
+
```
|
43
|
+
|
44
|
+
### ヘルスチェック
|
45
|
+
|
46
|
+
```bash
|
47
|
+
beniya -c # システム依存関係をチェック
|
48
|
+
beniya --check-health # 上記と同じ
|
49
|
+
beniya --help # ヘルプメッセージを表示
|
50
|
+
```
|
51
|
+
|
52
|
+
### キーバインド一覧
|
53
|
+
|
54
|
+
#### 基本ナビゲーション
|
55
|
+
|
56
|
+
| キー | 機能 |
|
57
|
+
| ------------- | ---------------------------------- |
|
58
|
+
| `j` | 下に移動 |
|
59
|
+
| `k` | 上に移動 |
|
60
|
+
| `h` | 親ディレクトリに移動 |
|
61
|
+
| `l` / `Enter` | ディレクトリに入る・ファイルを選択 |
|
62
|
+
|
63
|
+
#### 高速ナビゲーション
|
64
|
+
|
65
|
+
| キー | 機能 |
|
66
|
+
| ---- | ------------------ |
|
67
|
+
| `g` | リストの先頭に移動 |
|
68
|
+
| `G` | リストの末尾に移動 |
|
69
|
+
|
70
|
+
#### ファイル操作
|
71
|
+
|
72
|
+
| キー | 機能 |
|
73
|
+
| ---- | -------------------------------------------------- |
|
74
|
+
| `o` | 選択中のファイルを外部エディタで開く |
|
75
|
+
| `e` | 現在のディレクトリをファイルエクスプローラーで開く |
|
76
|
+
| `r` | ディレクトリ内容を更新 |
|
77
|
+
|
78
|
+
#### リアルタイムフィルター機能
|
79
|
+
|
80
|
+
| キー | 機能 |
|
81
|
+
| ----------- | ------------------------------------------ |
|
82
|
+
| `Space` | フィルターモード開始・再編集 |
|
83
|
+
| 文字入力 | ファイル名で絞り込み(フィルターモード中) |
|
84
|
+
| `Enter` | フィルター維持で通常モードに戻る |
|
85
|
+
| `ESC` | フィルターをクリアして通常モードに戻る |
|
86
|
+
| `Backspace` | 文字削除(フィルターモード中) |
|
87
|
+
|
88
|
+
#### 検索機能
|
89
|
+
|
90
|
+
| キー | 機能 |
|
91
|
+
| ---- | ----------------------------------------- |
|
92
|
+
| `/` | fzfによるファイル名検索(プレビュー付き) |
|
93
|
+
| `f` | rgaによるファイル内容検索 |
|
94
|
+
|
95
|
+
#### システム操作
|
96
|
+
|
97
|
+
| キー | 機能 |
|
98
|
+
| ---- | ------------ |
|
99
|
+
| `q` | beniyaを終了 |
|
100
|
+
|
101
|
+
### フィルター機能の詳細
|
102
|
+
|
103
|
+
#### リアルタイムフィルター (`Space`)
|
104
|
+
|
105
|
+
- **フィルター開始**: `Space`キーを押してフィルターモードに入る
|
106
|
+
- **文字入力による絞り込み**: 日本語・英数字・記号に対応
|
107
|
+
- **リアルタイム更新**: 文字を入力するたびに表示が更新される
|
108
|
+
- **フィルター維持**: `Enter`キーでフィルターを保持したまま通常操作に戻る
|
109
|
+
- **フィルタークリア**: `ESC`キーでフィルターをクリアして通常表示に戻る
|
110
|
+
- **再編集**: フィルター適用中に`Space`キーで再編集モード
|
111
|
+
- **文字削除**: `Backspace`で文字削除、全削除時は自動でフィルタークリア
|
112
|
+
|
113
|
+
#### 使用例
|
114
|
+
|
115
|
+
```
|
116
|
+
1. Space → フィルターモード開始
|
117
|
+
2. ".rb" → Rubyファイルのみ表示
|
118
|
+
3. Enter → フィルター維持で通常操作
|
119
|
+
4. j/k → フィルター結果内をナビゲーション
|
120
|
+
5. Space → フィルター再編集
|
121
|
+
6. ESC → フィルタークリア
|
122
|
+
```
|
123
|
+
|
124
|
+
### 検索機能の詳細
|
125
|
+
|
126
|
+
#### ファイル名検索 (`/`)
|
127
|
+
|
128
|
+
- `fzf`を使用したインタラクティブなファイル名検索
|
129
|
+
- リアルタイムプレビュー表示
|
130
|
+
- 選択したファイルは自動で外部エディタで開かれる
|
131
|
+
|
132
|
+
#### ファイル内容検索 (`f`)
|
133
|
+
|
134
|
+
- `rga`(ripgrep-all)を使用した高度なファイル内容検索
|
135
|
+
- PDF、Word文書、画像内テキストなども検索対象
|
136
|
+
- 検索結果をfzfで絞り込み、該当行にジャンプしてファイルを開く
|
137
|
+
|
138
|
+
### 必要な外部ツール
|
139
|
+
|
140
|
+
検索機能を使用するには、以下のツールが必要です:
|
141
|
+
|
142
|
+
```bash
|
143
|
+
# macOS (Homebrew)
|
144
|
+
brew install fzf rga
|
145
|
+
|
146
|
+
# Ubuntu/Debian
|
147
|
+
apt install fzf
|
148
|
+
# rgaは別途インストールが必要: https://github.com/phiresky/ripgrep-all
|
149
|
+
|
150
|
+
# その他のLinuxディストリビューション
|
151
|
+
# パッケージマネージャーまたは手動インストールが必要
|
152
|
+
```
|
153
|
+
|
154
|
+
## 設定
|
155
|
+
|
156
|
+
### 言語設定
|
157
|
+
|
158
|
+
beniyaは多言語対応しています。言語は以下の方法で設定できます:
|
159
|
+
|
160
|
+
#### 環境変数(推奨)
|
161
|
+
|
162
|
+
```bash
|
163
|
+
# 日本語
|
164
|
+
export BENIYA_LANG=ja
|
165
|
+
|
166
|
+
# 英語(デフォルト)
|
167
|
+
export BENIYA_LANG=en
|
168
|
+
```
|
169
|
+
|
170
|
+
#### 設定ファイル
|
171
|
+
|
172
|
+
```bash
|
173
|
+
# 設定ディレクトリを作成
|
174
|
+
mkdir -p ~/.config/beniya
|
175
|
+
|
176
|
+
# 設定例をコピー
|
177
|
+
cp config_example.rb ~/.config/beniya/config.rb
|
178
|
+
|
179
|
+
# 設定ファイルを編集
|
180
|
+
# 日本語の場合は LANGUAGE = 'ja'、英語の場合は LANGUAGE = 'en' を設定
|
181
|
+
```
|
182
|
+
|
183
|
+
### 優先順位
|
184
|
+
|
185
|
+
1. 設定ファイル(`~/.config/beniya/config.rb`)
|
186
|
+
2. `BENIYA_LANG`環境変数
|
187
|
+
3. デフォルト(英語)
|
188
|
+
|
189
|
+
### 色設定(カスタマイズ)
|
190
|
+
|
191
|
+
beniyaではファイルタイプや UI 要素の色をカスタマイズできます。HSLカラーモデルによる直感的な色指定をサポートしています。
|
192
|
+
|
193
|
+
#### サポートされる色形式
|
194
|
+
|
195
|
+
```ruby
|
196
|
+
# HSL(色相・彩度・明度)- 推奨形式
|
197
|
+
{hsl: [220, 80, 60]} # 色相220度、彩度80%、明度60%
|
198
|
+
|
199
|
+
# RGB(赤・緑・青)
|
200
|
+
{rgb: [100, 150, 200]}
|
201
|
+
|
202
|
+
# HEX(16進数)
|
203
|
+
{hex: "#6496c8"}
|
204
|
+
|
205
|
+
# 従来のシンボル
|
206
|
+
:blue, :red, :green, :yellow, :cyan, :magenta, :white, :black
|
207
|
+
|
208
|
+
# ANSIカラーコード
|
209
|
+
"34" または 34
|
210
|
+
```
|
211
|
+
|
212
|
+
#### 設定例
|
213
|
+
|
214
|
+
```ruby
|
215
|
+
# ~/.config/beniya/config.rb
|
216
|
+
COLORS = {
|
217
|
+
# HSLでの色指定(直感的で調整しやすい)
|
218
|
+
directory: {hsl: [220, 80, 60]}, # 青系でディレクトリ
|
219
|
+
file: {hsl: [0, 0, 90]}, # 薄いグレーで通常ファイル
|
220
|
+
executable: {hsl: [120, 70, 50]}, # 緑系で実行ファイル
|
221
|
+
selected: {hsl: [50, 90, 70]}, # 黄色で選択項目
|
222
|
+
preview: {hsl: [180, 60, 65]}, # シアンでプレビュー
|
223
|
+
|
224
|
+
# 他の形式も併用可能
|
225
|
+
# directory: :blue, # シンボル
|
226
|
+
# file: {rgb: [200, 200, 200]}, # RGB
|
227
|
+
# executable: {hex: "#00aa00"}, # HEX
|
228
|
+
}
|
229
|
+
```
|
230
|
+
|
231
|
+
#### HSLカラーモデルについて
|
232
|
+
|
233
|
+
- **色相(Hue)**: 0-360度(0=赤、120=緑、240=青)
|
234
|
+
- **彩度(Saturation)**: 0-100%(0=グレー、100=鮮やか)
|
235
|
+
- **明度(Lightness)**: 0-100%(0=黒、50=標準、100=白)
|
236
|
+
|
237
|
+
#### 設定可能な項目
|
238
|
+
|
239
|
+
- `directory`: ディレクトリの色
|
240
|
+
- `file`: 通常ファイルの色
|
241
|
+
- `executable`: 実行可能ファイルの色
|
242
|
+
- `selected`: 選択中の項目の色
|
243
|
+
- `preview`: プレビューパネルの色
|
244
|
+
|
245
|
+
## 開発
|
246
|
+
|
247
|
+
### 必要な環境
|
248
|
+
|
249
|
+
- Ruby 2.7.0以上
|
250
|
+
- io-console, pastel, tty-cursor, tty-screen gems
|
251
|
+
|
252
|
+
### 開発版の実行
|
253
|
+
|
254
|
+
```bash
|
255
|
+
git clone https://github.com/masisz/beniya
|
256
|
+
cd beniya
|
257
|
+
bundle install
|
258
|
+
./exe/beniya
|
259
|
+
```
|
260
|
+
|
261
|
+
### テスト実行
|
262
|
+
|
263
|
+
```bash
|
264
|
+
bundle exec rake test
|
265
|
+
```
|
266
|
+
|
267
|
+
## 対応プラットフォーム
|
268
|
+
|
269
|
+
- **macOS**: ネイティブサポート
|
270
|
+
- **Linux**: ネイティブサポート
|
271
|
+
- **Windows**: 基本機能をサポート
|
272
|
+
|
273
|
+
## ライセンス
|
274
|
+
|
275
|
+
MIT License
|
276
|
+
|
277
|
+
## 貢献
|
278
|
+
|
279
|
+
バグ報告や機能リクエストは[GitHub Issues](https://github.com/masisz/beniya/issues)でお願いします。
|
280
|
+
|
281
|
+
プルリクエストも歓迎です!
|
282
|
+
|
283
|
+
### 開発ガイドライン
|
284
|
+
|
285
|
+
1. 既存のコードスタイルと規約に従う
|
286
|
+
2. 新機能にはテストを追加する
|
287
|
+
3. 必要に応じてドキュメントを更新する
|
288
|
+
4. 可能であれば複数のプラットフォームでテストする
|
data/README_EN.md
ADDED
@@ -0,0 +1,289 @@
|
|
1
|
+
# beniya
|
2
|
+
|
3
|
+
A terminal-based file manager written in Ruby
|
4
|
+
|
5
|
+
[日本語版](./README.md) | **English**
|
6
|
+
|
7
|
+
## Overview
|
8
|
+
|
9
|
+
beniya is a terminal-based file manager inspired by Yazi. It's implemented in Ruby with plugin support, providing lightweight and fast operations for file browsing, management, and searching.
|
10
|
+
|
11
|
+
## Features
|
12
|
+
|
13
|
+
- **Lightweight & Simple**: A lightweight file manager written in Ruby
|
14
|
+
- **Intuitive Operation**: Vim-like key bindings
|
15
|
+
- **File Preview**: View text file contents on the fly
|
16
|
+
- **Real-time Filter**: Filter files by name using Space key
|
17
|
+
- **Advanced Search**: Powerful search using fzf and rga
|
18
|
+
- **Multi-platform**: Runs on macOS, Linux, and Windows
|
19
|
+
- **External Editor Integration**: Open files with your favorite editor
|
20
|
+
- **Multi-language Support**: English and Japanese interface
|
21
|
+
- **Health Check**: System dependency verification
|
22
|
+
|
23
|
+
## Installation
|
24
|
+
|
25
|
+
```bash
|
26
|
+
gem install beniya
|
27
|
+
```
|
28
|
+
|
29
|
+
Or add it to your Gemfile:
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
gem 'beniya'
|
33
|
+
```
|
34
|
+
|
35
|
+
## Usage
|
36
|
+
|
37
|
+
### Basic Launch
|
38
|
+
|
39
|
+
```bash
|
40
|
+
beniya # Launch in current directory
|
41
|
+
beniya /path/to # Launch in specified directory
|
42
|
+
```
|
43
|
+
|
44
|
+
### Health Check
|
45
|
+
|
46
|
+
```bash
|
47
|
+
beniya -c # Check system dependencies
|
48
|
+
beniya --check-health # Same as above
|
49
|
+
beniya --help # Show help message
|
50
|
+
```
|
51
|
+
|
52
|
+
### Key Bindings
|
53
|
+
|
54
|
+
#### Basic Navigation
|
55
|
+
|
56
|
+
| Key | Function |
|
57
|
+
| ------------- | ----------------------------- |
|
58
|
+
| `j` | Move down |
|
59
|
+
| `k` | Move up |
|
60
|
+
| `h` | Move to parent directory |
|
61
|
+
| `l` / `Enter` | Enter directory / Select file |
|
62
|
+
|
63
|
+
#### Quick Navigation
|
64
|
+
|
65
|
+
| Key | Function |
|
66
|
+
| --- | ---------------------- |
|
67
|
+
| `g` | Move to top of list |
|
68
|
+
| `G` | Move to bottom of list |
|
69
|
+
|
70
|
+
#### File Operations
|
71
|
+
|
72
|
+
| Key | Function |
|
73
|
+
| --- | --------------------------------------- |
|
74
|
+
| `o` | Open selected file with external editor |
|
75
|
+
| `e` | Open current directory in file explorer |
|
76
|
+
| `r` | Refresh directory contents |
|
77
|
+
|
78
|
+
#### Real-time Filter
|
79
|
+
|
80
|
+
| Key | Function |
|
81
|
+
| ----------- | -------------------------------------- |
|
82
|
+
| `Space` | Start filter mode / Re-edit filter |
|
83
|
+
| Text input | Filter files by name (in filter mode) |
|
84
|
+
| `Enter` | Keep filter and return to normal mode |
|
85
|
+
| `ESC` | Clear filter and return to normal mode |
|
86
|
+
| `Backspace` | Delete character (in filter mode) |
|
87
|
+
|
88
|
+
#### Search Functions
|
89
|
+
|
90
|
+
| Key | Function |
|
91
|
+
| --- | ---------------------------------------- |
|
92
|
+
| `/` | File name search with fzf (with preview) |
|
93
|
+
| `f` | File content search with rga |
|
94
|
+
|
95
|
+
#### System Operations
|
96
|
+
|
97
|
+
| Key | Function |
|
98
|
+
| --- | ----------- |
|
99
|
+
| `q` | Quit beniya |
|
100
|
+
|
101
|
+
### Filter Feature
|
102
|
+
|
103
|
+
#### Real-time Filter (`Space`)
|
104
|
+
|
105
|
+
- **Start Filter**: Press `Space` to enter filter mode
|
106
|
+
- **Text Input Filtering**: Supports Japanese, English, numbers, and symbols
|
107
|
+
- **Real-time Updates**: Display updates with each character typed
|
108
|
+
- **Keep Filter**: Press `Enter` to maintain filter while returning to normal operations
|
109
|
+
- **Clear Filter**: Press `ESC` to clear filter and return to normal display
|
110
|
+
- **Re-edit**: Press `Space` again while filter is active to re-edit
|
111
|
+
- **Character Deletion**: Use `Backspace` to delete characters, auto-clear when empty
|
112
|
+
|
113
|
+
#### Usage Example
|
114
|
+
|
115
|
+
```
|
116
|
+
1. Space → Start filter mode
|
117
|
+
2. ".rb" → Show only Ruby files
|
118
|
+
3. Enter → Keep filter, return to normal operations
|
119
|
+
4. j/k → Navigate within filtered results
|
120
|
+
5. Space → Re-edit filter
|
121
|
+
6. ESC → Clear filter
|
122
|
+
```
|
123
|
+
|
124
|
+
### Search Features
|
125
|
+
|
126
|
+
#### File Name Search (`/`)
|
127
|
+
|
128
|
+
- Interactive file name search using `fzf`
|
129
|
+
- Real-time preview display
|
130
|
+
- Selected files automatically open in external editor
|
131
|
+
|
132
|
+
#### File Content Search (`f`)
|
133
|
+
|
134
|
+
- Advanced file content search using `rga` (ripgrep-all)
|
135
|
+
- Searches PDFs, Word documents, text in images, and more
|
136
|
+
- Filter results with fzf and jump to specific lines
|
137
|
+
|
138
|
+
### Required External Tools
|
139
|
+
|
140
|
+
The following tools are required for search functionality:
|
141
|
+
|
142
|
+
```bash
|
143
|
+
# macOS (Homebrew)
|
144
|
+
brew install fzf rga
|
145
|
+
|
146
|
+
# Ubuntu/Debian
|
147
|
+
apt install fzf
|
148
|
+
# rga requires separate installation: https://github.com/phiresky/ripgrep-all
|
149
|
+
|
150
|
+
# Other Linux distributions
|
151
|
+
# Installation via package manager or manual installation required
|
152
|
+
```
|
153
|
+
|
154
|
+
## Configuration
|
155
|
+
|
156
|
+
### Language Settings
|
157
|
+
|
158
|
+
beniya supports multiple languages. You can configure the language in several ways:
|
159
|
+
|
160
|
+
#### Environment Variable (Recommended)
|
161
|
+
|
162
|
+
```bash
|
163
|
+
# Japanese
|
164
|
+
export BENIYA_LANG=ja
|
165
|
+
|
166
|
+
# English (default)
|
167
|
+
export BENIYA_LANG=en
|
168
|
+
```
|
169
|
+
|
170
|
+
#### Configuration File
|
171
|
+
|
172
|
+
```bash
|
173
|
+
# Create config directory
|
174
|
+
mkdir -p ~/.config/beniya
|
175
|
+
|
176
|
+
# Copy example config
|
177
|
+
cp config_example.rb ~/.config/beniya/config.rb
|
178
|
+
|
179
|
+
# Edit the config file
|
180
|
+
# Set LANGUAGE = 'ja' for Japanese or LANGUAGE = 'en' for English
|
181
|
+
```
|
182
|
+
|
183
|
+
### Priority Order
|
184
|
+
|
185
|
+
1. Configuration file (`~/.config/beniya/config.rb`)
|
186
|
+
2. `BENIYA_LANG` environment variable
|
187
|
+
3. Default (English)
|
188
|
+
|
189
|
+
### Color Configuration (Customization)
|
190
|
+
|
191
|
+
beniya allows you to customize colors for file types and UI elements. It supports intuitive color specification using the HSL color model.
|
192
|
+
|
193
|
+
#### Supported Color Formats
|
194
|
+
|
195
|
+
```ruby
|
196
|
+
# HSL (Hue, Saturation, Lightness) - Recommended format
|
197
|
+
{hsl: [220, 80, 60]} # Hue 220°, Saturation 80%, Lightness 60%
|
198
|
+
|
199
|
+
# RGB (Red, Green, Blue)
|
200
|
+
{rgb: [100, 150, 200]}
|
201
|
+
|
202
|
+
# HEX (Hexadecimal)
|
203
|
+
{hex: "#6496c8"}
|
204
|
+
|
205
|
+
# Traditional symbols
|
206
|
+
:blue, :red, :green, :yellow, :cyan, :magenta, :white, :black
|
207
|
+
|
208
|
+
# ANSI color codes
|
209
|
+
"34" or 34
|
210
|
+
```
|
211
|
+
|
212
|
+
#### Configuration Example
|
213
|
+
|
214
|
+
```ruby
|
215
|
+
# ~/.config/beniya/config.rb
|
216
|
+
COLORS = {
|
217
|
+
# HSL color specification (intuitive and easy to adjust)
|
218
|
+
directory: {hsl: [220, 80, 60]}, # Blue-ish for directories
|
219
|
+
file: {hsl: [0, 0, 90]}, # Light gray for regular files
|
220
|
+
executable: {hsl: [120, 70, 50]}, # Green-ish for executable files
|
221
|
+
selected: {hsl: [50, 90, 70]}, # Yellow for selected items
|
222
|
+
preview: {hsl: [180, 60, 65]}, # Cyan for preview panel
|
223
|
+
|
224
|
+
# You can also mix different formats
|
225
|
+
# directory: :blue, # Symbol
|
226
|
+
# file: {rgb: [200, 200, 200]}, # RGB
|
227
|
+
# executable: {hex: "#00aa00"}, # HEX
|
228
|
+
}
|
229
|
+
```
|
230
|
+
|
231
|
+
#### About HSL Color Model
|
232
|
+
|
233
|
+
- **Hue**: 0-360 degrees (0=red, 120=green, 240=blue)
|
234
|
+
- **Saturation**: 0-100% (0=gray, 100=vivid)
|
235
|
+
- **Lightness**: 0-100% (0=black, 50=normal, 100=white)
|
236
|
+
|
237
|
+
#### Configurable Items
|
238
|
+
|
239
|
+
- `directory`: Directory color
|
240
|
+
- `file`: Regular file color
|
241
|
+
- `executable`: Executable file color
|
242
|
+
- `selected`: Selected item color
|
243
|
+
- `preview`: Preview panel color
|
244
|
+
|
245
|
+
## Development
|
246
|
+
|
247
|
+
### Requirements
|
248
|
+
|
249
|
+
- Ruby 2.7.0 or later
|
250
|
+
- Required gems: io-console, pastel, tty-cursor, tty-screen
|
251
|
+
|
252
|
+
### Running Development Version
|
253
|
+
|
254
|
+
```bash
|
255
|
+
git clone https://github.com/masisz/beniya
|
256
|
+
cd beniya
|
257
|
+
bundle install
|
258
|
+
./exe/beniya
|
259
|
+
```
|
260
|
+
|
261
|
+
### Running Tests
|
262
|
+
|
263
|
+
```bash
|
264
|
+
bundle exec rake test
|
265
|
+
```
|
266
|
+
|
267
|
+
## Supported Platforms
|
268
|
+
|
269
|
+
- **macOS**: Native support
|
270
|
+
- **Linux**: Native support
|
271
|
+
- **Windows**: Basic functionality supported
|
272
|
+
|
273
|
+
## Contributing
|
274
|
+
|
275
|
+
Bug reports and feature requests are welcome at [GitHub Issues](https://github.com/masisz/beniya/issues).
|
276
|
+
|
277
|
+
Pull requests are also welcome!
|
278
|
+
|
279
|
+
### Development Guidelines
|
280
|
+
|
281
|
+
1. Follow existing code style and conventions
|
282
|
+
2. Add tests for new features
|
283
|
+
3. Update documentation as needed
|
284
|
+
4. Test on multiple platforms when possible
|
285
|
+
|
286
|
+
## License
|
287
|
+
|
288
|
+
MIT License
|
289
|
+
|
data/beniya.gemspec
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'lib/beniya/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = 'beniya'
|
7
|
+
spec.version = Beniya::VERSION
|
8
|
+
spec.authors = ['beniya']
|
9
|
+
spec.email = ['masisz.1567@gmail.com']
|
10
|
+
|
11
|
+
spec.summary = 'Ruby file manager'
|
12
|
+
spec.description = 'A terminal-based file manager inspired by Yazi, written in Ruby with plugin support'
|
13
|
+
spec.homepage = 'https://github.com/masisz/beniya'
|
14
|
+
spec.license = 'MIT'
|
15
|
+
spec.required_ruby_version = '>= 2.7.0'
|
16
|
+
|
17
|
+
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
|
18
|
+
spec.metadata['homepage_uri'] = spec.homepage
|
19
|
+
spec.metadata['source_code_uri'] = 'https://github.com/masisz/beniya'
|
20
|
+
spec.metadata['changelog_uri'] = 'https://github.com/masisz/beniya/blob/main/CHANGELOG.md'
|
21
|
+
|
22
|
+
spec.files = Dir.chdir(__dir__) do
|
23
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
24
|
+
(File.expand_path(f) == __FILE__) ||
|
25
|
+
f.start_with?(*%w[test/ spec/ features/ .git .circleci appveyor Gemfile])
|
26
|
+
end
|
27
|
+
end
|
28
|
+
spec.bindir = 'bin'
|
29
|
+
spec.executables = spec.files.grep(%r{\Abin/}) { |f| File.basename(f) }
|
30
|
+
spec.require_paths = ['lib']
|
31
|
+
|
32
|
+
spec.add_dependency 'io-console', '~> 0.6'
|
33
|
+
spec.add_dependency 'pastel', '~> 0.8'
|
34
|
+
spec.add_dependency 'tty-cursor', '~> 0.7'
|
35
|
+
spec.add_dependency 'tty-screen', '~> 0.8'
|
36
|
+
|
37
|
+
spec.add_development_dependency 'minitest', '~> 5.0'
|
38
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
39
|
+
spec.add_development_dependency 'rubocop', '~> 1.21'
|
40
|
+
end
|
data/bin/beniya
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require_relative '../lib/beniya'
|
5
|
+
|
6
|
+
# コマンドライン引数の処理
|
7
|
+
if ARGV.include?('--check-health') || ARGV.include?('-c')
|
8
|
+
# ヘルスチェック実行
|
9
|
+
health_checker = Beniya::HealthChecker.new
|
10
|
+
success = health_checker.run_check
|
11
|
+
exit(success ? 0 : 1)
|
12
|
+
elsif ARGV.include?('--help')
|
13
|
+
puts "beniya - Terminal-based file manager"
|
14
|
+
puts ""
|
15
|
+
puts "Usage:"
|
16
|
+
puts " beniya [DIRECTORY] Start beniya in specified directory"
|
17
|
+
puts " beniya -c, --check-health Check system dependencies"
|
18
|
+
puts " beniya --help Show this help message"
|
19
|
+
puts ""
|
20
|
+
puts "Examples:"
|
21
|
+
puts " beniya # Start in current directory"
|
22
|
+
puts " beniya /path/to/dir # Start in specific directory"
|
23
|
+
puts " beniya -c # Check if all dependencies are available"
|
24
|
+
exit(0)
|
25
|
+
else
|
26
|
+
start_directory = ARGV[0] || Dir.pwd
|
27
|
+
|
28
|
+
# アプリケーション開始
|
29
|
+
app = Beniya::Application.new(start_directory)
|
30
|
+
app.run
|
31
|
+
end
|