18 stable releases
Uses new Rust 2024
new 1.4.3 | Apr 17, 2025 |
---|---|
1.4.2 | Apr 13, 2025 |
1.2.3 | Mar 27, 2025 |
1.0.2 | Feb 28, 2025 |
#118 in Filesystem
1,208 downloads per month
1.5MB
4K
SLoC
Endolphine
TUI file explorer made by Rust
Installation
required Cargo:
cargo install endolphine
exec:
$ ep [PATH]
[PATH]: default "."
Usage
Launch explorer
$ ep [PATH]
Open in explorer with PATH
directory.
Cannot open a NOT directory items.
Configuration
Open config file:
ep -e
# or
vim ~/.config/endolphine/config.toml
Default config:
# Editor to use
editor = ["vim"]
# theme to use (look "#Available themes")
theme = "Dark"
# OPTIONAL
# file path of user-defined theme
# Can't use variables
# if need the theme syntax, look the `example_theme.toml`
user_theme_path = "foo/bar/anyname.toml"
# Item sort priority
# 0: Prefix is lowercase (ex: "dotfiles/", "main.rs")
# 1: Prefix is uppercase (ex: "Desktop/", "Cargo.toml")
# 2: The "dotfiles" (ex: ".local/", ".git/")
# 3: Other files
sort_by_priority = [
0,
1,
2,
3,
]
[delete]
# Whether to ask again when you enter the delete key
ask = true
# Will yank the file if the rm command runs
# This config disabled when "for_tmp" is disabled
yank = true
# Instead of deleting the item, the action is changed to moving it to the tmp_dir
for_tmp = true
[paste]
# A suffix that is added for collision avoidance when pasting into the same dir
copied_suffix = "_Copy"
# Won't ask "overwrite the same files?" when the paste command runs
force_mode = true
# Default answer to the "overwrite the same files?" question
default_overwrite = true
# Menu shortcuts
# Scheme: "Tag:Path"
#
# Tag: Name of be displaying on menu
# Path: Shortcut path (directory only)
#
# Important: **Can't** use the VARIABLE ($USER is example)
[menu]
items = [
"Home:/home/${USER}",
"Downloads:/home/${USER}/Downloads",
"Desktop:/home/${USER}/Desktop",
]
# User-defined keymapping
# In normal mode mapping
# Normal mode is default mode, the basic operation is available
# OPTIONAL
[keymap.normal]
# Examples
# K = "10k"
# J = "10j"
# Q = "ZZ"
# "<c-e>" = "ZZ"
# In visual mode mapping
# Visual mode is area-selecting mode, move cursor to change selected area
# OPTIONAL
[keymap.visual]
# Example
# "<c-v>" = "ggVG"
# Override the file open command by extension
# OPTIONAL
[open]
# Format:
# EXTENSION = { cmd = ["command"], in_term = bool }
#
# cmd = ["COMMAND", "ARGS1", "ARGS2", ...]
# in_term: if command processing in the terminal
# in_term is OPTIONAL (default: true)
# Example:
# txt = { cmd = ["nvim"] }
Keymapping
Mode | Keymap | Desc |
---|---|---|
Normal, Visual | ZZ |
Exit application |
Normal | <ESC> |
Some reset |
Visual | <ESC> |
Change to normal mode |
Normal | k |
Move cursor up |
Visual | k |
Move cursor up and select item |
Normal | j |
Move cursor down |
Visual | j |
Move cursor down and select item |
Normal, Visual | h |
Open parent directory and change to normal mode |
Normal, Visual | gg |
Move cursor to top |
Normal, Visual | G |
Move cursor to bottom |
Normal, Visual | gk |
Move cursor up per page |
Normal, Visual | gj |
Move cursor down per page |
Normal, Visual | l |
Open under cursor item |
Normal, Visual | V |
Toggle Normal and Visual mode |
Normal, Visual | M |
Toggle Menu widget |
Normal | m |
Focus Menu |
Visual | m |
Unfocus Menu |
Normal, Visual | a |
Ask create item and change to normal mode |
Normal, Visual | d |
(if config delete.ask = true) Ask delete file(s) and change to normal mode |
Normal | dd |
Delete under cursor item |
Visual | d |
Delete selected items |
Normal, Visual | r |
Ask rename item and change to normal mode |
Normal | yy |
Yank under cursor item |
Visual | y |
Yank selected items |
Normal, Visual | p |
Paste from clipboard |
Normal, Visual | / |
Open search input and change to normal mode |
Normal, Visual | n |
Move cursor to next by search |
Available themes
Name | Description |
---|---|
Dark | Standard Dark theme |
Light | Standard Light theme |
Mars | Theme by imagined Mars |
Neon | WARNING: It's bad for you eyes |
Ice | Looks Cold... |
Nept | Theme by imagined Neptune |
Volcano | Looks VERY VERY HOT... |
Mossy | Stone in Coniferous forest |
Monochrome | Probably the 1900s |
Holiday | HAPPY HOLIDAY |
Bloom | Are the flowers... blooming? |
Collapse | Liquid of Collapse |
Open theme preview
Dark
Light
Mars
Neon
Ice
Nept
Volcano
Mossy
Monochrome
Holiday
Bloom
Collapse
Uninstall
required Cargo:
cargo uninstall endolphine
TODO
- Impl for the realtime displaying system
- Add a command mode
- Improve the rendering system to nvim like
- Make renderings independently as one "window" per grid
- Allow widgets to be rendered to variable size
- When viewed from inside the renderer, it is assumed that (0, 0) to (x, y) of the "window" to be rendered can be used
- Impl for the floating window
- Add component rendering
- Impl the layout system and logic (ratatui?)
- Improve sys_log
LICENSE
MIT
Dependencies
~10–21MB
~311K SLoC