Skip to content

kamiyaa/joshuto

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Feb 11, 2025
d012034 · Feb 11, 2025
Aug 13, 2024
Dec 10, 2024
Feb 11, 2025
Feb 11, 2025
Dec 19, 2023
Sep 12, 2023
Sep 7, 2023
Dec 4, 2024
Oct 9, 2024
Jul 13, 2018
Jul 6, 2024
Jan 20, 2024
Jul 6, 2024
Aug 13, 2024
Sep 26, 2023
May 23, 2022
Jan 28, 2023
Feb 28, 2024

Repository files navigation

Linux build

MacOS build

joshuto

ranger-like terminal file manager written in Rust.

Alt text

Dependencies

  • cargo >= 1.67
  • rustc >= 1.67
  • 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
[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

  • general configurations
  • for keybindings
  • for opening files with applications
  • color customizations
  • 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)