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

Download history 407/week @ 2025-02-26 157/week @ 2025-03-05 183/week @ 2025-03-12 161/week @ 2025-03-19 350/week @ 2025-03-26 276/week @ 2025-04-02 402/week @ 2025-04-09

1,208 downloads per month

MIT license

1.5MB
4K SLoC

Endolphine

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

Dark

Light

Light

Mars

Mars

Neon

Neon

Ice

Ice

Nept

Nept

Volcano

Volcano

Mossy

Mossy

Monochrome

Monochrome

Holiday

Holiday

Bloom

Bloom

Collapse

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