2 个版本
0.1.1 | 2024 年 2 月 20 日 |
---|---|
0.1.0 | 2024 年 2 月 19 日 |
#390 in 命令行界面
39 每月下载量
用于 2 crates
1.5MB
457 行代码
ratatui-explorer
ratatui-explorer 是为 ratatui 创建文件浏览器的一个简单库。
特性
示例
运行 cargo run --example
以尝试不同的示例。
基本用法
使用 ratatui-explorer 和 crossterm 后端的最简单用法。
cargo run --example basic
浅色和深色主题
运行时切换自定义主题。
cargo run --example light_and_dark_theme
文件预览
根据所选文件调整界面。
cargo run --example file_preview
基本用法
在您的 Cargo.toml
文件中安装库
cargo add ratatui ratatui-explorer crossterm
然后在您的 main.rs
文件中
use std::io::{self, stdout};
use crossterm::{
event::{read, Event, KeyCode},
terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
ExecutableCommand,
};
use ratatui::prelude::*;
use ratatui_explorer::{FileExplorer, Theme};
fn main() -> io::Result<()> {
enable_raw_mode()?;
stdout().execute(EnterAlternateScreen)?;
let mut terminal = Terminal::new(CrosstermBackend::new(stdout()))?;
// Create a new file explorer with the default theme and title.
let theme = Theme::default().add_default_title();
let mut file_explorer = FileExplorer::with_theme(theme)?;
loop {
// Render the file explorer widget.
terminal.draw(|f| {
f.render_widget(&file_explorer.widget(), f.size());
})?;
// Read the next event from the terminal.
let event = read()?;
if let Event::Key(key) = event {
if key.code == KeyCode::Char('q') {
break;
}
}
// Handle the event in the file explorer.
file_explorer.handle(&event)?;
}
disable_raw_mode()?;
stdout().execute(LeaveAlternateScreen)?;
Ok(())
}
自定义主题
您可以使用 Theme
结构体来自定义文件浏览器小部件的主题。
use ratatui::{prelude::*, widgets::*};
use ratatui_explorer::Theme;
let theme = Theme::default()
.add_default_title()
.with_title_bottom(|fe| format!("[{} files]", fe.files().len()).into())
.with_block(Block::default().borders(Borders::ALL).border_type(BorderType::Rounded))
.with_highlight_item_style(Style::default().fg(Color::Yellow).add_modifier(Modifier::BOLD))
.with_highlight_dir_style(Style::default().fg(Color::Red).add_modifier(Modifier::BOLD))
.with_highlight_symbol("> ".into());
绑定
以下绑定默认用于 crossterm、termion 和 termwiz。
绑定 | 动作 |
---|---|
j 、<DownArrow> |
向下移动选择 |
k 、<UpArrow> |
向上移动选择 |
h ,<向左箭头> ,<退格> |
转到父目录 |
l ,<向右箭头> ,<回车> |
转到子目录* |
*如果选中的项目是目录
依赖项
~6-19MB
~267K SLoC