Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kamiyaa/joshuto
ranger-like terminal file manager written in Rust
https://github.com/kamiyaa/joshuto
clipboard concurrency file-manager hacktoberfest joshuto linux ncurses ranger rust termion toml tui tui-rs
Last synced: 2 days ago
JSON representation
ranger-like terminal file manager written in Rust
- Host: GitHub
- URL: https://github.com/kamiyaa/joshuto
- Owner: kamiyaa
- License: lgpl-3.0
- Created: 2018-07-13T01:38:29.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2024-11-09T15:05:51.000Z (about 1 month ago)
- Last Synced: 2024-11-25T21:05:35.993Z (17 days ago)
- Topics: clipboard, concurrency, file-manager, hacktoberfest, joshuto, linux, ncurses, ranger, rust, termion, toml, tui, tui-rs
- Language: Rust
- Homepage: https://crates.io/crates/joshuto
- Size: 10.4 MB
- Stars: 3,469
- Watchers: 30
- Forks: 155
- Open Issues: 101
-
Metadata Files:
- Readme: README.md
- Contributing: docs/contributing.md
- License: LICENSE
Awesome Lists containing this project
- awesome-rust - joshuto - ranger-like terminal file manager (Applications / File manager)
- awesome-rust - joshuto - ranger-like terminal file manager (Applications / File manager)
- awesome-ratatui - joshuto - Ranger-like terminal file manager written in Rust. (💻 Apps / ⌨️ Development Tools)
- fucking-awesome-rust - joshuto - ranger-like terminal file manager (Applications / File manager)
- fucking-awesome-rust - joshuto - ranger-like terminal file manager (Applications / File manager)
README
[![Linux build](https://github.com/kamiyaa/joshuto/actions/workflows/rust-linux-main.yml/badge.svg)](https://github.com/kamiyaa/joshuto/actions/workflows/rust-linux-main.yml?branch=main)
[![MacOS build](https://github.com/kamiyaa/joshuto/actions/workflows/rust-macos-main.yml/badge.svg)](https://github.com/kamiyaa/joshuto/actions/workflows/rust-macos-main.yml?branch=main)
# joshuto
[ranger](https://github.com/ranger/ranger)-like terminal file manager written in Rust.
![Alt text](screenshot.png?raw=true "joshuto")
## Dependencies
- [cargo](https://github.com/rust-lang/cargo/) >= 1.67
- [rustc](https://www.rust-lang.org/) >= 1.67
- 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
```#### From pre-compiled binary
Dependencies:
- curl
- openssl##### Latest release
Installs the latest version using the default installation path (_$HOME/.local/bin/_).
``` bash
~$ 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.
``` bash
~$ INSTALL_PREFIX="$HOME" bash <(curl -s https://raw.githubusercontent.com/kamiyaa/joshuto/master/utils/install.sh)
```##### System wide
``` bash
~# 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.
``` bash
~$ RELEASE_VER='v0.9.4' bash <(curl -s https://raw.githubusercontent.com/kamiyaa/joshuto/master/utils/install.sh)
```#### 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
```##### Arch ([archlinuxcn](https://github.com/archlinuxcn/repo/))
- [stable version (x86_64)](https://github.com/archlinuxcn/repo/tree/master/archlinuxcn/joshuto)
- [stable version (aarch64)](https://github.com/archlinuxcn/repo/tree/master/alarmcn/joshuto)```
[yay/paru] -S joshuto
```- [latest git version (x86_64)](https://github.com/archlinuxcn/repo/tree/master/archlinuxcn/joshuto-git)
- [latest git version (aarch64)](https://github.com/archlinuxcn/repo/tree/master/alarmcn/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
```##### MacOS/Linux [Homebrew](https://brew.sh/)
```
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](/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) 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)