DLFW / joshuto

ranger-like terminal file manager written in Rust

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Linux build

MacOS build

joshuto

ranger-like terminal file manager written in Rust.

Alt text

Dependencies

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

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
  • 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)

About

ranger-like terminal file manager written in Rust

License:GNU Lesser General Public License v3.0


Languages

Language:Rust 96.9%Language:Shell 2.2%Language:Nix 0.7%Language:Dockerfile 0.2%