ranger-like terminal file manager written in Rust.
- cargo >= 1.55
- rustc >= 1.55
- xsel/xclip/wl-clipboard (optional, for clipboard support)
- fzf (optional)
- zoxide (optional)
Also see Cargo.toml
~$ cargo build
~$ cargo install --path=. --force
~$ cargo install --git https://github.com/kamiyaa/joshuto.git --force
~# cargo install --path=. --force --root=/usr/local # /usr also works
Dependencies:
- curl
- openssl
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)
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)
~# INSTALL_PREFIX="/usr/local/bin" bash <(curl -s https://raw.githubusercontent.com/kamiyaa/joshuto/master/utils/install.sh)
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)
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
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
~ $ joshuto
- Move up:
arrow_up
ork
- Move down:
arrow_down
orj
- Move to parent directory:
arrow_left
orh
- Open file or directory:
arrow_right
orl
- Go to the top:
home
org g
- Go to the bottom:
end
orG
- Page up:
page_up
orctrl u
- Page down:
page_down
orctrl d
- Open a new tab:
ctrl t
- Open a new tab with current directory:
T
- Close the current tab:
W
orctrl w
- Switch to next tab:
\t
- Switch to previous tab:
backtab
- Rename file:
a
to append orA
to prepend - Delete file:
delete
ord 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
- 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
Check out docs for details and config for examples
- general configurations
- for keybindings
- for opening files with applications
- color customizations
- bookmarks
See docs
Please create an issue :)
- Tabs
- Devicons
- Fuzzy search via fzf
- Ctrl/Shift/Alt support
- Bulk rename
- File previews
- See Image previews for more details
- Exit to current directory
- Asynch File IO (cut/copy/paste)
- Custom colors/theme
- Line numbers
- Jump to number
- File chooser
- Trash support
- Built-in command line
- Mostly working
- Currently implementation is kind of janky
- Tab autocomplete (in progress)