joshuto

kamiyaaLGPL-3.0活跃维护

用 Rust 写的终端文件管理器,操作方式类似 ranger,支持键盘操作、多标签和并发任务,适合习惯在终端里高效浏览和管理文件的人。

ranger-like terminal file manager written in Rust

v0.9.9发布于 2025-05-20 16:00 UTC3,744star164fork同步于 2026-11-10 17:41 UTC

怎么上手

由 README 提炼,执行前请确认
cargo install --git https://github.com/kamiyaa/joshuto.git --force
硬件要求按 README 说明

README 未说明;这是终端程序,不涉及 GPU 或显存要求。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

用 Rust 写的 ranger 风格终端文件管理器,带预览、标签页和模糊搜索

用 Rust 写的终端文件管理器,操作方式类似 ranger,支持键盘操作、多标签和并发任务,适合习惯在终端里高效浏览和管理文件的人。

核心能力

  • 用 TOML 配置键位、主题、mimetype 和书签
  • 支持标签页、批量重命名和文件预览
  • 通过 fzf 做模糊搜索,可选 zoxide 跳转
  • 异步执行剪切、复制、粘贴等文件 IO
  • 支持退出后停留在当前目录,并接入回收站

容易踩的坑

编译需要 cargo 和 rustc 版本不低于 1.90;剪贴板功能需另装 xsel、xclip 或 wl-clipboard;fzf 与 zoxide 为可选依赖,不装则对应功能不可用。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.9.9
  1. v0.9.9pre-release最新正式版2025-05-20 · 2025-05-20 16:00 UTC

    Thank you everyone for all the contributions! :pray: :fire:

    Changes

    • add back confirm_exit option
    • add --last option to new_tab
      • thanks to @Akmadan23
    • add support for %s and %p to subprocess commands
      • thanks to @Akmadan23
    • Zoxide improvements
      • thanks to @chrjabs
    • hide image preview in fzf and task view
      • thanks to @Akmadan23
    • autocompletion for each command
      • thanks to @Akmadan23
    • xdg-thumb for previews and thumbnails for non image files
      • thanks to @DLFW
    • gtrash support
      • thanks to @SBhojani
    • more linemode options
      • thanks to @Lzzzzzt
    • backspace or delete will exit textfield if empty
    • mouse scrolling support for preview
      • thanks to @krivahtoo
    • configure preview image background via theme.toml
      • thanks to @benjajaja
    • thread optimizations
    • migrate from libc to nix
    • add suspend command support
    • enable lto for release builds
    • fix parent_cursor_move_* commands not setting cwd properly
    • add minimal view mode
      • thanks to @flipsi
    • add command to set view mode
      • thanks to @flipsi
    • destruct tuples
      • thanks to @Integral-Tech
    • rework paste symlink to work like ranger
    • use bat as fallback for html and json
      • thanks to @j-lakeman
    • replace manual sign detection with format spec
      • thanks to @Integral-Tech
    • documentation improvements
    • update dependencies
      • thanks to @benjajaja , @paretje
    • add option to use current working drectory with %d keyword
      • thanks to @as3ii
    • add Ctrl+h as backspace in textfield
      • thanks to @jackyhevey

    Fixes

    • fix crash when trying to open_with inside an empty directory
    • fix ratatui dep
    • fix crash when io operation doesn't start successfully
    • remove ctime for musl env
      • thanks to @usamoi
    • fix autocomplete not working
    • fix ci
      • thanks to @Integral-Tech
    • fix foreground color
      • thanks to @j-lakeman
    • fix not being able to copy filenames with single quotes
  2. v0.9.8pre-release2024-03-15 · 2024-03-15 23:54 UTC
    查看更新说明

    Fix version in Cargo.lock

  3. v0.9.7pre-release2024-03-15 · 2024-03-15 23:05 UTC
    查看更新说明

    Updates on the project

    Work and life has been quite busy for me recently. Thus I haven't had the time to look over all the issues and pull requests. I apologize for all merge conflicts I've been causing for the outstanding pull requests :pray: I will get to them eventually!

    As always, I appreciate all the contributions made by everyone!

    Changes

    • Improved documentation
      • Thanks to @Integral-Tech , @11D-Beyonder , @b-m-f
    • Update install script
      • Thanks to @kennycallado
    • Add large file support for exif
      • Thanks to @Mroik
    • Add more detailed version output via shadow-rs
      • Thanks to @xrelkd
    • Add command for printing embedded configs
      • Thanks to @sushi-shi
    • Add lscolor support
      • Thanks to @luteran42
    • Mouse support is now configurable
      • Thanks to @Mroik
    • Ratatui-image integration
      • Thanks to @benjajaja
    • Use less pager for output instead of joshuto's own confirm
      • Thanks to @luteran42
    • Add capture and stdout command
      • Thanks to @DLFW
    • Add case_insensitive_ext option (originally case_sensitive_ext
      • Thanks to @Akmadan23
    • Add reverse flag to sort
      • Thanks @Akmadan23

    Fixes

    • Fix overflow bug with bookmarks
      • Thanks to @pantosaur
    • Fix trash command with filenames with apostrophes
      • Thanks to @Akmadan23
    • Fix clear numbered command buffer on cursor move
      • Thanks to @Akmadan23
    • Fix theme not using prefix
    • Fix using real name instead of username
      • Thanks to @Akmadan23
  4. v0.9.6pre-release2023-11-20 · 2023-11-20 21:55 UTC
    查看更新说明

    Changes

    • Improved documentation
      • Thanks to @cereum , @DLFW , @Lzzzzzt , @kennycallado , @radek-sprta , @Mroik
    • Migrating to ratatui
    • Scrollable Tab bar
      • Thanks to @DLFW
    • Add support for command aliasing
      • Thanks to @Akmadan23
    • Add custom commands
      • Thanks to @Dzordzu
    • Mtime displays localtime instead of UTC
      • Thanks to @Lzzzzzt
    • Add user and group in footer
      • Thanks to @Lzzzzzt
    • Add more options to linemode and make it more configurable
      • Thanks to @Lzzzzzt
    • Add current dir name to tab
      • Thanks to @Lzzzzzt
    • Add --all-selected option to CopyFilePath
      • Thanks to @uros-5
    • Trash feature uses command line tools instead of library
      • This reduces dependencies and compilation errors
    • Add optional description to keymaps
      • Also show description in help menu
    • Case sensitive option for searching, selecting and filtering
      • Thanks to @ctj12461
    • Regex support
      • Thanks to @ctj12461
    • Add a lot more select and filtering options
      • Thanks to @ctj12461
    • Add no confirm option to delete_files
      • Thanks to @Akmadan23
    • Cleanup warnings
      • Thanks to @kjuulh
    • Command chaining support
    • Subcommand support
      • Thanks to @xrelkd
    • Shell completion for nix flake
      • Thanks to @xrelkd
    • rename_file_append_ext command
      • Thanks to @rqdmap
    • Update flake
      • Thanks to @Ruixi-rebirth
    • Add mutex lock for preview threads
      • Thanks to @luteran42
    • Add wezterm compatibility
      • Thanks to @kennycallado
    • Add focus on create option
      • Thanks to @Akmadan23
    • Add %p keyword to file_path()
      • Thanks to @luteran42
    • Add more mimetypes
      • Thanks to @MayoDuckPy , @xfzv
    • Add more icons
      • Thanks to @xrelkd

    Fixes

    • Make input thread more robust
      • There are times when terminal input and joshuto are out of sync, causing keystrokes and view to be out of sync and unusable
    • Remove temporary file after bulk_rename
    • Recycle bin feature more isolated from conditional compilation
    • Fix xdg_open for non-forking applications
    • Fix macos build
      • Thanks to @kennycallado
    • Remove debug print
      • Thanks to @awerty-noob
  5. v0.9.50.9.5pre-release2023-07-04 · 2023-07-04 20:36 UTC
    查看更新说明

    Thank you everyone who has contributed to and supported this project. It has been over a year since I made a new release. In that time, the amount of users using Joshuto has grown a lot and a lot of new features has been added. I hope to continue improving on this project and working together with everyone!

    Changes

    • delete_files now has the ability to be queued up (just like cut/copy operations)

    • --file-chooser option for using joshuto as a file picker

    • add symlink_files command

      • works like cut/copy but instead of pasting the file, paste an absolute or relative symlink to the targets
    • File sorting now works per tab

      • Thanks to @DLFW
    • Visual mode support

      • Thanks to @DLFW
    • numbered_command is now a proper command that can be invoked

    • tab_switch_index open tabs to populate given index

    • Show how many files are selected in the footer

    • Mimetype support! (require file command installed to work)

    • Add Ranger-like mouse controls

      • Thanks to @DLFW
    • filter command to filter directory listing

      • Thanks to @krivahtoo
    • Add linemode

      • Thanks to @DLFW
    • Support multiple zoxide arguments

      • Thanks to @krivahtoo
    • rename_keep_ext: rename with the file name removed but keeps extension

      • Thanks to @fritzrehde
    • Bookmark support

    • --permanently option for deleting files

      • Thanks to @krivahtoo
    • Screenshot compression

      • Thanks to @indigolain
    • Remove deleted file entries from history

      • Thanks to @sergey-suslov
    • New tab can now open in specific directories

      • Thanks to @DLFW
    • Ability to quit to directory via command line argument on startup

      • Thanks to @pantosaur
    • Migration to ratatui

      • Thanks to @Ragnyll and @MathieuHerrmann
    • Nix flake support

      • Thanks to @Ruixi-rebirth
    • Add support for customizing file icons

      • Thanks to @krivahtoo
    • Migration to termion v2

      • Thanks to @asim215
    • Migrate to shellexpand v3 and rustyline v12

    • Avoid changing constraints during preview loading

      • Thanks to @Handfish
    • Documentation fixes and updates

      • Thanks to @aouerf , @DLFW , @yanshay , @danielronalds , @a-kenji , @eltociear , @hezhizhen , @imbolc , @donovanglover

    Fixes

    • Configs are loaded at the right time now (on startup instead of when used)
    • Fix preview width is 0
    • Fix HSplit view crashing
      • Thanks to @Vinegret43
    • Fix subdir_fzf stuck on large directories
      • Thanks to @Jacky-Lzx
    • Fix incorrect sort_method in default config
      • Thanks to @rqdmap

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Linux build

    MacOS build

    joshuto

    ranger-like terminal file manager written in Rust.

    Alt text

    Dependencies

    • cargo >= 1.90
    • rustc >= 1.90
    • xsel/xclip/wl-clipboard (optional, for clipboard support)
    • fzf (optional)
    • zoxide (optional)

    Also see Cargo.toml

    Building

    ~$ cargo build
    

    Installation

    For single user
    ~$ cargo install --path=. --force
    
    For single user with cargo
    ~$ cargo install --git https://github.com/kamiyaa/joshuto.git --force
    
    System wide
    ~# cargo install --path=. --force --root=/usr/local     # /usr also works
    
    From pre-compiled binary

    Dependencies:

    • curl
    • openssl
    Latest release

    Installs the latest version using the default installation path ($HOME/.local/bin/).

    ~$ bash <(curl -s https://raw.githubusercontent.com/kamiyaa/joshuto/master/utils/install.sh)
    
    Custom Installation path

    Allows you to install Joshuto to a custom directory by setting the INSTALL_PREFIX variable.

    ~$ INSTALL_PREFIX="$HOME" bash <(curl -s https://raw.githubusercontent.com/kamiyaa/joshuto/master/utils/install.sh)
    
    System wide
    ~# INSTALL_PREFIX="/usr/local/bin" bash <(curl -s https://raw.githubusercontent.com/kamiyaa/joshuto/master/utils/install.sh)
    
    Specific release

    Installs a specific release version of Joshuto by the desired version number.

    ~$ RELEASE_VER='v0.9.4' bash <(curl -s https://raw.githubusercontent.com/kamiyaa/joshuto/master/utils/install.sh)
    
    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
    
    Arch (archlinuxcn)
    [yay/paru] -S joshuto
    
    [yay/paru] -S joshuto-git
    
    Gentoo (gentoo-zh)
    sudo eselect repository enable gentoo-zh
    sudo emerge -av app-misc/joshuto
    
    NixOS

    Here's an example of using it in a nixos configuration

    {
      description = "My configuration";
    
      inputs = {
        nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
        joshuto.url = "github:kamiyaa/joshuto";
      };
    
      outputs = { nixpkgs, joshuto, ... }:
        {
          nixosConfigurations = {
            hostname = nixpkgs.lib.nixosSystem
              {
                system = "x86_64-linux";
                modules = [
                  {
                    nixpkgs.overlays = [ joshuto.overlays.default ];
                    environment.systemPackages = with pkgs;[
                      joshuto
                    ];
                  }
                ];
              };
          };
        };
    }
    

    Temporary run, not installed on the system

    nix run github:kamiyaa/joshuto
    
    MacOS (MacPorts)
    sudo port install joshuto
    
    MacOS/Linux Homebrew
    brew install joshuto
    

    Usage

    ~ $ joshuto
    
    Navigation
    • Move up: arrow_up or k
    • Move down: arrow_down or j
    • Move to parent directory: arrow_left or h
    • Open file or directory: arrow_right or l
    • Go to the top: home or g g
    • Go to the bottom: end or G
    • Page up: page_up or ctrl+u
    • Page down: page_down or ctrl+d
    Tab Management
    • Open a new tab: ctrl+t
    • Open a new tab with current directory: T
    • Close the current tab: W or ctrl+w
    • Switch to next tab: \t
    • Switch to previous tab: backtab
    File Operations
    • Rename file: a to append or A to prepend
    • Delete file: delete or d d
    • Cut file: d d
    • Copy file: y y
    • Paste file: p p
    • Paste file with overwrite: p o
    • Symlink files: p l for absolute path, p L for relative path
    Miscellaneous
    • Toggle hidden files: z h
    • Reload directory list: R
    • Change directory: c d
    • Show tasks: w
    • Set mode: =
    • Enter command mode: :

    See docs#quit for exiting into current directory and other usages

    Configuration

    Check out docs for details and config for examples

    joshuto.toml
    • general configurations
    keymap.toml
    • for keybindings
    mimetype.toml
    • for opening files with applications
    theme.toml
    • color customizations
    bookmarks.toml
    • bookmarks

    Contributing

    See docs

    Bugs/Feature Request

    Please create an issue :)

    Features

    • Tabs
    • Devicons
    • Fuzzy search via fzf
    • Ctrl/Shift/Alt support
    • Bulk rename
    • File previews
    • Exit to current directory
    • Asynch File IO (cut/copy/paste)
    • Custom colors/theme
    • Line numbers
      • Jump to number
    • File chooser
    • Trash support

    TODOs

    • Built-in command line
      • Mostly working
      • Currently implementation is kind of janky
      • Tab autocomplete (in progress)