joshuto: ranger-like terminal file manager written in Rust.

Overview

Linux build

MacOS build

joshuto

ranger-like terminal file manager written in Rust.

Alt text

Dependencies

  • cargo
  • rustc
  • xsel/xclip/wl-clipboard (optional, for clipboard support)

Also see Cargo.toml

Building

~$ cargo build

Installation

For single user

~$ cargo install --path=. --force

System wide

~# cargo install --path=. --force --root=/usr/local     # /usr also works

Packaging status

Fedora (COPR)
sudo dnf copr enable atim/joshuto -y
sudo dnf install joshuto
Arch (AUR)
[yay/paru] -S joshuto
[yay/paru] -S joshuto-git

Usage

~ $ joshuto

Configuration

Check out wiki/Configuration for details and config/ for examples

joshuto.toml

  • general configurations

keymap.toml

mimetype.toml

  • for opening files with applications

theme.toml

  • color customizations

Contributing

See wiki/Contributing

Features/Bugs

Please create an issue :)

TODOs

  • Migrate to tui-rs
  • Tab support
  • Ctrl/Shift/Alt support
  • Asynch File IO (cut/copy/paste)
  • Built-in command line (in progress)
    • Currently implementation is kind of janky
  • File previews (in progress)
    • Waiting for tui-rs to support parsing ANSI color codes
  • Tab autocomplete (in progress)
  • Bulk rename
Comments
  • Image Previews w/ Kitty's Icat

    Image Previews w/ Kitty's Icat

    Kitty is the terminal emulator I use and it supports images with the help of icat.

    The following is what I use to preview images in both Joshuto and Lf...

    #!/usr/bin/env bash
    
    case $(file -b --mime-type "$1") in
    	image/*)
    		kitty +kitten icat --transfer-mode file --place "$2x$3@$4x$5" "$1"
    		;;
    esac
    
    exit 0
    

    The only problem with the script above is that Joshuto positions the image incorrectly (but the dimensions are accurate).

    Lf Demo:

    Screen Shot 2022-01-15 at 10 43 43 PM

    Joshuto Demo:

    Screen Shot 2022-01-15 at 10 43 28 PM

    Both programs use the same script, however, Joshuto is unable to position the image correctly.

    Is there a way to position the image correctly?

    opened by is0n 23
  • Support ueberzug for image preview

    Support ueberzug for image preview

    ranger and some other file managers support ueberzug , ueberzug can be used for viewing images , gif and this will work on any terminal , its not terminal specific like w3m :)

    https://github.com/seebye/ueberzug

    ranger's image preview :

    image

    enhancement help wanted 
    opened by siduck 18
  • Show symlinked files and dirs correctly

    Show symlinked files and dirs correctly

    This PR is the first part of #71. It does not contain the directory size feature, but it includes:

    • Show symlinked dirs like dirs, with a directory devicon
    • Show size of target file for symlinked files in conbination with the “symlink arrow”
    • Show permission flags of target file for symlinked files

    This PR is much more invasive than I expected. Sorry for that. But when I started to combine the “symlink arrow” with the file size, one change led to the next.

    The massive change is mostly because of the calculation of the entry strings to display, which is now done in separate functions without using the buf.set_stringn method to handle the truncation of strings.

    The good thing is that the code is more testable and easier to extend, for my feeling. A downside might be that the string truncation is based on characters. I dont't know how tui-rs handles that, but I guess it uses correct graphemes instead of just characters when using the buf.set_stringn function. I could use something like unicode-segmentation instead to realize a more proper truncation.

    Also, some refactoring for pub fn entry_style would be good, it really looks kind of ugly, I know.

    Anyway, before putting more effort into this, I wanted to give a chance for feedback.

    enhancement 
    opened by DLFW 16
  • Feature request: rename file but keep extension

    Feature request: rename file but keep extension

    I have found the rename, rename_append and rename_prepend commands. However, I usually only want to change the filename and not the extension. Could an option (maybe called rename_keep_ext) be added that deletes the filename, keeps the extension, and puts the cursor to the beginning of the line?

    opened by fritzrehde 15
  • [feature] scroll preview with ctrl+up/ctrl+down; edit: `preview_cursor_move_up/down` was already existent ... I didnt know about it.

    [feature] scroll preview with ctrl+up/ctrl+down; edit: `preview_cursor_move_up/down` was already existent ... I didnt know about it.

    Hello.

    Love your project. Its blazingly fast.

    Is there a way to scroll down/up the preview ? image

    For example I want to:

    • scroll the preview down with ctrl+down
    • scroll the preview up with ctrl+up

    In ranger, you could do that with:

    • alt+j -> scroll down
    • alt+k -> scroll up

    If there is no way to do that right now, I would like to make a feature request.

    Thanks.

    opened by alexzanderr 13
  • add line numbers

    add line numbers

    closes #41

    Adds numbers for every entry in the main window. Supports both absolute numbering (As shown on the first screenshot in the linked issue), and relative numbering (As shown on the second screenshot, again, see the issue)

    enhancement 
    opened by Vinegret43 12
  • Latest Build Fails to Compile

    Latest Build Fails to Compile

    When I run

    cargo build

    I get this I am on the latest version of Rust from RustUp and the latest MacOSX. This command is being run in iTerm2.

    If I had to take a wild guess as to why this is happening I would say it is due to not using the latest Rust as is mentioned in this pull request.

    bug 
    opened by gottaStartNow 11
  • [Feature Request] use zoxide for cd functions

    [Feature Request] use zoxide for cd functions

    I think it could be beneficial to replace cd functions with an implementation of zoxide since it is written in rust and works the same as cd with some really great additional functionality

    zoxide is a blazing fast replacement for your cd command, inspired by z and autojump. It keeps track of the directories you use most frequently, and uses a ranking algorithm to navigate to the best match. tutorial

    enhancement 
    opened by JacobTravers 10
  • File Preview Support

    File Preview Support

    This issue will track the discussion and progress of getting file previews to work

    Just some food for thought on how to design this:

    • configuration format
      • how do we configure it so users can customize it to their liking
    • overhead costs
      • querying mimetype beforehand (during dirlist loading) or querying them on the fly (possibly increasing cursor movement delays)
    • passing files
      • how should we pass the file to preview scripts
    • showing previews
      • tui-rs currently does not support ansi color code parsing so parsing colors might need to be implemented in-house
      • tui-rs also uses a different method of outputting text to the terminal. A buffer is used instead of directly interacting with the terminal screen. Any terminal output not tracked by the buffer is undetected and may create residual artifacts
      • will need to figure out how to isolate preview to the given window
    enhancement help wanted 
    opened by kamiyaa 10
  • Implementation of Devicons?

    Implementation of Devicons?

    I am a long time user of Ranger and I love it but I always have to install devicons to make it more readable, https://github.com/alexanderjeurissen/ranger_devicons, can this be built into joshuto?

    enhancement help wanted 
    opened by gottaStartNow 10
  • Panic at unwrap()

    Panic at unwrap()

    Using latest ver. on SailfishOS. Installs from crates.io or from building on-device w/ no problem, but won't open. Gives:

    "thread 'main' panicked at 'called Result::unwrap() on an Err value : JoshutoError { _kind: TomlDeError (Error { inner: ErrorInner { kind: NewlineInString, line: Some(25), co l: 13, at: Some(1035), message: "", key: [] } }), _cause: "Failed to p arse TOML" }', src/config/keymap/ke ymapping.rs:100:38"

    Line 100 says:

    "AppKeyMapping::default_res().expect()"

    Context is:

    "impl TomlConfigFile for AppKeyMapping { fn get_config(file_name: &str) -> Self { parse_to_config_file::<AppKeyMappingCrude, AppKeyMapping>(file_name) .unwrap_or_else(Self::default) } }

    impl std::default::Default for AppKeyMapping { fn default() -> Self { AppKeyMapping::default_res().expect() } }"

    I'm not familiar with Rust code, so not sure if the error is there, or if that just indicates an error somewhere else...

    Thanks

    opened by levone1 9
  • # Issues on **keyboard configuration**

    # Issues on **keyboard configuration**

    First of all, thank you for your work. I currently use °Ranger File Manager*, but I am happy that someone is implementing a fully functional file manager written in Rust, from a performance point of view.

    Description of Issue

    I read the documentation about config options, so I found that:

    Joshuto reads configurations from the following directories using environment variables (in order of precedence):

    • $JOSHUTO_CONFIG_HOME
    • $XDG_CONFIG_HOME/joshuto
    • $HOME/.config/joshuto
    but I have not found those paths, neither after the successful installation of the package, nor after I launched it. I have also tried to create the folder, same results.

    System Configuration

    - SYSTEM INFORMATION: Linux 6.1.1-arch1-1 x86_64

    - Component Version: rustc 1.68.0-nightly (574b64a97 2022-12-31)

    - Installation Method: Arch User Repository package

    Additional Details (optional)

    Same behavior building it and installing with Cargo/Rustup. Keeping the default configuration, file 'keymap.toml' not edited.

    Steps to Reproduce the Issue

    1. Launched joshuto from terminal CLI (bash shell) and read output

    Question:

    1. To edit the configuration of joshuto, have I to edit .toml files before the bulding/installation of the package?

    Thanks in advance for your support.
    opened by fatualux 0
  • zoxide can't access directories it hasn't indexed

    zoxide can't access directories it hasn't indexed

    Trying to z inside a directory that zoxide has never accesed before returns zoxide: no match found. This prevents replacing cd with zoxide, as commands like z .. won't work.

    To test, outside of joshuto, create 2 directories and access one of them with zoxide

    mkdir /tmp/accessed_directory /tmp/not_accessed_directory
    z /tmp/accessed_directory
    

    Then, open joshuto and try browsing to each of them. Only the accessed directory works

    :z /tmp/accessed_directory --> Works
    :z /tmp/not_accessed_directory --> zoxide: no match found
    

    In the same fashion, trying to access sub-folders on the home directory with ~ doesn't work, while accessing them with their absolute path works

    :z /home/user/Downloads --> Works
    :z ~/Downloads --> zoxide: no match found
    

    joshuto 0.9.4 installed from source as of commit 5ea87f65df0b0744ee1d01fd40e240e6abf0da77

    bug 
    opened by Sonico98 0
  • Hexadecimal representation of tabs

    Hexadecimal representation of tabs

    joshuto

    When I try to build joshuto it always comes with this hexadecimal numbers instead of the tabs numbers on the right upper corner.

    I've tried to build with "--release" and "--all-features" flags, but it always comes like this.

    It's not a problem of the terminal, because with the pre-built joshuto that doesn't happen.

    Does anyone have any ideas how to solve this?

    Thanks in advance.

    opened by rousbound 5
  • Is there an Option for 'leaving/quit joshuto on current directory'?

    Is there an Option for 'leaving/quit joshuto on current directory'?

    First, I want to say: I really like joshuto and appreciate the work done by this project.

    The default behavior - if you leave/quit joshuto - is, that you are in the directory, where you started the joshuto session. [In ranger this behavior is the default behavior if you start the session with ranger]

    Is there an option to set, that you can leave/quit joshuto on the current directory, that you are in? [In ranger you can force this behavior by starting ranger with . ranger] I really like the behavior and find it much more convenient than the default one ( 1. you maybe don't remember after hours, in which directory you did start the joshuto-session 2. If you are in a session, you can quickly go to terminal (and do some stuff there) and go back to joshuto).

    opened by theCollectiv 2
  • Display total size of current directory

    Display total size of current directory

    I would like to somehow display the total size of a directory's content (like joshuto does with files). Out of curiousity, is there a reason this isn't implemented directly into joshuto already? The same feature exists for files. The argument against it is probably the performance overhead (I imagine it would be terribly slow for deeply nested directories). Maybe this could be added as an option that can be toggled on or off with a keybinding (I could look into it). You're in a parent directory of directories you want to know the size of, toggle the option, see the size, and toggle back off when you want performance again. If you don't want this implemented directly into joshuto: The command du -sh "$DIRECTORY" would easliy let me do that for a single directory. But is there a way to manually (through a keybinding) call this command on a line in joshuto and somehow display the output somewhere in joshuto?

    enhancement 
    opened by fritzrehde 0
Releases(v0.9.4)
  • v0.9.4(Jul 8, 2022)

    Changes

    • selected files now indented like ranger
    • Use notify::RecommendedWatcher to simplify code and support BSD platforms
      • Thanks to @unrelentingtech
    • track child processes and properly close them when complete
    • add H, L and M vim actions
    • combine --output-dir and --choosefiles into a single argument
      • --output-file is used for all output by joshuto and can be specified what to output by:
      • quit --output-current-directory
      • quit --output-selected-files
    • add pbcopy to support macos file ops
      • Thanks to @ztlevi
    • inform user how many files was selected when glob selecting
    • zoxide support
    • add ctrl+h as hidden files toggle
      • Thanks to @Diaoul
    • Github clippy workflow and rustfmt stuff
      • Thanks to @dmarcoux
    • split up keymaps into different modes
      • default_view default
      • task_view for when viewing io processes
      • help_view for viewing help menu
    • Add flat command
      • Thanks to @krivahtoo
    • Add hsplit view to view 2 tabs at once
    • Add ability to check whether a preview is outdated and update it accordingly

    Fixes

    • fix regular file styling not respecting theme
    • fix file preview showing a blank line
    • fix confirm_exit not working
    • fix open not selecting file
    • fix bulk_rename confirmation logic
    Source code(tar.gz)
    Source code(zip)
    joshuto-v0.9.4-aarch64-unknown-linux-gnu.tar.gz(1.21 MB)
    joshuto-v0.9.4-arm-unknown-linux-gnueabihf.tar.gz(1.22 MB)
    joshuto-v0.9.4-arm-unknown-linux-musleabihf.tar.gz(1.26 MB)
    joshuto-v0.9.4-x86_64-apple-darwin.tar.gz(1.20 MB)
    joshuto-v0.9.4-x86_64-unknown-linux-gnu.tar.gz(1.34 MB)
    joshuto-v0.9.4-x86_64-unknown-linux-musl.tar.gz(1.40 MB)
  • 0.9.3(Mar 6, 2022)

    0.9.3

    Changes

    • add support for scrolling text previews
    • bulk_rename now reads TMP_DIR environment variable when determining where to save temporary files
    • line numbers support (Thanks to @Vinegret43 )
    • automatically reload directory contents when change is detected (configurable) (Thanks to @DLFW )
    • continuous scrolling support (Thanks to @DLFW )
    • cd - support (Thanks to @Vinegret43 )
    • support for image previews via ueberzug and kitty term
      • Big thanks to @DLFW , @is0n , @krivahtoo for coordinating and implementing this
    • command autocompletion and reverse autocompletion (Thanks to @sushi-shi )
    • incremental search (Thanks to @sushi-shi )
    • console shortcuts (Thanks to @sushi-shi )
    • half page increments (Thanks to @sushi-shi )
    • try all options when opening files (Thanks to @sushi-shi )
    • Docker image for building joshuto (Thanks to @kennycallado )
    • themes, keymaps and joshuto settings now come with a default setting if none is provided
    • you can now fork with xdg_open
    • various code cleanups (Thanks to @DLFW , @otakubeam , @sushi-shi )
    Source code(tar.gz)
    Source code(zip)
  • 0.9.2(Nov 20, 2021)

    Joshuto is now published to crates.io! :100: :tada:

    Changes

    • File previews no longer spawn threads if preview already exists
    • Tab switching via indexes (Thanks to @krivahtoo )
    • Input logic is moved from tui_worker_view to show_workers
    • Input logic out of tui_command_menu into input
    • Add a help page (Thanks to @Vinegret43 )
    • Add basic command history
    • Switch from skim to fzf
    • Add command to search subdirectories via fzf
    • Rework config structure
    • Add avif to theme (Thanks to @nonetrix )
    • Use include_str! for default configurations
    • Path shortener when path is too long (Thanks to @kennycallado )
    • Add choosefiles option to output selected files into a specified file (Thanks to @foxfriends )
    • Add syntax highlighting to file previews (Thanks to @krivahtoo )

    Fixes

    • Fix parent directory not reloading for hidden file toggle
    • Unix permissions work a lot better
    • Paste overwrite works now
    Source code(tar.gz)
    Source code(zip)
  • 0.9.1(Sep 25, 2021)

    Changelog

    • IO work shows more detailed progress
    • up, down, left, right keys have been renamed to arrow_up, arrow_down, arrow_left, arrow_right
    • Rudimentary support for RGB colors (not tested)
    • open_file was renamed to open
    • Add search_skim command
      • fuzzy search via skim
    • Add additional config directories
      • ie. ~/.config/joshuto
    • Change username to red when root
    • on bulk_rename, the screen will now clear first
    • homepages can be set for new tabs (inherit, home, root)
    • Add support for lazily figuring out how many files are in directories
      • This fixes issues where joshuto is very slow on network drives, mtp, etc.
    • File preview support! (rudimentary)
      • uses scope.sh-like file to figure out and generate previews like ranger
      • preview scripts can be set inside joshuto.toml
    • Add quit_to_cwd command
      • Exits to the current directory given a shell function is used
      • see https://github.com/kamiyaa/joshuto/wiki/Tidbits#exit-to-current-directory
    • --lastdir changed to --last-dir
    • messages are now in color instead of just yellow
    • keymap.toml structure was changed visually
    • Add copy_filename_without_extension command
      • Thanks to @krivahtoo
    • webp theme support
      • Thanks to @nonetrix
    • Add Arch Linux instructions to README
      • Thanks to @salkin-mada
    • Rework sorting system and add sorting by file extensions
      • Huge thanks to @makeefu , this removes a lot of repetitive and rigid code and I never thought of this solution :)
    • Add copy_dirpath and copy_filepath command
      • Thanks to @makeefu
    • Rework directory list rendering
      • Huge thanks to @DLFW , this fixed a lot of hacky code when rendering directory listings
    • Show symlink files and symlink directory sizes and permissions correctly
      • Thanks to @DLFW
    • Add theming to broken symlinks
      • Thanks to @DLFW
    • Show how many files are in directories
      • Thanks to @DLFW
    • Add touch and spawn command
      • Thanks to @DLFW

    Fixes

    • Add xdg_open support back (accidentally removed xd)
    • Fixed set_mode command not working
    • Fixed cut operations not displaying values
    • Fixed inner border render
      • Thanks to @princebett , I had no idea how to fix this
    • Fixed page up/down not moving correct amount when borders are enabled
    • Fixed printing
    • Fixed issue where joshuto does not start due to insufficient permissions on a directory in the current directory
    • Fixed files with non-unicode files not showing up
    • Fixed paste overwrite not working
    • Fixed crash when menu height is larger than screen height
    • Fixed border not drawn properly in root directory
    • Fixed selecting file via mouse when borders are enabled
      • Thanks to @DLFW
    • Fixed directories with insufficient permissions not showing up
    • Fixed broken links not showing up
    • Fixed preview scripts constantly called on files that couldn't render a preview
    • Fixed cd not working with relative paths
    • Fixed spaces being trimmed when copying to clipboard
      • Thanks to @krivahtoo
    Source code(tar.gz)
    Source code(zip)
  • 0.9.0(May 8, 2021)

    Changes

    • borders are enabled by default
    • add visual progress bar
    • pasting now queries directories first before to get an accurate number of files
    • add glob searching via search_glob
      • previous search has been changed to search_string

    Fixes

    • string search does not convert pattern to lowercase
    Source code(tar.gz)
    Source code(zip)
  • 0.8.6(Mar 6, 2021)

    Changes:

    • There is now a view for showing worker progress for cut/copy jobs
      • Still a bit buggy at times, but it doesn't crash
    • Fix unicode boundary errors
    • Add Fedora installation instructions
      • Thanks to @tim77
    • Selected item now highlights the column width instead of just the filename, just like ranger
    • Add option to prevent collapsing preview pane
    • Re-add support for custom column sizes
    • Add support for detecting window size changing https://github.com/kamiyaa/joshuto/issues/37
    • Add mouse support
      • Scrolling and clicking on items
    • Add cd tilde expansion https://github.com/kamiyaa/joshuto/issues/33
      • Thanks to @mblode
    • Add clipboard support for copying filename to clipboard
    • Add --lastdir option to allow users to write scripts that cd to the directory joshuto was in
    • Add borders support https://github.com/kamiyaa/joshuto/issues/39
    • Textfield now increases in height to accommodate long strings
    • No longer using hack to show cursor
      • Before, joshuto would show the cursor in the textfield by inversing the color scheme of the character it was theoretically on
      • Now, we make use of the terminal cursor and toggle it when needed
    Source code(tar.gz)
    Source code(zip)
  • 0.8.5(Dec 6, 2020)

    Changes

    There has been lots of changes and features added in this release:

    • support for lexical sorting, reverse sorting and mtime sorting
    • file paths are now relative instead of absolute when opening files
    • fixed bitwise issue on MacOS
      • Thank you to @austinhyde !
    • Add github actions workflow
      • Thank you to @UsairimIsani !
    • Fix various io worker issues
      • IO workers forgets to start when user is on a textfield
    • IO workers are now more informative
    • Commands now use an enum instead of polymorphism/trait/dynamic dispatch
    • Add Cargo.lock
    • Add devicon support
      • Thank you to @SaeedAnas !
    • Fix tab cycling crash
    • Fix menu clearing not working for all use cases
    Source code(tar.gz)
    Source code(zip)
  • 0.8.3(Apr 10, 2020)

    This release fixes many bugs and stability:

    • Fix cut not working
    • Reduce filesystem queries by adding a soft-reload function
      • Formerly, we were reloading on every cursor update by accident
    • Fix cursor position in textfield
      • This is for renaming files, etc.
    Source code(tar.gz)
    Source code(zip)
  • 0.8.2(Mar 16, 2020)

    This release is mostly fixes and stability.

    • Fix opening files not working
    • set_mode works again
    • Add widget for showing tabs open
    • Fix cursor resetting after io operations or a reload
    • Remove old code
    • Fix preview not loading when opening new tabs
    • IO error handling is better
    Source code(tar.gz)
    Source code(zip)
  • 0.8.1(Mar 1, 2020)

    A very big refactor release

    • ncurses dependency has been dropped in favour of tui-rs and termion
    • fs_extra dependency has been removed in favour of in-house solution
      • more versatility and preserves permission bits on cut/copy/paste
    • input thread rework
      • no more busy waiting with ncurses::timeout(0)
    • input config rework
      • no longer require users to configure with integer keycodes
      • users now use letters like most other configs
    Source code(tar.gz)
    Source code(zip)
  • 0.8.0(Jun 28, 2019)

    Notable changes

    • have a working command line, but still have improvements
      • tab autocomplete mostly works
    • file operations now work properly most of the time with a proper progression bar
    • certain keys are now mappable (e.g. backspace, tab, enter)

    TODOs

    • command line should not have to use quotes to escape spaces and such like ranger
    • command line doesn't show run off text
    • preview support is still not performing well
    • listen for fs changes so directory contents are up to date
    Source code(tar.gz)
    Source code(zip)
  • 0.7.1(Apr 19, 2019)

    I'm going to only do a minor version bump or else I'm gonna start running out of numbers before 1.0.0 xd. This release took a while to come out because I busy with school.

    • reworked the way directory contents are printed

      • can now specify prefixes for specific files for them to stand out
    • certain structs are now static via lazy_static

    • getting user input is more stable now and support unicode character

    • switched from wcwidth to unicode_width

    • switched from mime_detective back to tree_magic for mimetype parsing

    • fix a lot of issues with file IO (specifically cut/copy/paste)

    • refactored how sorting works

    • search now can go back and forth with search_next/search_prev

    • reworked all commands to return back a result which gets printed on Err

    • removed preview support

      • can currently only preview directory
    Source code(tar.gz)
    Source code(zip)
  • 0.7.0(Jan 13, 2019)

    0.7.0

    Lots of features and changes in this release.

    Changes:

    • support for file search
    • support for creating new directories
    • environment variables now supported in keymap.toml for changing directories
    • shows modified time
    • mimetypes.toml got big changes
      • now supports mimetypes and extensions configuration
      • joshuto will check extensions first before mimetypes
      • now has options fork and silent for programs you want to run without stopping joshuto or messing up joshuto's UI from terminal output
    • tab support!
      • not the most elegant so far, but works
    • can now select multiple files and open all of them with a program
    • preview_list has been completely removed to preview directories
      • instead a dynamic approach as been added so that files can be previewed as well
    • file previews!
      • currently hardcoded to only work on text files and requires head command to work. TM
    • better scrolling!
      • scrolling used to stop the cursor in a single spot around the 6th row.
      • now it can move up and down and only causes the screen to "scroll" when it reaches the scroll_offset threshold configured in joshuto.toml
    • theme support!
      • check out theme.toml under config/ to see how you can color your files :)
    • switched from keymap.conf back to keymap.toml with a new approach to mapping keys
    • file operations now run in the background (paste)
      • shows progress bar
    • user input now still works when file operations are running in the background
    • change directory now actually changes cwd as intended
    • horizontal line is no longer using dashes, but the default horizontal line
    • fix cutting overwrite files
    Source code(tar.gz)
    Source code(zip)
  • 0.6.0(Jan 5, 2019)

    0.6.0

    This version feels pretty stable. I can use it over ranger most of the time now.

    Some notable changes are:

    • fix crash when resizing terminal
    • printing the extension of file if name is too long
    • fix crash when toggling hidden files
    • renaming files now work
      • can set cursor the start/end of file name or start from scratch
    • fix crash with newline characters in filename
    • support for wide character editing
    • support for custom keymapping is added back
    • support for selection is added back
    • paste no longer stops main thread
    • fix deleting symlinks recursively
    • moving files across filesystems now work
    • moving files no longer does unnecessary copies (when on the same filesystem)
    • remove dependency on fs::DirEntry as this caused large amounts of unnecessary open directories, preventing unmounting of filesystems
    • fix u32 type cast when it should have been ncurses::chtype type cast depending on the system configuration of ncurses

    TODOs

    • searching for files
    • theming support
    • better logic for displaying directory listings
      • particularly not forcing the cursor to be between index 0-offset
    • add support for parsing ~/ and expanding inside keymap.conf for changing directories
    • clean ups
    Source code(tar.gz)
    Source code(zip)
  • 0.5.0(Jan 2, 2019)

    Lots of refactoring again.

    Changes:

    • switched from .toml to .conf for keybinding configuration
      • it is more extensible because we can do key -> command rather than command -> key, allowing for dynamic commands
    • use ncurses panels rather than windows for prompting user input
    • refactor previous commands to make use of polymorphism/traits
      • I had this in mind already, just didn't know how to do it in Rust, haha
    • switch from tree_magic in favour of mime_guess
    • most common file operations are now working (might be unstable and cause index out of bounds though)
      • cut, copy, paste, delete, rename

    TODOs

    • fix crash when terminal is too small
    • port over more commands from previous release
    • better logic for displaying directory listings
      • particularly not forcing the cursor to be between index 0-offset
    • add support for parsing ~/ and expanding inside keymap.conf for changing directories
    • clean up code
    Source code(tar.gz)
    Source code(zip)
  • 0.4.0(Dec 24, 2018)

    There has been major refactoring and changes since 0.2.0. The code is still messy, but it can at least be worked upon now. There are now configuration files for general settings, custom keymapping and mimetype app launching. Sorting code is settling down.

    Some TODOs still:

    • add more commands/finish implementing existing commands
    • Ctrl/Alt not working
    • add panels to UI for composite keybindings
    Source code(tar.gz)
    Source code(zip)
  • 0.2.0(Jul 25, 2018)

    I have made most of the directory traversal ground work.

    Other TODOs include:

    • file opening
    • custom keybindings
    • bookmarks
    • shell integration
    Source code(tar.gz)
    Source code(zip)
Owner
Jeff Zhao
4th year student studying Computer Science at the University of Toronto.
Jeff Zhao
⚡️ Blazing fast terminal file manager written in Rust, based on async I/O.

Yazi - ⚡️ Blazing Fast Terminal File Manager Yazi ("duck" in Chinese) is a terminal file manager written in Rust, based on non-blocking async I/O. It

三咲雅 · Misaki Masa 189 Aug 1, 2023
Simple terminal file manager(vi-style keybindings) written in rust

rust-tfm rust-tfm is a terminal file manager written in rust heavily inspired by lf and ranger, and also inspired by suckless software. rust-tfm.mp4 F

Jiao ShiJie 9 Sep 26, 2023
Rust File Management CLI is a command-line tool written in Rust that provides essential file management functionalities. Whether you're working with files or directories, this tool simplifies common file operations with ease.

Rust FileOps Rust File Management CLI is a command-line tool written in Rust that provides essential file management functionalities. Whether you're w

Harikesh Ranjan Sinha 5 May 2, 2024
A Minecraft mod manager for the terminal.

Hopper A Minecraft mod manager for the terminal. Donate High-level Goals modrinth mod searching modrinth mod installation curseforge api too? per-inst

Tebibyte Media 17 Dec 24, 2022
The-way - A code snippets manager for your terminal.

The Way A code snippets manager for your terminal. Record and retrieve snippets you use every day, or once in a blue moon, without having to spin up a

OutOfCheeseError 254 Jan 7, 2023
A bit like tee, a bit like script, but all with a fake tty. Lets you remote control and watch a process

teetty teetty is a wrapper binary to execute a command in a pty while providing remote control facilities. This allows logging the stdout of a process

Armin Ronacher 259 Jan 3, 2023
Simple file manager to practice using tui-rs

simple-tui-file-manager Simple file manager to practice using tui-rs Keymap Key description j, up move up k, down move down h, Left move parent dir l,

Slug 3 Nov 12, 2022
An efficient pictures manager based on custom tags and file system organization.

PicturesManager An efficient pictures manager based on custom tags and file system organization. Developed with Tauri (web app) with a Rust backend an

Clément Grennerat 2 Dec 21, 2022
Low-level Rust library for implementing terminal command line interface, like in embedded systems.

Terminal CLI Need to build an interactive command prompt, with commands, properties and with full autocomplete? This is for you. Example, output only

HashMismatch 47 Nov 25, 2022
An open source, programmed in rust, privacy focused tool for reading programming resources (like stackoverflow) fast, efficient and asynchronous from the terminal.

Falion An open source, programmed in rust, privacy focused tool for reading programming resources (like StackOverFlow) fast, efficient and asynchronou

Obscurely 17 Dec 20, 2022
hackernews_tui is a Terminal UI to browse Hacker News with vim-like key bindings.

hackernews_tui is written in Rust with the help of Cursive TUI library. It uses HN Algolia search APIs to get Hacker News data.

Thang Pham 364 Dec 28, 2022
A library that creates a terminal-like window with feature-packed drawing of text and easy input handling. MIRROR.

BearLibTerminal provides a pseudoterminal window with a grid of character cells and a simple yet powerful API for flexible textual output and uncompli

Tommy Ettinger 43 Oct 31, 2022
It's like monkeytype but from your terminal

DoggyType It's like monkeytype but from ur terminal (ik very unoriginal lmao) Preview doggytype-preview.mp4 Requirements: Rust Build: git clone https:

Nirlep 6 Aug 29, 2023
A simple API client (postman like) in your terminal

ATAC ⚔?? Table Of Contents Description How to use Binary Compile by yourself Features Current TODO v1.0.0 TODO v2.0.0 Documentation Technical precisio

Julien C. 5 Feb 29, 2024
rpsc is a *nix command line tool to quickly search for file systems items matching varied criterions like permissions, extended attributes and much more.

rpsc rpsc is a *nix command line tool to quickly search for file systems items matching varied criterions like permissions, extended attributes and mu

null 3 Dec 15, 2022
A terminal ASCII media player. View images, gifs, videos, webcam, YouTube, etc.. directly in the terminal as ASCII art.

Terminal Media Player View images, videos (files or YouTube links), webcam, etc directly in the terminal as ASCII. All images you see below are just m

Max Curzi 36 May 8, 2023
ask.sh: AI terminal assistant that can read and write your terminal directly!

ask.sh: AI terminal assistant that read from & write to your terminal ask.sh is an AI terminal assistant based on OpenAI APIs such as GPT-3.5/4! What'

hmirin 5 Jun 20, 2023
A simple and efficient terminal UI implementation with ratatui.rs for getting quick insights from csv files right on the terminal

CSV-GREP csv-grep is an intuitive TUI application writting with ratatui.rs for reading, viewing and quickly analysing csv files right on the terminal.

Anthony Ezeabasili 16 Mar 10, 2024
🖥 A feature rich terminal UI file transfer and explorer with support for SCP/SFTP/FTP/S3

?? A feature rich terminal UI file transfer and explorer with support for SCP/SFTP/FTP/S3

Christian Visintin 574 Jan 5, 2023