2021-10-16 03:03:56 +00:00
|
|
|
# Introduction
|
2021-06-22 11:52:46 +00:00
|
|
|
|
2021-06-28 05:31:23 +00:00
|
|
|
xplr is a terminal UI based file explorer that aims to increase our terminal
|
2021-06-22 11:52:46 +00:00
|
|
|
productivity by being a flexible, interactive orchestrator for the ever growing
|
|
|
|
awesome command-line utilities that work with the file-system.
|
|
|
|
|
2021-06-28 05:31:23 +00:00
|
|
|
To achieve its goal, xplr strives to be a fast, minimal and more importantly,
|
2021-06-22 11:52:46 +00:00
|
|
|
hackable file explorer.
|
|
|
|
|
2021-06-28 05:31:23 +00:00
|
|
|
xplr is not meant to be a replacement for the standard shell commands or the
|
2022-02-05 07:21:31 +00:00
|
|
|
GUI file managers. Rather, it aims to [integrate them all][14] and expose an
|
|
|
|
intuitive, scriptable, [keyboard controlled][2],
|
|
|
|
[real-time visual interface][1], also being an ideal candidate for [further
|
|
|
|
integration][15], enabling you to achieve insane terminal productivity.
|
2021-06-28 03:58:42 +00:00
|
|
|
|
2022-02-05 07:21:31 +00:00
|
|
|
## Concept
|
2021-06-28 03:58:42 +00:00
|
|
|
|
|
|
|
### Hackable
|
|
|
|
|
|
|
|
xplr is built with configurability in mind. So it allows you to perform a vast
|
2022-02-05 07:21:31 +00:00
|
|
|
set of operations and make it look and behave just the way you want.
|
2021-06-28 03:58:42 +00:00
|
|
|
|
2021-06-28 05:31:23 +00:00
|
|
|
A few things you can do with the xplr configuration
|
2021-06-28 03:58:42 +00:00
|
|
|
|
2022-02-05 07:21:31 +00:00
|
|
|
- [Hacks][16]
|
|
|
|
- [Plugins][3]
|
|
|
|
- [Integrations][15]
|
2021-06-28 03:58:42 +00:00
|
|
|
|
2022-02-05 07:21:31 +00:00
|
|
|
### Fast
|
2021-06-28 03:58:42 +00:00
|
|
|
|
2021-06-28 05:31:23 +00:00
|
|
|
Although speed is not the primary concern, xplr is already fast enough so that
|
|
|
|
you can take it out for a walk into your `node_modules` or `/nix/store` any
|
2022-02-05 07:21:31 +00:00
|
|
|
time you want, and it will only get faster. Still, if you feel like it's
|
|
|
|
somehow making you slow, just report it. Most probably we're just waiting for
|
|
|
|
someone to complain.
|
|
|
|
|
|
|
|
**Tip:** A quick and easy way to optimize the UI rendering is reducing the
|
|
|
|
number of columns in the table.
|
2021-06-28 03:58:42 +00:00
|
|
|
|
2022-02-05 07:21:31 +00:00
|
|
|
### Minimal
|
2021-06-28 03:58:42 +00:00
|
|
|
|
2022-02-05 07:21:31 +00:00
|
|
|
xplr is being referred to as a _File Explorer_, not a _File Manager_. This
|
|
|
|
is because at the core, xplr is only an explorer, and [outsources][18] the file
|
|
|
|
management operations to external commands. This helps xplr stay minimal, and
|
|
|
|
focus only on doing what it does best.
|
2021-06-28 03:58:42 +00:00
|
|
|
|
2022-02-05 07:21:31 +00:00
|
|
|
So, just like speed, minimalism isn't as as aggressively pursued as
|
|
|
|
hackability. xplr simply prefers to stay minimal and looks for the opportunity
|
|
|
|
to lose some kb if it makes sense.
|
2021-06-28 03:58:42 +00:00
|
|
|
|
2022-02-05 07:21:31 +00:00
|
|
|
## Features
|
2021-06-28 03:58:42 +00:00
|
|
|
|
2022-02-05 07:21:31 +00:00
|
|
|
Some of the coolest features xplr provide beside the basic stuff:
|
2021-06-28 03:58:42 +00:00
|
|
|
|
2022-02-05 07:21:31 +00:00
|
|
|
- [Embedded LuaJIT][5] for portability and extensibility.
|
|
|
|
- [A simple system based on message passing][10] to control xplr session using:
|
|
|
|
- [Keyboard inputs][11]
|
|
|
|
- [Shell Commands][12]
|
|
|
|
- [Lua Functions][13]
|
|
|
|
- [Readline-like input buffer][9] with customizable behaviour to read user
|
|
|
|
inputs.
|
|
|
|
- [Switchable recover mode][7] that saves you from doing unwanted things when in a
|
2021-06-28 03:58:42 +00:00
|
|
|
hurry.
|
2022-02-05 07:21:31 +00:00
|
|
|
- [Customizable layouts][1] with built-in panels. For e.g.
|
|
|
|
- **Selection list** to show you the selected paths in real-time.
|
|
|
|
- **Help menu** to show you the available keys bindings in each mode.
|
|
|
|
- **Input & logs** to read input and display logs.
|
|
|
|
- **Filter and sort pipeline** to show you the applied filters and sorters.
|
|
|
|
- [Custom file properties][17] with custom colors can be displayed in the table.
|
|
|
|
- [FIFO manager][19] to manage a FIFO file that can be used to
|
2021-07-03 09:24:37 +00:00
|
|
|
[integrate with previewers][6].
|
2021-06-28 03:58:42 +00:00
|
|
|
- **Different quit options:**
|
2021-06-28 06:23:54 +00:00
|
|
|
- Quit with success without any output (`q`).
|
|
|
|
- Quit with success and the result printed on stdout (`enter`).
|
2021-06-28 03:58:42 +00:00
|
|
|
- Quit with success and the present working directory printed on stdout
|
2021-06-28 06:23:54 +00:00
|
|
|
(`:` `q` `p`).
|
2021-06-28 03:58:42 +00:00
|
|
|
- Quit with success and the path under focus printed on stdout
|
2021-06-28 06:23:54 +00:00
|
|
|
(`:` `q` `f`).
|
2021-06-28 03:58:42 +00:00
|
|
|
- Quit with success and the selection printed on stdout
|
2021-06-28 06:23:54 +00:00
|
|
|
(`:` `q` `s`).
|
|
|
|
- Quit with failure (`ctrl-c`).
|
2021-07-03 09:24:37 +00:00
|
|
|
|
2022-02-05 07:21:31 +00:00
|
|
|
**Q.** What features should be added here? [let us know][20].
|
|
|
|
|
2021-10-16 03:03:56 +00:00
|
|
|
[1]: layouts.md
|
2021-12-29 03:56:01 +00:00
|
|
|
[2]: configure-key-bindings.md
|
2021-10-16 03:03:56 +00:00
|
|
|
[3]: awesome-plugins.md
|
|
|
|
[4]: https://github.com/sayanarijit/xplr/tree/main/benches
|
|
|
|
[5]: https://github.com/sayanarijit/xplr/discussions/183
|
|
|
|
[6]: https://github.com/sayanarijit/xplr/pull/229
|
2022-02-05 07:21:31 +00:00
|
|
|
[7]: general-config.md#enable_recover_mode
|
|
|
|
[8]: default-key-bindings.md
|
|
|
|
[9]: https://github.com/sayanarijit/xplr/pull/397
|
|
|
|
[10]: message.md
|
|
|
|
[11]: configure-key-bindings.md
|
2022-02-27 08:40:17 +00:00
|
|
|
[12]: mode.md#input-pipe
|
|
|
|
[13]: lua-function-calls.md
|
2022-02-05 07:21:31 +00:00
|
|
|
[14]: awesome-plugins.md#integration
|
|
|
|
[15]: awesome-integrations.md
|
|
|
|
[16]: awesome-hacks.md
|
|
|
|
[17]: node_types.md
|
|
|
|
[18]: https://github.com/sayanarijit/xplr/blob/main/src/init.lua
|
|
|
|
[19]: message.md#startfifo
|
|
|
|
[20]: community.md
|