Crates.io | ratatui-explorer |
lib.rs | ratatui-explorer |
version | |
source | src |
created_at | 2024-02-19 02:06:50.56512 |
updated_at | 2024-12-07 01:06:17.427593 |
description | ratatui-explorer is a small, but highly customizable, file explorer widget for ratatui. |
homepage | https://github.com/tatounee/ratatui-explorer |
repository | https://github.com/tatounee/ratatui-explorer.git |
max_upload_size | |
id | 1144612 |
Cargo.toml error: | TOML parse error at line 18, column 1 | 18 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include` |
size | 0 |
ratatui-explorer is a simple library for creating file explorers for ratatui.
Features:
Run cargo run --example
to try the different example available.
The simplest use of ratatui-explorer with the crossterm backend.
cargo run --example basic
Switching custom themes while running.
cargo run --example light_and_dark_theme
Adapt the interface depending on the selected file.
cargo run --example file_preview
Install the libraries in your Cargo.toml
file:
cargo add ratatui ratatui-explorer crossterm
Then inside your main.rs
file:
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.area());
})?;
// 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(())
}
You can customize the theme of the file explorer widget by using the Theme
struct.
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());
The following bindings are used by default for crossterm, termion and termwiz.
Binding | Action |
---|---|
j , <DownArrow> |
Move the selection down |
k , <UpArrow> |
Move the selection up |
h , <LeftArrow> , <Backspace> |
Go to the parent directory |
l , <RightArrow> , <Enter> |
Go to the child directory* |
*if the selected item is a directory