rufio 0.9.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/CHANGELOG.md +188 -0
- data/CHANGELOG_v0.4.0.md +146 -0
- data/CHANGELOG_v0.5.0.md +26 -0
- data/CHANGELOG_v0.6.0.md +182 -0
- data/CHANGELOG_v0.7.0.md +280 -0
- data/CHANGELOG_v0.8.0.md +267 -0
- data/CHANGELOG_v0.9.0.md +279 -0
- data/README.md +631 -0
- data/README_EN.md +561 -0
- data/Rakefile +156 -0
- data/bin/rufio +34 -0
- data/config_example.rb +88 -0
- data/docs/PLUGIN_GUIDE.md +431 -0
- data/docs/plugin_example.rb +119 -0
- data/lib/rufio/application.rb +32 -0
- data/lib/rufio/bookmark.rb +115 -0
- data/lib/rufio/bookmark_manager.rb +173 -0
- data/lib/rufio/color_helper.rb +150 -0
- data/lib/rufio/command_mode.rb +72 -0
- data/lib/rufio/command_mode_ui.rb +168 -0
- data/lib/rufio/config.rb +199 -0
- data/lib/rufio/config_loader.rb +110 -0
- data/lib/rufio/dialog_renderer.rb +127 -0
- data/lib/rufio/directory_listing.rb +113 -0
- data/lib/rufio/file_opener.rb +140 -0
- data/lib/rufio/file_operations.rb +231 -0
- data/lib/rufio/file_preview.rb +200 -0
- data/lib/rufio/filter_manager.rb +114 -0
- data/lib/rufio/health_checker.rb +246 -0
- data/lib/rufio/keybind_handler.rb +828 -0
- data/lib/rufio/logger.rb +103 -0
- data/lib/rufio/plugin.rb +89 -0
- data/lib/rufio/plugin_config.rb +59 -0
- data/lib/rufio/plugin_manager.rb +84 -0
- data/lib/rufio/plugins/file_operations.rb +44 -0
- data/lib/rufio/selection_manager.rb +79 -0
- data/lib/rufio/terminal_ui.rb +630 -0
- data/lib/rufio/text_utils.rb +108 -0
- data/lib/rufio/version.rb +5 -0
- data/lib/rufio/zoxide_integration.rb +188 -0
- data/lib/rufio.rb +33 -0
- data/publish_gem.zsh +131 -0
- data/rufio.gemspec +40 -0
- data/test_delete/test1.txt +1 -0
- data/test_delete/test2.txt +1 -0
- metadata +189 -0
data/README.md
ADDED
|
@@ -0,0 +1,631 @@
|
|
|
1
|
+
# rufio
|
|
2
|
+
|
|
3
|
+
Ruby製のターミナルベースファイルマネージャー
|
|
4
|
+
|
|
5
|
+
**日本語** | [English](./README_EN.md)
|
|
6
|
+
|
|
7
|
+
## 概要
|
|
8
|
+
|
|
9
|
+
rufioは、Yaziにインスパイアされたターミナル上で動作するファイルマネージャーです。Rubyで実装されており、プラグインサポートを備えています。軽量で高速な操作性を提供し、ファイルの閲覧・管理・検索機能を備えています。
|
|
10
|
+
|
|
11
|
+
## 特徴
|
|
12
|
+
|
|
13
|
+
- **軽量でシンプル**: Rubyで書かれた軽量なファイルマネージャー
|
|
14
|
+
- **直感的な操作**: Vimライクなキーバインド
|
|
15
|
+
- **プラグインシステム**: 拡張可能なプラグインアーキテクチャ
|
|
16
|
+
- **コマンドモード**: Tab補完とフローティングウィンドウを備えた強力なコマンドシステム
|
|
17
|
+
- **ファイルプレビュー**: テキストファイルの内容をその場で確認
|
|
18
|
+
- **ファイル選択・操作**: 複数ファイルの選択、移動、コピー、削除が可能
|
|
19
|
+
- **ベースディレクトリ操作**: 起動ディレクトリへの一括ファイル移動・コピー
|
|
20
|
+
- **リアルタイムフィルター**: sキーでファイル名の絞り込み表示
|
|
21
|
+
- **高度な検索機能**: fzfとrgaを使った強力な検索
|
|
22
|
+
- **マルチプラットフォーム**: macOS、Linux、Windowsで動作
|
|
23
|
+
- **外部エディタ連携**: お気に入りのエディタでファイルを開く
|
|
24
|
+
- **ヘルスチェック**: システム依存関係の確認機能
|
|
25
|
+
|
|
26
|
+
## インストール
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
gem install rufio
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
または、Gemfileに追加してください:
|
|
33
|
+
|
|
34
|
+
```ruby
|
|
35
|
+
gem 'rufio'
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## 使い方
|
|
39
|
+
|
|
40
|
+
### 基本的な起動方法
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
rufio # カレントディレクトリで起動
|
|
44
|
+
rufio /path/to # 指定したディレクトリで起動
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### ヘルスチェック
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
rufio -c # システム依存関係をチェック
|
|
51
|
+
rufio --check-health # 上記と同じ
|
|
52
|
+
rufio --help # ヘルプメッセージを表示
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### キーバインド一覧
|
|
56
|
+
|
|
57
|
+
#### 基本ナビゲーション
|
|
58
|
+
|
|
59
|
+
| キー | 機能 |
|
|
60
|
+
| ------------- | ---------------------------------- |
|
|
61
|
+
| `j` | 下に移動 |
|
|
62
|
+
| `k` | 上に移動 |
|
|
63
|
+
| `h` | 親ディレクトリに移動 |
|
|
64
|
+
| `l` / `Enter` | ディレクトリに入る・ファイルを選択 |
|
|
65
|
+
|
|
66
|
+
#### 高速ナビゲーション
|
|
67
|
+
|
|
68
|
+
| キー | 機能 |
|
|
69
|
+
| ---- | ------------------ |
|
|
70
|
+
| `g` | リストの先頭に移動 |
|
|
71
|
+
| `G` | リストの末尾に移動 |
|
|
72
|
+
|
|
73
|
+
#### ファイル操作
|
|
74
|
+
|
|
75
|
+
| キー | 機能 |
|
|
76
|
+
| ---- | -------------------------------------------------- |
|
|
77
|
+
| `o` | 選択中のファイルを外部エディタで開く |
|
|
78
|
+
| `e` | 現在のディレクトリをファイルエクスプローラーで開く |
|
|
79
|
+
| `r` | ディレクトリ内容を更新 |
|
|
80
|
+
| `a` | 新しいファイルを作成 |
|
|
81
|
+
| `A` | 新しいディレクトリを作成 |
|
|
82
|
+
|
|
83
|
+
#### ファイル選択・操作
|
|
84
|
+
|
|
85
|
+
| キー | 機能 |
|
|
86
|
+
| ------- | ---------------------------------------------------- |
|
|
87
|
+
| `Space` | ファイル・ディレクトリを選択・選択解除(複数選択可) |
|
|
88
|
+
| `m` | 選択したアイテムをベースディレクトリに移動 |
|
|
89
|
+
| `p` | 選択したアイテムをベースディレクトリにコピー |
|
|
90
|
+
| `x` | 選択したアイテムを削除 |
|
|
91
|
+
|
|
92
|
+
#### リアルタイムフィルター機能
|
|
93
|
+
|
|
94
|
+
| キー | 機能 |
|
|
95
|
+
| ----------- | ------------------------------------------ |
|
|
96
|
+
| `f` | フィルターモード開始・再編集 |
|
|
97
|
+
| 文字入力 | ファイル名で絞り込み(フィルターモード中) |
|
|
98
|
+
| `Enter` | フィルター維持で通常モードに戻る |
|
|
99
|
+
| `ESC` | フィルターをクリアして通常モードに戻る |
|
|
100
|
+
| `Backspace` | 文字削除(フィルターモード中) |
|
|
101
|
+
|
|
102
|
+
#### 検索機能
|
|
103
|
+
|
|
104
|
+
| キー | 機能 |
|
|
105
|
+
| ---- | ----------------------------------------- |
|
|
106
|
+
| `s` | fzfによるファイル名検索(プレビュー付き) |
|
|
107
|
+
| `F` | rgaによるファイル内容検索 |
|
|
108
|
+
|
|
109
|
+
#### ブックマーク機能
|
|
110
|
+
|
|
111
|
+
| キー | 機能 |
|
|
112
|
+
| --------- | ---------------------------- |
|
|
113
|
+
| `b` | ブックマークメニューを表示 |
|
|
114
|
+
| `1`-`9` | 対応する番号のブックマークに移動 |
|
|
115
|
+
|
|
116
|
+
#### zoxide連携機能
|
|
117
|
+
|
|
118
|
+
| キー | 機能 |
|
|
119
|
+
| ---- | ---------------------------------- |
|
|
120
|
+
| `z` | zoxide履歴からディレクトリを選択移動 |
|
|
121
|
+
|
|
122
|
+
#### コマンドモード
|
|
123
|
+
|
|
124
|
+
| キー | 機能 |
|
|
125
|
+
| ------ | ---------------------------------------- |
|
|
126
|
+
| `:` | コマンドモードを起動 |
|
|
127
|
+
| `Tab` | コマンド補完(コマンドモード中) |
|
|
128
|
+
| `Enter`| コマンドを実行(コマンドモード中) |
|
|
129
|
+
| `ESC` | コマンドモードをキャンセル(コマンドモード中) |
|
|
130
|
+
|
|
131
|
+
#### システム操作
|
|
132
|
+
|
|
133
|
+
| キー | 機能 |
|
|
134
|
+
| ---- | ------------ |
|
|
135
|
+
| `q` | rufioを終了 |
|
|
136
|
+
|
|
137
|
+
### ファイル選択・操作機能の詳細
|
|
138
|
+
|
|
139
|
+
#### ファイル・ディレクトリ選択 (`Space`)
|
|
140
|
+
|
|
141
|
+
- **選択・選択解除**: `Space`キーでファイルやディレクトリを選択・選択解除
|
|
142
|
+
- **複数選択**: 複数のファイルやディレクトリを同時に選択可能
|
|
143
|
+
- **視覚的表示**: 選択されたアイテムは✓マークと緑色の背景で表示
|
|
144
|
+
- **選択状態の表示**: 画面上部2行目に選択中のアイテム数が表示
|
|
145
|
+
|
|
146
|
+
#### ベースディレクトリ操作
|
|
147
|
+
|
|
148
|
+
rufio起動時のディレクトリが**ベースディレクトリ**として設定され、選択したファイルの移動・コピー先となります。
|
|
149
|
+
|
|
150
|
+
| 操作 | キー | 機能 |
|
|
151
|
+
| -------- | ---- | ---------------------------------------- |
|
|
152
|
+
| **移動** | `m` | 選択したアイテムをベースディレクトリに移動 |
|
|
153
|
+
| **コピー** | `p` | 選択したアイテムをベースディレクトリにコピー |
|
|
154
|
+
| **削除** | `x` | 選択したアイテムを削除 |
|
|
155
|
+
|
|
156
|
+
#### 削除操作の詳細
|
|
157
|
+
|
|
158
|
+
- **フローティングダイアログ確認**: モダンなフローティングウィンドウで明確な選択肢を表示
|
|
159
|
+
- **視覚的フィードバック**: 赤い枠線と警告色で注意を引く
|
|
160
|
+
- **安全な操作**: 削除前のダブルチェック
|
|
161
|
+
- **包括的エラーハンドリング**: 削除失敗時の詳細なエラーメッセージ
|
|
162
|
+
- **リアルタイム結果表示**: フローティングダイアログで成功/失敗数を表示
|
|
163
|
+
- **ファイルシステム検証**: 成功報告前に実際の削除を確認
|
|
164
|
+
- **デバッグサポート**: BENIYA_DEBUG=1でオプションのデバッグログ出力
|
|
165
|
+
|
|
166
|
+
#### 操作の流れ
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
1. Space → ファイル・ディレクトリを選択(複数選択可)
|
|
170
|
+
2. 操作キーを選択:
|
|
171
|
+
- m → ベースディレクトリに移動
|
|
172
|
+
- p → ベースディレクトリにコピー
|
|
173
|
+
- x → 削除
|
|
174
|
+
3. フローティングダイアログ → Y/Nで確認、ESCでキャンセル
|
|
175
|
+
4. 結果表示 → フローティングウィンドウで操作結果を確認
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
#### 安全機能
|
|
179
|
+
|
|
180
|
+
- **フローティング確認ダイアログ**: 確認用のモダンなフローティングウィンドウインターフェース
|
|
181
|
+
- **視覚警告システム**: 危険な操作時の赤い枠線と警告色
|
|
182
|
+
- **重複チェック**: 同名ファイルがある場合は自動でスキップ
|
|
183
|
+
- **エラーハンドリング**: 権限不足などのエラーに適切に対応
|
|
184
|
+
- **操作ログ**: フローティングダイアログで処理結果を詳細表示
|
|
185
|
+
- **削除後検証**: ファイルシステムから実際に削除されたことを確認
|
|
186
|
+
|
|
187
|
+
### フィルター機能の詳細
|
|
188
|
+
|
|
189
|
+
#### リアルタイムフィルター (`f`)
|
|
190
|
+
|
|
191
|
+
- **フィルター開始**: `f`キーを押してフィルターモードに入る
|
|
192
|
+
- **文字入力による絞り込み**: 日本語・英数字・記号に対応
|
|
193
|
+
- **リアルタイム更新**: 文字を入力するたびに表示が更新される
|
|
194
|
+
- **フィルター維持**: `Enter`キーでフィルターを保持したまま通常操作に戻る
|
|
195
|
+
- **フィルタークリア**: `ESC`キーでフィルターをクリアして通常表示に戻る
|
|
196
|
+
- **再編集**: フィルター適用中に`f`キーで再編集モード
|
|
197
|
+
- **文字削除**: `Backspace`で文字削除、全削除時は自動でフィルタークリア
|
|
198
|
+
|
|
199
|
+
#### 使用例
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
1. f → フィルターモード開始
|
|
203
|
+
2. ".rb" → Rubyファイルのみ表示
|
|
204
|
+
3. Enter → フィルター維持で通常操作
|
|
205
|
+
4. j/k → フィルター結果内をナビゲーション
|
|
206
|
+
5. f → フィルター再編集
|
|
207
|
+
6. ESC → フィルタークリア
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### 検索機能の詳細
|
|
211
|
+
|
|
212
|
+
#### ファイル名検索 (`s`)
|
|
213
|
+
|
|
214
|
+
- `fzf`を使用したインタラクティブなファイル名検索
|
|
215
|
+
- リアルタイムプレビュー表示
|
|
216
|
+
- 選択したファイルは自動で外部エディタで開かれる
|
|
217
|
+
|
|
218
|
+
#### ファイル内容検索 (`F`)
|
|
219
|
+
|
|
220
|
+
- `rga`(ripgrep-all)を使用した高度なファイル内容検索
|
|
221
|
+
- PDF、Word文書、画像内テキストなども検索対象
|
|
222
|
+
- 検索結果をfzfで絞り込み、該当行にジャンプしてファイルを開く
|
|
223
|
+
|
|
224
|
+
### ブックマーク機能の詳細
|
|
225
|
+
|
|
226
|
+
#### ブックマーク操作 (`b`)
|
|
227
|
+
|
|
228
|
+
- **ブックマーク追加**: `[A]` - 現在のディレクトリをブックマークに追加
|
|
229
|
+
- **ブックマーク一覧**: `[L]` - 登録済みブックマークの一覧表示
|
|
230
|
+
- **ブックマーク削除**: `[R]` - ブックマークを削除
|
|
231
|
+
- **番号ジャンプ**: `1-9` - 対応する番号のブックマークに直接移動
|
|
232
|
+
|
|
233
|
+
#### 高速ナビゲーション (`1`-`9`)
|
|
234
|
+
|
|
235
|
+
- ブックマークメニューを経由せず、数字キーでブックマークに直接ジャンプ
|
|
236
|
+
- 最大9個のブックマークをサポート
|
|
237
|
+
- ブックマーク情報は画面上部に表示
|
|
238
|
+
|
|
239
|
+
#### ブックマークの永続化
|
|
240
|
+
|
|
241
|
+
- ブックマーク情報は `~/.config/rufio/bookmarks.json` に自動保存
|
|
242
|
+
- rufio再起動後もブックマーク情報が保持される
|
|
243
|
+
- JSONファイルを直接編集することも可能
|
|
244
|
+
|
|
245
|
+
### zoxide連携機能の詳細
|
|
246
|
+
|
|
247
|
+
#### zoxide履歴移動 (`z`)
|
|
248
|
+
|
|
249
|
+
- **スマート履歴**: zoxideが記録したディレクトリ移動履歴を表示
|
|
250
|
+
- **フリークエンシー順**: よく使用するディレクトリほど上位に表示
|
|
251
|
+
- **インタラクティブ選択**: フローティングウィンドウで履歴を選択
|
|
252
|
+
- **高速ナビゲーション**: 数字キーで直接ディレクトリを選択
|
|
253
|
+
- **パス省略表示**: ホームディレクトリを`~`で表示し見やすく
|
|
254
|
+
|
|
255
|
+
#### 使用例
|
|
256
|
+
|
|
257
|
+
```
|
|
258
|
+
1. z → zoxide履歴メニューを表示
|
|
259
|
+
2. 1-20 → 表示された番号でディレクトリを選択
|
|
260
|
+
3. ESC → キャンセルして元の画面に戻る
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
#### zoxideについて
|
|
264
|
+
|
|
265
|
+
[zoxide](https://github.com/ajeetdsouza/zoxide)は、ディレクトリ移動履歴を学習するスマートなcdコマンドです。
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
# zoxideのインストール
|
|
269
|
+
# macOS (Homebrew)
|
|
270
|
+
brew install zoxide
|
|
271
|
+
|
|
272
|
+
# Ubuntu/Debian
|
|
273
|
+
apt install zoxide
|
|
274
|
+
|
|
275
|
+
# その他のインストール方法は公式ドキュメントを参照
|
|
276
|
+
# https://github.com/ajeetdsouza/zoxide#installation
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
#### 動作要件
|
|
280
|
+
|
|
281
|
+
- zoxideがシステムにインストールされている必要があります
|
|
282
|
+
- zoxideが無効な場合は適切なメッセージが表示されます
|
|
283
|
+
- 履歴が空の場合も適切にハンドリングされます
|
|
284
|
+
|
|
285
|
+
### コマンドモードの詳細
|
|
286
|
+
|
|
287
|
+
#### コマンドモードの起動 (`:`)
|
|
288
|
+
|
|
289
|
+
- `:`キーを押してコマンドモードを起動
|
|
290
|
+
- 画面最下部にコマンド入力欄が表示される
|
|
291
|
+
- プラグインが提供するコマンドを実行できる
|
|
292
|
+
|
|
293
|
+
#### Tab補完機能
|
|
294
|
+
|
|
295
|
+
- **インテリジェントな補完**: コマンド名の一部を入力して`Tab`キーを押すと自動補完
|
|
296
|
+
- **複数候補の処理**: 複数のコマンドが一致する場合は共通プレフィックスまで補完
|
|
297
|
+
- **単一候補の自動完成**: 一つだけマッチする場合は完全に補完される
|
|
298
|
+
- **リアルタイム更新**: 入力内容に応じて候補が動的に変化
|
|
299
|
+
|
|
300
|
+
#### フローティングウィンドウでの結果表示
|
|
301
|
+
|
|
302
|
+
- **視覚的フィードバック**: コマンド実行結果をモダンなフローティングウィンドウで表示
|
|
303
|
+
- **色分けされた結果**:
|
|
304
|
+
- **緑色のボーダー**: コマンドが正常に実行された場合
|
|
305
|
+
- **赤色のボーダー**: エラーまたは警告が発生した場合
|
|
306
|
+
- **中央配置**: 画面中央に自動的に配置され視認性が高い
|
|
307
|
+
- **自動サイズ調整**: 結果の内容に応じてウィンドウサイズが自動調整
|
|
308
|
+
- **簡単に閉じる**: 任意のキーを押すとウィンドウを閉じて通常操作に戻る
|
|
309
|
+
|
|
310
|
+
#### 使用例
|
|
311
|
+
|
|
312
|
+
```
|
|
313
|
+
1. : → コマンドモードを起動
|
|
314
|
+
2. "he" → コマンド名の一部を入力
|
|
315
|
+
3. Tab → 補完("hello", "help", "health"などが候補)
|
|
316
|
+
4. Enter → コマンドを実行
|
|
317
|
+
5. フローティングウィンドウで結果を確認
|
|
318
|
+
6. 任意のキーを押してウィンドウを閉じる
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
#### 利用可能なコマンド
|
|
322
|
+
|
|
323
|
+
コマンドはプラグインによって提供されます。プラグインシステムの詳細については後述の「プラグインシステム」セクションを参照してください。
|
|
324
|
+
|
|
325
|
+
### 必要な外部ツール
|
|
326
|
+
|
|
327
|
+
検索機能・履歴機能を使用するには、以下のツールが必要です:
|
|
328
|
+
|
|
329
|
+
```bash
|
|
330
|
+
# macOS (Homebrew)
|
|
331
|
+
brew install fzf rga zoxide
|
|
332
|
+
|
|
333
|
+
# Ubuntu/Debian
|
|
334
|
+
apt install fzf zoxide
|
|
335
|
+
# rgaは別途インストールが必要: https://github.com/phiresky/ripgrep-all
|
|
336
|
+
|
|
337
|
+
# その他のLinuxディストリビューション
|
|
338
|
+
# パッケージマネージャーまたは手動インストールが必要
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
#### 各ツールの用途
|
|
342
|
+
|
|
343
|
+
- **fzf**: ファイル名検索機能(`s`キー)
|
|
344
|
+
- **rga**: ファイル内容検索機能(`F`キー)
|
|
345
|
+
- **zoxide**: ディレクトリ履歴移動機能(`z`キー)
|
|
346
|
+
|
|
347
|
+
## 設定
|
|
348
|
+
|
|
349
|
+
### 色設定(カスタマイズ)
|
|
350
|
+
|
|
351
|
+
rufioではファイルタイプや UI 要素の色をカスタマイズできます。HSLカラーモデルによる直感的な色指定をサポートしています。
|
|
352
|
+
|
|
353
|
+
#### サポートされる色形式
|
|
354
|
+
|
|
355
|
+
```ruby
|
|
356
|
+
# HSL(色相・彩度・明度)- 推奨形式
|
|
357
|
+
{hsl: [220, 80, 60]} # 色相220度、彩度80%、明度60%
|
|
358
|
+
|
|
359
|
+
# RGB(赤・緑・青)
|
|
360
|
+
{rgb: [100, 150, 200]}
|
|
361
|
+
|
|
362
|
+
# HEX(16進数)
|
|
363
|
+
{hex: "#6496c8"}
|
|
364
|
+
|
|
365
|
+
# 従来のシンボル
|
|
366
|
+
:blue, :red, :green, :yellow, :cyan, :magenta, :white, :black
|
|
367
|
+
|
|
368
|
+
# ANSIカラーコード
|
|
369
|
+
"34" または 34
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
#### 設定例
|
|
373
|
+
|
|
374
|
+
```ruby
|
|
375
|
+
# ~/.config/rufio/config.rb
|
|
376
|
+
COLORS = {
|
|
377
|
+
# HSLでの色指定(直感的で調整しやすい)
|
|
378
|
+
directory: {hsl: [220, 80, 60]}, # 青系でディレクトリ
|
|
379
|
+
file: {hsl: [0, 0, 90]}, # 薄いグレーで通常ファイル
|
|
380
|
+
executable: {hsl: [120, 70, 50]}, # 緑系で実行ファイル
|
|
381
|
+
selected: {hsl: [50, 90, 70]}, # 黄色で選択項目
|
|
382
|
+
preview: {hsl: [180, 60, 65]}, # シアンでプレビュー
|
|
383
|
+
|
|
384
|
+
# 他の形式も併用可能
|
|
385
|
+
# directory: :blue, # シンボル
|
|
386
|
+
# file: {rgb: [200, 200, 200]}, # RGB
|
|
387
|
+
# executable: {hex: "#00aa00"}, # HEX
|
|
388
|
+
}
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
#### HSLカラーモデルについて
|
|
392
|
+
|
|
393
|
+
- **色相(Hue)**: 0-360度(0=赤、120=緑、240=青)
|
|
394
|
+
- **彩度(Saturation)**: 0-100%(0=グレー、100=鮮やか)
|
|
395
|
+
- **明度(Lightness)**: 0-100%(0=黒、50=標準、100=白)
|
|
396
|
+
|
|
397
|
+
#### 設定可能な項目
|
|
398
|
+
|
|
399
|
+
- `directory`: ディレクトリの色
|
|
400
|
+
- `file`: 通常ファイルの色
|
|
401
|
+
- `executable`: 実行可能ファイルの色
|
|
402
|
+
- `selected`: 選択中の項目の色
|
|
403
|
+
- `preview`: プレビューパネルの色
|
|
404
|
+
|
|
405
|
+
## プラグインシステム
|
|
406
|
+
|
|
407
|
+
rufioは拡張可能なプラグインシステムを備えており、独自の機能を簡単に追加できます。
|
|
408
|
+
|
|
409
|
+
### プラグインの配置場所
|
|
410
|
+
|
|
411
|
+
#### 1. 本体同梱プラグイン
|
|
412
|
+
```
|
|
413
|
+
lib/rufio/plugins/*.rb
|
|
414
|
+
```
|
|
415
|
+
rufioに標準で含まれるプラグイン。外部gem依存なしの基本機能を提供。
|
|
416
|
+
|
|
417
|
+
#### 2. ユーザープラグイン
|
|
418
|
+
```
|
|
419
|
+
~/.rufio/plugins/*.rb
|
|
420
|
+
```
|
|
421
|
+
ユーザーが自由に追加できるプラグイン。GitHub GistやrawURLから取得可能。
|
|
422
|
+
|
|
423
|
+
### プラグインの作成方法
|
|
424
|
+
|
|
425
|
+
#### シンプルなプラグイン例
|
|
426
|
+
|
|
427
|
+
```ruby
|
|
428
|
+
# ~/.rufio/plugins/hello.rb
|
|
429
|
+
module Rufio
|
|
430
|
+
module Plugins
|
|
431
|
+
class Hello < Plugin
|
|
432
|
+
def name
|
|
433
|
+
'Hello'
|
|
434
|
+
end
|
|
435
|
+
|
|
436
|
+
def description
|
|
437
|
+
'シンプルな挨拶プラグイン'
|
|
438
|
+
end
|
|
439
|
+
|
|
440
|
+
def commands
|
|
441
|
+
{
|
|
442
|
+
hello: method(:say_hello)
|
|
443
|
+
}
|
|
444
|
+
end
|
|
445
|
+
|
|
446
|
+
private
|
|
447
|
+
|
|
448
|
+
def say_hello
|
|
449
|
+
"Hello from rufio!"
|
|
450
|
+
end
|
|
451
|
+
end
|
|
452
|
+
end
|
|
453
|
+
end
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
**プラグインの使い方:**
|
|
457
|
+
|
|
458
|
+
1. rufioを起動
|
|
459
|
+
2. `:`キーでコマンドモードを起動
|
|
460
|
+
3. `hello`と入力(または`he`と入力してTabキーで補完)
|
|
461
|
+
4. Enterキーで実行
|
|
462
|
+
5. フローティングウィンドウに"Hello from rufio!"が表示される
|
|
463
|
+
|
|
464
|
+
#### 外部gemに依存するプラグイン例
|
|
465
|
+
|
|
466
|
+
```ruby
|
|
467
|
+
# ~/.rufio/plugins/ai_helper.rb
|
|
468
|
+
module Rufio
|
|
469
|
+
module Plugins
|
|
470
|
+
class AiHelper < Plugin
|
|
471
|
+
requires 'anthropic' # 依存gem宣言
|
|
472
|
+
|
|
473
|
+
def name
|
|
474
|
+
'AiHelper'
|
|
475
|
+
end
|
|
476
|
+
|
|
477
|
+
def description
|
|
478
|
+
'Claude APIを使ったAIアシスタント'
|
|
479
|
+
end
|
|
480
|
+
|
|
481
|
+
def commands
|
|
482
|
+
{
|
|
483
|
+
ai: method(:ask_ai)
|
|
484
|
+
}
|
|
485
|
+
end
|
|
486
|
+
|
|
487
|
+
def initialize
|
|
488
|
+
super # 依存チェック実行
|
|
489
|
+
@client = Anthropic::Client.new(
|
|
490
|
+
api_key: ENV['ANTHROPIC_API_KEY']
|
|
491
|
+
)
|
|
492
|
+
end
|
|
493
|
+
|
|
494
|
+
private
|
|
495
|
+
|
|
496
|
+
def ask_ai
|
|
497
|
+
response = @client.messages.create(
|
|
498
|
+
model: "claude-3-5-sonnet-20241022",
|
|
499
|
+
max_tokens: 1024,
|
|
500
|
+
messages: [{role: "user", content: "Hello, Claude!"}]
|
|
501
|
+
)
|
|
502
|
+
response.content.first.text
|
|
503
|
+
end
|
|
504
|
+
end
|
|
505
|
+
end
|
|
506
|
+
end
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
**プラグインの使い方:**
|
|
510
|
+
|
|
511
|
+
1. 依存gemをインストール: `gem install anthropic`
|
|
512
|
+
2. 環境変数を設定: `export ANTHROPIC_API_KEY=your_api_key`
|
|
513
|
+
3. rufioを起動
|
|
514
|
+
4. `:`キーでコマンドモードを起動
|
|
515
|
+
5. `ai`と入力してEnterキーで実行
|
|
516
|
+
6. フローティングウィンドウにClaude APIからの応答が表示される
|
|
517
|
+
|
|
518
|
+
### プラグインの管理
|
|
519
|
+
|
|
520
|
+
#### プラグインの有効/無効設定
|
|
521
|
+
|
|
522
|
+
`~/.rufio/config.yml`でプラグインの有効/無効を制御できます:
|
|
523
|
+
|
|
524
|
+
```yaml
|
|
525
|
+
plugins:
|
|
526
|
+
fileoperations:
|
|
527
|
+
enabled: true
|
|
528
|
+
ai_helper:
|
|
529
|
+
enabled: true
|
|
530
|
+
my_custom:
|
|
531
|
+
enabled: false
|
|
532
|
+
```
|
|
533
|
+
|
|
534
|
+
#### デフォルト動作
|
|
535
|
+
|
|
536
|
+
- `config.yml`が存在しない → 全プラグイン有効
|
|
537
|
+
- プラグインの設定がない → 有効とみなす
|
|
538
|
+
- `enabled: false`が明示的に設定されている → 無効
|
|
539
|
+
|
|
540
|
+
### プラグインの配布方法
|
|
541
|
+
|
|
542
|
+
#### GitHub Gistで共有
|
|
543
|
+
|
|
544
|
+
```bash
|
|
545
|
+
# プラグイン作者
|
|
546
|
+
1. GitHub Gistに.rbファイルをアップロード
|
|
547
|
+
2. Raw URLをユーザーに共有
|
|
548
|
+
|
|
549
|
+
# ユーザー
|
|
550
|
+
$ mkdir -p ~/.rufio/plugins
|
|
551
|
+
$ curl -o ~/.rufio/plugins/my_plugin.rb [RAW_URL]
|
|
552
|
+
$ rufio
|
|
553
|
+
✓ my_plugin 読み込み完了
|
|
554
|
+
```
|
|
555
|
+
|
|
556
|
+
#### GitHubリポジトリで共有
|
|
557
|
+
|
|
558
|
+
```bash
|
|
559
|
+
# プラグイン作者
|
|
560
|
+
rufio-plugins/
|
|
561
|
+
├── plugin1.rb
|
|
562
|
+
└── plugin2.rb
|
|
563
|
+
|
|
564
|
+
# ユーザー
|
|
565
|
+
$ curl -o ~/.rufio/plugins/plugin1.rb https://raw.githubusercontent.com/user/rufio-plugins/main/plugin1.rb
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
### プラグインの主要機能
|
|
569
|
+
|
|
570
|
+
#### 必須メソッド
|
|
571
|
+
|
|
572
|
+
- `name`: プラグイン名(必須)
|
|
573
|
+
- `description`: プラグインの説明(オプション、デフォルト: "")
|
|
574
|
+
- `version`: プラグインのバージョン(オプション、デフォルト: "1.0.0")
|
|
575
|
+
- `commands`: コマンド定義(オプション、デフォルト: {})
|
|
576
|
+
|
|
577
|
+
#### 依存gem管理
|
|
578
|
+
|
|
579
|
+
- `requires 'gem_name'`: 依存gemを宣言
|
|
580
|
+
- 依存gemが不足している場合、警告を表示してプラグインを無効化
|
|
581
|
+
- rufio本体は正常に起動継続
|
|
582
|
+
|
|
583
|
+
#### 自動登録機能
|
|
584
|
+
|
|
585
|
+
- `Plugin`クラスを継承すると自動的に`PluginManager`に登録
|
|
586
|
+
- 複雑な登録処理は不要
|
|
587
|
+
|
|
588
|
+
## 開発
|
|
589
|
+
|
|
590
|
+
### 必要な環境
|
|
591
|
+
|
|
592
|
+
- Ruby 2.7.0以上
|
|
593
|
+
- io-console, pastel, tty-cursor, tty-screen gems
|
|
594
|
+
|
|
595
|
+
### 開発版の実行
|
|
596
|
+
|
|
597
|
+
```bash
|
|
598
|
+
git clone https://github.com/masisz/rufio
|
|
599
|
+
cd rufio
|
|
600
|
+
bundle install
|
|
601
|
+
./exe/rufio
|
|
602
|
+
```
|
|
603
|
+
|
|
604
|
+
### テスト実行
|
|
605
|
+
|
|
606
|
+
```bash
|
|
607
|
+
bundle exec rake test
|
|
608
|
+
```
|
|
609
|
+
|
|
610
|
+
## 対応プラットフォーム
|
|
611
|
+
|
|
612
|
+
- **macOS**: ネイティブサポート
|
|
613
|
+
- **Linux**: ネイティブサポート
|
|
614
|
+
- **Windows**: 基本機能をサポート
|
|
615
|
+
|
|
616
|
+
## ライセンス
|
|
617
|
+
|
|
618
|
+
MIT License
|
|
619
|
+
|
|
620
|
+
## 貢献
|
|
621
|
+
|
|
622
|
+
バグ報告や機能リクエストは[GitHub Issues](https://github.com/masisz/rufio/issues)でお願いします。
|
|
623
|
+
|
|
624
|
+
プルリクエストも歓迎です!
|
|
625
|
+
|
|
626
|
+
### 開発ガイドライン
|
|
627
|
+
|
|
628
|
+
1. 既存のコードスタイルと規約に従う
|
|
629
|
+
2. 新機能にはテストを追加する
|
|
630
|
+
3. 必要に応じてドキュメントを更新する
|
|
631
|
+
4. 可能であれば複数のプラットフォームでテストする
|