Runtime Unified Flow I/O Operator
A TUI file manager that executes and coordinates tools and scripts from files. Supports Ruby/Python/PowerShell and integrates your development workflow in one place.
日本語 | English
rufio is not just a file manager. It's a tool runtime execution environment.
┌─────────────────────────────────────────────────────────┐
│ rufio │
│ Runtime Unified Flow I/O Operator │
├─────────────────────────────────────────────────────────┤
│ Files ──→ Scripts ──→ Tools ──→ Output │
│ ↑ │ │
│ └───────────── Feedback ────────────┘ │
└─────────────────────────────────────────────────────────┘
- File Operations: Traditional file manager functionality
- Script Execution: Run Ruby/Python/PowerShell scripts in file context
- Tool Integration: Seamless integration with external tools (git, fzf, rga, etc.)
- Unified I/O: Manage all input/output in a single flow
- Multi-language Script Support: Ruby, Python, PowerShell
- Script Path Management: Register and manage multiple script directories
- Command Completion: Tab completion for scripts with
@prefix - Job Management: Run scripts/commands in the background
- Execution Logs: Automatically record all execution results
- Vim-like Key Bindings: Intuitive navigation
- Real-time Preview: Instantly display file contents with syntax highlighting (via
bat) - Fast Search: Integration with fzf/rga
- Bookmarks: Quick access to frequently used directories
- zoxide Integration: Smart directory history
- macOS: Native support
- Linux: Native support
- Windows: PowerShell script support
gem install rufioOr add to your Gemfile:
gem 'rufio'rufio # Launch in current directory
rufio /path/to # Launch in specified directory- Navigate to the directory where you want to place scripts
B→2to add to script path
- Press
:to enter command mode - Type
@+ part of the script name - Press
Tabto complete - Press
Enterto execute
| Key | Function |
|---|---|
j/k |
Move up/down |
h/l |
Parent/child directory |
g/G |
Top/bottom |
Enter |
Enter directory/open file |
q |
Quit |
| Key | Function |
|---|---|
Space |
Select/deselect |
o |
Open with external editor |
a/A |
Create file/directory |
r |
Rename |
d |
Delete |
m/c/x |
Move/copy/delete (selected) |
| Key | Function |
|---|---|
f |
Filter mode |
s |
Search files with fzf |
F |
Search file contents with rga |
| Key | Function |
|---|---|
b |
Add bookmark |
B |
Bookmark menu |
0 |
Return to startup directory |
1-9 |
Jump to bookmark |
Tab |
Cycle to next bookmark (Files mode only) |
z |
zoxide history |
| Key | Function |
|---|---|
: |
Command mode |
J |
Job mode |
L |
View execution logs |
? |
Help |
Shift+Tab |
Switch mode (reverse) |
Press : to enter command mode and execute various commands.
:@build # @ prefix triggers script completion
:@deploy.rb # Execute registered script
:@local.sh # Scripts in current directory are also available
:rake:test # Execute rake task
:rake:build # Tab completion supported
Rakefile in the current directory is automatically parsed. Supports Rakefile, rakefile, Rakefile.rb.
:!git status # ! prefix for shell commands
:!ls -la # Execute in background
:hello # Greeting message
:stop # Quit rufio
A feature to register directories containing script files. Scripts in registered directories can be executed using the @ prefix in command mode.
Press B → 3 to open the script path management menu:
- View registered paths
d: Remove pathEnter: Jump to directoryESC: Close menu
| Extension | Language |
|---|---|
.rb |
Ruby |
.py |
Python |
.sh |
Shell (bash/zsh) |
.js |
JavaScript (Node.js) |
.ts |
TypeScript (ts-node/deno) |
.pl |
Perl |
.ps1 |
PowerShell |
Define custom commands in ~/.config/rufio/commands.rb:
command "hello" do
ruby { "Hello from rufio!" }
description "Greeting command"
end
command "status" do
shell "git status"
description "Git status"
end
command "build" do
script "~/.config/rufio/scripts/build.rb"
description "Run build"
end~/.config/rufio/
├── config.rb # DSL-style main configuration
├── script_paths.yml # Script directories (list format)
├── bookmarks.yml # Bookmarks (list format)
├── commands.rb # DSL command definitions
├── scripts/ # Script files
└── logs/ # Execution logs
# ~/.config/rufio/config.rb
# Language setting: 'en' or 'ja'
LANGUAGE = 'ja'
# Color settings (HSL format)
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
# Keybind settings
KEYBINDS = {
quit: %w[q ESC],
up: %w[k UP],
down: %w[j DOWN]
}.freeze# ~/.config/rufio/script_paths.yml
- ~/.config/rufio/scripts
- ~/bin
- ~/scripts# ~/.config/rufio/bookmarks.yml
- path: ~/Documents
name: Documents
- path: ~/projects
name: ProjectsPlace rufio.yml in your project root for project-specific script paths:
# ./rufio.yml (project root)
script_paths:
- ./scripts
- ./binrufio integrates with the following external tools to extend functionality. All tools are optional — rufio works without them, falling back to built-in behavior.
| Tool | Purpose | Key | Required? |
|---|---|---|---|
| fzf | File name search | s |
Optional |
| rga | File content search | F |
Optional |
| zoxide | Directory history | z |
Optional |
| bat | Syntax highlighting in preview | — | Optional |
When bat is installed, code files in the preview pane are displayed with full syntax
highlighting (Ruby, Python, Go, Rust, TypeScript, and 15+ more languages).
Highlighting is loaded asynchronously — navigation stays fast even on large source trees.
# macOS
brew install bat
# Ubuntu/Debian
apt install batRun rufio -c to verify bat is detected correctly.
# macOS
brew install fzf bat rga zoxide
# Ubuntu/Debian
apt install fzf bat zoxide
# rga requires separate installation: https://github.com/phiresky/ripgrep-allSupport for native implementation for fast directory scanning:
rufio --native # Auto-detect
rufio --native=zig # Zig implementationrufio --yjit # Ruby 3.1+ YJIT
rufio --zjit # Ruby 3.4+ ZJITrufio -c # Check system dependencies
rufio --check-health # Same as above- Ruby 2.7.0 or later
- io-console, pastel, tty-cursor, tty-screen gems
git clone https://github.com/masisz/rufio
cd rufio
bundle install
./bin/rufiobundle exec rake testMIT License
Bug reports and feature requests are welcome at GitHub Issues. Pull requests are also welcome!