Home

Awesome

💫 projectable

screenshot

<p><sub>Preview done with <a href="https://github.com/sharkdp/bat">bat</a></sub></p>

projectable is a highly configurable TUI file manager built for projects. You can do handle all your project's file-based needs from a comfortable and smooth interface.

Instead of exploring the depths of your most nested directory, open a file simply from the projectable file listing!

Here are just a few builtin things projectable can do:

🚀 Getting Started

To get started, you can use one of the following installation methods:

Minimum Supported Rust Version (MSRV)

When installing from Cargo or building from source, the MSRV for projectable is currently 1.70.x

<details> <summary><a href="https://crates.io">cargo</a></summary>
$ cargo install projectable
</details> <details> <summary><a href="https://brew.sh">Homebrew</a></summary>
$ brew install dzfrias/formulae/projectable
</details> <details> <summary><a href="https://aur.archlinux.org">Arch User Repository</a></summary>

projectable is available from the Arch User Repository though this package. Thanks to @Absobel for creating this!

</details> <details> <summary><a href="https://pkgsrc.se/misc/projectable">NetBSD official Repositories</a></summary>

projectable is available from the NetBSD official repositories though this package.

</details> <details> <summary>Releases</summary>

Go to the releases page, and binaries for every major platform should be there.

</details> <details> <summary>Build from source</summary>

Requires Rust to be installed on your computer.

$ git clone https://github.com/dzfrias/projectable
$ cd projectable
$ cargo build --release
$ ./target/release/prj
</details>

To verify installation worked correctly, run prj --version.

After you've installed, run prj to start it up! The default keybinds are vim-like (k for up, j for down), but you can change them in CONFIG.md.

⌨️ Keybinds

Here a list of the available actions and their default bindings. For customization, see CONFIG.md.

KeyDescription
jGo down
kGo up
enterOpen file or directory
q/escQuit
oExpand all
OCollapse all
gGo to first
GGo to last
lExpand all under directory
hCollapse all under directory
fFocus directory
nNew file
NNew directory
dDelete file/directory
rRename file
RMove file
eExecute command (see syntax)
ctrl-cCancel command(s)
vFile-specific command
ctrl-nGo down by three
ctrl-pGo up by three
/Search
ctrl-dMove preview down
ctrl-uMove preview up
tToggle git diff view
TToggle filter for modified files
.Toggle hidden files
mToggle mark on file
MOpen marks
\Clear filters (focus, git)
?Open help window

You can make your own keybinds, too! This is of course done in the configuration file, the details of which can be found in CONFIG.md.

Command Syntax

The execute command action has some extra features that allow for easy and dynamic command execution.

By default commands are run in the background, but this behavior can be changed, so interactive programs like fzf work. In the command execution window, prepend !! to execute in the foreground. For example, !!fzf will execute fzf.

Additionally, use {} to interpolate the currently selected file into your command. echo {} would log the file you are currently selecting.

Lastly, {...} will prompt you for input. This is only available in custom commands defined in the config file. So, if you've defined a custom command bound to ctrl-b that executes cargo add {...}, pressing ctrl-b will prompt you for something to cargo add.

There are also keybinds that integrate with tmux. When entering input to run a command, press ctrl-v to open a vertical split. ctrl-x will open a horizontal one, ctrl-n a new window, and ctrl-f a floating one.

In short:

ItemDescription
!!Execute in foreground
{}Interpolate selected file
{...}Prompt for input
ctrl-vVertical split
ctrl-xHorizontal split
ctrl-nNew window
ctrl-fFloating window

✍️ License

This project is licensed under the MIT License.