Awesome
joshuto
ranger-like terminal file manager written in Rust.
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
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
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
Tab Management
- 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
File Operations
- 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
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
- 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
TODOs
- Built-in command line
- Mostly working
- Currently implementation is kind of janky
- Tab autocomplete (in progress)