[](https://github.com/kamiyaa/joshuto/actions/workflows/rust-linux-main.yml)
[](https://github.com/kamiyaa/joshuto/actions/workflows/rust-macos-main.yml)
# joshuto
[ranger](https://github.com/ranger/ranger)-like terminal file manager written in Rust.

## Dependencies
- [cargo](https://github.com/rust-lang/cargo/) >= 1.55
- [rustc](https://www.rust-lang.org/) >= 1.55
- xsel/xclip/wl-clipboard (optional, for clipboard support)
- fzf (optional)
- zoxide (optional)
Also see [Cargo.toml](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
```
#### Packaging status
##### Fedora ([COPR](https://copr.fedorainfracloud.org/coprs/atim/joshuto/))
```
sudo dnf copr enable atim/joshuto -y
sudo dnf install joshuto
```
##### Arch ([AUR](https://aur.archlinux.org))
- [release](https://aur.archlinux.org/packages/joshuto)
```
[yay/paru] -S joshuto
```
- [build from source](https://aur.archlinux.org/packages/joshuto-git)
```
[yay/paru] -S joshuto-git
```
##### Gentoo ([gentoo-zh](https://github.com/microcai/gentoo-zh/tree/master/app-misc/joshuto))
```
sudo eselect repository enable gentoo-zh
sudo emerge -av app-misc/joshuto
```
##### NixOS
> Here's an example of using it in a nixos configuration
```nix
{
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
```sh
nix run github:kamiyaa/joshuto
```
##### MacOS ([MacPorts](https://ports.macports.org/port/joshuto/details/))
```
sudo port install joshuto
```
## Usage
```
~ $ joshuto
```
See [docs#quit](/docs/configuration/keymap.toml.md#quit-quit-joshuto) for exiting into current directory
and other usages
## Configuration
Check out [docs](/docs) for details and [config](/config) for examples
#### [joshuto.toml](/config/joshuto.toml)
- general configurations
#### [keymap.toml](/config/keymap.toml)
- for keybindings
#### [mimetype.toml](/config/mimetype.toml)
- for opening files with applications
#### [theme.toml](/config/theme.toml)
- color customizations
#### [bookmarks.toml](/config/bookmarks.toml)
- bookmarks
## Contributing
See [docs](/docs)
## Bugs/Feature Request
Please create an issue :)
## Features
- Tabs
- Devicons
- Fuzzy search via [fzf](https://github.com/junegunn/fzf)
- Ctrl/Shift/Alt support
- Bulk rename
- File previews
- See [Image previews](/docs/image_previews.md) 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
- [x] Built-in command line
- Mostly working
- Currently implementation is kind of janky
- [ ] Tab autocomplete (in progress)