Minor fixes and format docs

pull/359/head
Arijit Basu 3 years ago
parent 413430d5f8
commit 947cfeb327
No known key found for this signature in database
GPG Key ID: 0F8EF5258DC38077

@ -1,5 +1,4 @@
A hackable, minimal, fast TUI file explorer
===========================================
# A hackable, minimal, fast TUI file explorer
- [Introduction][1]
- [Quickstart][2]
@ -28,30 +27,29 @@ A hackable, minimal, fast TUI file explorer
- [Community][24]
- [Contribute][25]
[1]:introduction.md
[2]:quickstart.md
[3]:install.md
[4]:post-install.md
[5]:configuration.md
[6]:general-config.md
[7]:modes.md
[8]:message.md
[9]:layouts.md
[10]:node_types.md
[11]:style.md
[12]:sorting.md
[13]:filtering.md
[14]:default-key-bindings.md
[15]:plugin.md
[16]:installing-plugins.md
[17]:writing-plugins.md
[18]:awesome-plugins.md
[19]:integration.md
[20]:awesome-integrations.md
[21]:todo.md
[22]:alternatives.md
[23]:upgrade-guide.md
[24]:community.md
[25]:contribute.md
[26]:column-renderer.md
[1]: introduction.md
[2]: quickstart.md
[3]: install.md
[4]: post-install.md
[5]: configuration.md
[6]: general-config.md
[7]: modes.md
[8]: message.md
[9]: layouts.md
[10]: node_types.md
[11]: style.md
[12]: sorting.md
[13]: filtering.md
[14]: default-key-bindings.md
[15]: plugin.md
[16]: installing-plugins.md
[17]: writing-plugins.md
[18]: awesome-plugins.md
[19]: integration.md
[20]: awesome-integrations.md
[21]: todo.md
[22]: alternatives.md
[23]: upgrade-guide.md
[24]: community.md
[25]: contribute.md
[26]: column-renderer.md

@ -1,5 +1,4 @@
Alternatives
============
# Alternatives
These are the alternative TUI/CLI file managers/explorers you might want to check out (in no particular order).
@ -18,17 +17,16 @@ These are the alternative TUI/CLI file managers/explorers you might want to chec
[add more][13]
[1]:https://github.com/jarun/nnn/
[2]:https://github.com/vifm/vifm
[3]:https://github.com/ranger/ranger
[4]:https://github.com/gokcehan/lf
[5]:https://github.com/kamiyaa/joshuto
[6]:https://github.com/dylanaraps/fff
[7]:https://github.com/MidnightCommander/mc
[8]:https://github.com/Canop/broot
[9]:https://github.com/rabite0/hunter
[10]:https://git.2f30.org/noice/
[11]:https://github.com/pasqu4le/clifm
[12]:https://github.com/leo-arch/clifm
[13]:community.md
[1]: https://github.com/jarun/nnn/
[2]: https://github.com/vifm/vifm
[3]: https://github.com/ranger/ranger
[4]: https://github.com/gokcehan/lf
[5]: https://github.com/kamiyaa/joshuto
[6]: https://github.com/dylanaraps/fff
[7]: https://github.com/MidnightCommander/mc
[8]: https://github.com/Canop/broot
[9]: https://github.com/rabite0/hunter
[10]: https://git.2f30.org/noice/
[11]: https://github.com/pasqu4le/clifm
[12]: https://github.com/leo-arch/clifm
[13]: community.md

@ -1,46 +1,36 @@
Awesome Integrations
====================
# Awesome Integrations
Here's a list of awesome xplr integrations that you might want to check out.
If none of the following integrations work for you, you can create your own and
[let us know][1].
Categories
----------
## Categories
- [Editor][2]
- [Shell][3]
- [Security Tools][4]
Editor
------
## Editor
- [**vim-floaterm**][6] xplr integrated in vim-floaterm (Neo)vim plugin.
- [**xplr.nvim**][9] Opens xplr inside nvim, and hosts a msgpack client inside xplr.
- [**xplr.vim**][5] Pick files in Vim using xplr.
Shell
-----
## Shell
- [**powerlevel10k**][7] Powerlevel10k prompt for xplr shell.
Security Tools
--------------
## Security Tools
- [**gpg-tui**][8] Import GPG certificates using xplr.
[1]:https://github.com/sayanarijit/xplr/discussions/categories/show-and-tell
[2]:#editor
[3]:#shell
[4]:#security-tools
[5]:https://github.com/sayanarijit/xplr.vim
[6]:https://github.com/voldikss/vim-floaterm#xplr
[7]:https://github.com/romkatv/powerlevel10k/blob/191d1b89e325ee3b6d2d75a394654aaf4f077a7c/internal/p10k.zsh#L4756-L4768
[8]:https://github.com/orhun/gpg-tui#importreceive
[9]:https://github.com/fhill2/xplr.nvim
[1]: https://github.com/sayanarijit/xplr/discussions/categories/show-and-tell
[2]: #editor
[3]: #shell
[4]: #security-tools
[5]: https://github.com/sayanarijit/xplr.vim
[6]: https://github.com/voldikss/vim-floaterm#xplr
[7]: https://github.com/romkatv/powerlevel10k/blob/191d1b89e325ee3b6d2d75a394654aaf4f077a7c/internal/p10k.zsh#L4756-L4768
[8]: https://github.com/orhun/gpg-tui#importreceive
[9]: https://github.com/fhill2/xplr.nvim

@ -1,21 +1,16 @@
Awesome Plugins
===============
# Awesome Plugins
Here's a list of awesome xplr plugins that you might want to check out. If none
of the following plugins work for you, it's very easy to
[write your own][1].
Categories
----------
## Categories
- [Extension][32]
- [Integration][2]
- [Theme][3]
Extension
---------
## Extension
- [**comex.xplr**][21] One xplr plugin to compress and extract them all.
- [**command-mode.xplr**][37] The missing command mode for xplr.
@ -23,9 +18,7 @@ Extension
- [**type-to-nav.xplr**][28] Inspired by [nnn's type-to-nav mode][29] for xplr,
with some tweaks.
Integration
-----------
## Integration
- [**alacritty.xplr**][33] [Alacritty][34] integration for xplr.
- [**dragon.xplr**][4] Drag and drop files using [dragon][5].
@ -46,51 +39,48 @@ Integration
- [**xclip.xplr**][15] Copy and paste with system clipboard using [xclip][16].
- [**zoxide.xplr**][17] Change directory using the [zoxide][18] database.
Theme
-----
## Theme
- [**material-landscape.xplr**][19] Material Landscape
- [**material-landscape2.xplr**][20] Material Landscape 2
- [**zentable.xplr**][31] A clean, distraction free xplr table UI
- [**icons.xplr**][30] An icon theme for xplr.
[1]:./writing-plugins.md
[2]:#integration
[3]:#theme
[4]:https://github.com/sayanarijit/dragon.xplr
[5]:https://github.com/mwh/dragon
[6]:https://github.com/sayanarijit/dua-cli.xplr
[7]:https://github.com/Byron/dua-cli
[8]:https://github.com/sayanarijit/fzf.xplr
[9]:https://github.com/junegunn/fzf
[10]:https://github.com/sayanarijit/preview-tabbed.xplr
[11]:https://tools.suckless.org/tabbed/
[12]:https://github.com/jarun/nnn/blob/master/plugins/preview-tabbed
[13]:https://github.com/sayanarijit/trash-cli.xplr
[14]:https://github.com/andreafrancia/trash-cli
[15]:https://github.com/sayanarijit/xclip.xplr
[16]:https://github.com/astrand/xclip
[17]:https://github.com/sayanarijit/zoxide.xplr
[18]:https://github.com/ajeetdsouza/zoxide
[19]:https://github.com/sayanarijit/material-landscape.xplr
[20]:https://github.com/sayanarijit/material-landscape2.xplr
[21]:https://github.com/sayanarijit/comex.xplr
[22]:https://github.com/sayanarijit/xargs.xplr
[23]:https://github.com/dtomvan/paste-rs.xplr
[24]:https://paste.rs
[25]:https://github.com/sayanarijit/completion.xplr
[26]:https://github.com/sayanarijit/qrcp.xplr
[27]:https://github.com/claudiodangelis/qrcp
[28]:https://github.com/prncss-xyz/type-to-nav.xplr
[29]:https://github.com/jarun/nnn/wiki/concepts#type-to-nav
[30]:https://github.com/prncss-xyz/icons.xplr
[31]:https://github.com/sayanarijit/zentable.xplr
[32]:#extension
[33]:https://github.com/sayanarijit/alacritty.xplr
[34]:https://github.com/alacritty/alacritty
[35]:https://github.com/sayanarijit/nvim-ctrl.xplr
[36]:https://github.com/chmln/nvim-ctrl
[37]:https://github.com/sayanarijit/command-mode.xplr
[38]:https://github.com/sayanarijit/map.xplr
[1]: ./writing-plugins.md
[2]: #integration
[3]: #theme
[4]: https://github.com/sayanarijit/dragon.xplr
[5]: https://github.com/mwh/dragon
[6]: https://github.com/sayanarijit/dua-cli.xplr
[7]: https://github.com/Byron/dua-cli
[8]: https://github.com/sayanarijit/fzf.xplr
[9]: https://github.com/junegunn/fzf
[10]: https://github.com/sayanarijit/preview-tabbed.xplr
[11]: https://tools.suckless.org/tabbed/
[12]: https://github.com/jarun/nnn/blob/master/plugins/preview-tabbed
[13]: https://github.com/sayanarijit/trash-cli.xplr
[14]: https://github.com/andreafrancia/trash-cli
[15]: https://github.com/sayanarijit/xclip.xplr
[16]: https://github.com/astrand/xclip
[17]: https://github.com/sayanarijit/zoxide.xplr
[18]: https://github.com/ajeetdsouza/zoxide
[19]: https://github.com/sayanarijit/material-landscape.xplr
[20]: https://github.com/sayanarijit/material-landscape2.xplr
[21]: https://github.com/sayanarijit/comex.xplr
[22]: https://github.com/sayanarijit/xargs.xplr
[23]: https://github.com/dtomvan/paste-rs.xplr
[24]: https://paste.rs
[25]: https://github.com/sayanarijit/completion.xplr
[26]: https://github.com/sayanarijit/qrcp.xplr
[27]: https://github.com/claudiodangelis/qrcp
[28]: https://github.com/prncss-xyz/type-to-nav.xplr
[29]: https://github.com/jarun/nnn/wiki/concepts#type-to-nav
[30]: https://github.com/prncss-xyz/icons.xplr
[31]: https://github.com/sayanarijit/zentable.xplr
[32]: #extension
[33]: https://github.com/sayanarijit/alacritty.xplr
[34]: https://github.com/alacritty/alacritty
[35]: https://github.com/sayanarijit/nvim-ctrl.xplr
[36]: https://github.com/chmln/nvim-ctrl
[37]: https://github.com/sayanarijit/command-mode.xplr
[38]: https://github.com/sayanarijit/map.xplr

@ -1,5 +1,4 @@
Column Renderer
==============
# Column Renderer
A column renderer is a Lua function that receives a [special argument][1] and
returns a string that will be displayed in each specific field of the
@ -18,9 +17,7 @@ You can either overwrite these functions, or create new functions in
Terminal colors are supported.
Table Renderer Argument
-----------------------
## Table Renderer Argument
The special argument contains the following fields
@ -75,21 +72,18 @@ Type: string
The extension of the node.
### is_symlink
Type: boolean
`true` if the node is a symlink.
### is_broken
Type: boolean
`true` if the node is a broken symlink.
### is_dir
Type: boolean
@ -108,7 +102,6 @@ Type: boolean
`true` if the node is real-only.
### mime_essence
Type: string
@ -216,9 +209,7 @@ Type: mapping of string and string
The applicable [meta object][33] for the node.
Permission
----------
## Permission
Permission contains the following fields:
@ -237,9 +228,7 @@ Permission contains the following fields:
Each field holds a boolean value.
Resolved Node Metadata
----------------------
## Resolved Node Metadata
It contains the following fields.
@ -252,9 +241,7 @@ It contains the following fields.
- [size][13]
- [human_size][14]
Example: Customizing Table Renderer
-----------------------------------
## Example: Customizing Table Renderer
```lua
xplr.fn.custom.fmt_simple_column = function(m)
@ -277,37 +264,36 @@ xplr.config.general.table.col_widths = {
-- relative paths.
```
[1]:#table-renderer-argument
[2]:layouts.md#table
[3]:#parent
[4]:#relative_path
[5]:#absolute_path
[6]:#extension
[7]:#is_symlink
[8]:#is_broken
[9]:#is_dir
[10]:#is_file
[11]:#is_readonly
[12]:#mime_essence
[13]:#size
[14]:#human_size
[15]:#permissions
[16]:#canonical
[17]:#symlink
[18]:#index
[19]:#relative_index
[20]:#is_before_focus
[21]:#is_after_focus
[22]:#tree
[23]:#prefix
[24]:#suffix
[25]:#is_selected
[26]:#is_focused
[27]:#total
[28]:meta
[29]:#size
[30]:#permission
[31]:#resolved-node-metadata
[32]:general-config.md#tabletree
[33]:node_types.md#meta
[1]: #table-renderer-argument
[2]: layouts.md#table
[3]: #parent
[4]: #relative_path
[5]: #absolute_path
[6]: #extension
[7]: #is_symlink
[8]: #is_broken
[9]: #is_dir
[10]: #is_file
[11]: #is_readonly
[12]: #mime_essence
[13]: #size
[14]: #human_size
[15]: #permissions
[16]: #canonical
[17]: #symlink
[18]: #index
[19]: #relative_index
[20]: #is_before_focus
[21]: #is_after_focus
[22]: #tree
[23]: #prefix
[24]: #suffix
[25]: #is_selected
[26]: #is_focused
[27]: #total
[28]: meta
[29]: #size
[30]: #permission
[31]: #resolved-node-metadata
[32]: general-config.md#tabletree
[33]: node_types.md#meta

@ -1,5 +1,4 @@
Community
=========
# Community
Building an active community of awesome people and learning stuff together is
one of my reasons to publish this tool and maintain it. Hence, please feel free
@ -8,7 +7,6 @@ to reach out via your preferred way.
- Real-time chat lovers can join our [**matrix room**][3] or [**discord channel**][1].
- Forum discussion veterans can [**start a new GitHub discussion**][2].
[1]:https://discord.gg/JmasSPCcz3
[2]:https://github.com/sayanarijit/xplr/discussions
[3]:https://matrix.to/#/#xplr-pub:matrix.org
[1]: https://discord.gg/JmasSPCcz3
[2]: https://github.com/sayanarijit/xplr/discussions
[3]: https://matrix.to/#/#xplr-pub:matrix.org

@ -1,5 +1,4 @@
Configuration
=============
# Configuration
xplr can be configured using [Lua][1] via a special file
named `init.lua`
@ -15,9 +14,7 @@ the command-line argument `-c` / `--config` to specify its path explicitely. In
that case, both `~/.config/xplr/init.lua` and `/etc/xplr/init.lua` will be
ignored.
How Config Is Loaded
--------------------
## How Config Is Loaded
When xplr loads, it first executes the built-in
[init.lua][2] to set
@ -26,9 +23,7 @@ using the following lookup order:
**--config /path/to/init.lua** > **~/.config/xplr/init.lua** > **/etc/xplr/init.lua**
config
------
## config
The xplr configuration, exposed as `xplr.config` Lua API contains the
following fields:
@ -38,10 +33,9 @@ following fields:
- [layouts][5]
- [node_types][6]
[1]:https://www.lua.org/
[2]:https://github.com/sayanarijit/xplr/blob/main/src/init.lua
[3]:general-config.md
[4]:modes.md
[5]:layouts.md
[6]:node_types.md
[1]: https://www.lua.org/
[2]: https://github.com/sayanarijit/xplr/blob/main/src/init.lua
[3]: general-config.md
[4]: modes.md
[5]: layouts.md
[6]: node_types.md

@ -3,12 +3,12 @@ If you like xplr, and want to contribute, that would be really awesome.
You can contribute to this project in the following ways
- Contribute your time and expertise (read [CONTRIBUTING.md][1] for instructions).
- **Developers:** You can help me improve my code, fix things, implement features etc.
- **Repository maintainers:** You can save the users from the pain of managing xplr in their system manually.
- **Code Reviewers:** Teach me your ways of code.
- **Designers:** You can make the logo even more awesome, donate stickers and blog post worthy pictures.
- **Bloggers, YouTubers & broadcasters:** You can help spread the word.
- **Bloggers, YouTubers & broadcasters:** You can help spread the word.
- Contribute by donating.
- You can [fuel me with coins of encouragement][2] or [buy me a coffee][3].
@ -16,10 +16,10 @@ You can contribute to this project in the following ways
For further queries or concern related to `xplr`, [just ask us][4].
### Backers
<a href="https://opencollective.com/xplr#backer"><img src="https://opencollective.com/xplr/tiers/backer.svg?width=890" /></a>
<a href="https://opencollective.com/xplr#backer"><img src="https://opencollective.com/xplr/tiers/backer.svg?width=890" /></a>
[1]:https://github.com/sayanarijit/xplr/blob/main/CONTRIBUTING.md
[2]:https://opencollective.com/xplr
[3]:https://ko-fi.com/sayanarijit
[4]:community.md
[1]: https://github.com/sayanarijit/xplr/blob/main/CONTRIBUTING.md
[2]: https://opencollective.com/xplr
[3]: https://ko-fi.com/sayanarijit
[4]: community.md

@ -1,5 +1,4 @@
Default Key Bindings
====================
# Default Key Bindings
The default key binding is inspired by [vim][1] and slightly
overlaps with [nnn][2], but it's supposed to be
@ -8,257 +7,238 @@ customized as per user requirements.
When you press `?` in [default mode][3], you can see the complete list
of [modes][4] and the key mappings for each mode.
### default
key | remaps | action
--------------- | ------------------------- | ------
. | | show hidden
/ | ctrl-f | search
: | | action
? | | global help menu
G | | go to bottom
V | ctrl-a | select/unselect all
ctrl-c | | terminate
ctrl-i | tab | next visited path
ctrl-o | | last visited path
ctrl-r | | refresh screen
ctrl-u | | clear selection
ctrl-w | | switch layout
d | | delete
down | j | down
enter | | quit with result
f | | filter
g | | go to
h | left | back
k | up | up
l | right | enter
q | | quit
r | | rename
s | | sort
space | v | toggle selection
~ | | go home
[0-9] | | input
| key | remaps | action |
| ------ | ------ | ------------------- |
| . | | show hidden |
| / | ctrl-f | search |
| : | | action |
| ? | | global help menu |
| G | | go to bottom |
| V | ctrl-a | select/unselect all |
| ctrl-c | | terminate |
| ctrl-i | tab | next visited path |
| ctrl-o | | last visited path |
| ctrl-r | | refresh screen |
| ctrl-u | | clear selection |
| ctrl-w | | switch layout |
| d | | delete |
| down | j | down |
| enter | | quit with result |
| f | | filter |
| g | | go to |
| h | left | back |
| k | up | up |
| l | right | enter |
| q | | quit |
| r | | rename |
| s | | sort |
| space | v | toggle selection |
| ~ | | go home |
| [0-9] | | input |
### recover
key | remaps | action
--------------- | ------------------------- | ------
ctrl-c | | terminate
esc | | escape
| key | remaps | action |
| ------ | ------ | --------- |
| ctrl-c | | terminate |
| esc | | escape |
### filter
key | remaps | action
--------------- | ------------------------- | ------
R | | relative does not contain
backspace | | remove last filter
ctrl-c | | terminate
ctrl-r | | reset filters
ctrl-u | | clear filters
enter | esc | done
r | | relative does contain
| key | remaps | action |
| --------- | ------ | ------------------------- |
| R | | relative does not contain |
| backspace | | remove last filter |
| ctrl-c | | terminate |
| ctrl-r | | reset filters |
| ctrl-u | | clear filters |
| enter | esc | done |
| r | | relative does contain |
### number
key | remaps | action
--------------- | ------------------------- | ------
backspace | | remove last character
ctrl-c | | terminate
ctrl-u | | remove line
ctrl-w | | remove last word
down | j | to down
enter | | to index
esc | | cancel
k | up | to up
[0-9] | | input
| key | remaps | action |
| --------- | ------ | --------------------- |
| backspace | | remove last character |
| ctrl-c | | terminate |
| ctrl-u | | remove line |
| ctrl-w | | remove last word |
| down | j | to down |
| enter | | to index |
| esc | | cancel |
| k | up | to up |
| [0-9] | | input |
### go to
key | remaps | action
--------------- | ------------------------- | ------
ctrl-c | | terminate
esc | | cancel
f | | follow symlink
g | | top
x | | open in gui
| key | remaps | action |
| ------ | ------ | -------------- |
| ctrl-c | | terminate |
| esc | | cancel |
| f | | follow symlink |
| g | | top |
| x | | open in gui |
### search
key | remaps | action
--------------- | ------------------------- | ------
backspace | | remove last character
ctrl-c | | terminate
ctrl-n | down | down
ctrl-p | up | up
ctrl-u | | remove line
ctrl-w | | remove last word
enter | esc | focus
left | | back
right | | enter
tab | | toggle selection
| key | remaps | action |
| --------- | ------ | --------------------- |
| backspace | | remove last character |
| ctrl-c | | terminate |
| ctrl-n | down | down |
| ctrl-p | up | up |
| ctrl-u | | remove line |
| ctrl-w | | remove last word |
| enter | esc | focus |
| left | | back |
| right | | enter |
| tab | | toggle selection |
### selection ops
key | remaps | action
--------------- | ------------------------- | ------
c | | copy here
ctrl-c | | terminate
esc | | cancel
m | | move here
x | | open in gui
| key | remaps | action |
| ------ | ------ | ----------- |
| c | | copy here |
| ctrl-c | | terminate |
| esc | | cancel |
| m | | move here |
| x | | open in gui |
### action to
key | remaps | action
--------------- | ------------------------- | ------
! | | shell
c | | create
ctrl-c | | terminate
e | | open in editor
esc | | cancel
l | | logs
m | | toggle mouse
q | | quit options
s | | selection operations
[0-9] | | go to index
| key | remaps | action |
| ------ | ------ | -------------------- |
| ! | | shell |
| c | | create |
| ctrl-c | | terminate |
| e | | open in editor |
| esc | | cancel |
| l | | logs |
| m | | toggle mouse |
| q | | quit options |
| s | | selection operations |
| [0-9] | | go to index |
### create
key | remaps | action
--------------- | ------------------------- | ------
ctrl-c | | terminate
d | | create directory
esc | | cancel
f | | create file
| key | remaps | action |
| ------ | ------ | ---------------- |
| ctrl-c | | terminate |
| d | | create directory |
| esc | | cancel |
| f | | create file |
### create file
key | remaps | action
--------------- | ------------------------- | ------
backspace | | remove last character
ctrl-c | | terminate
ctrl-u | | remove line
ctrl-w | | remove last word
enter | | create file
esc | | cancel
| key | remaps | action |
| --------- | ------ | --------------------- |
| backspace | | remove last character |
| ctrl-c | | terminate |
| ctrl-u | | remove line |
| ctrl-w | | remove last word |
| enter | | create file |
| esc | | cancel |
### create directory
key | remaps | action
--------------- | ------------------------- | ------
backspace | | remove last character
ctrl-c | | terminate
ctrl-u | | remove line
ctrl-w | | remove last word
enter | | create directory
esc | | cancel
| key | remaps | action |
| --------- | ------ | --------------------- |
| backspace | | remove last character |
| ctrl-c | | terminate |
| ctrl-u | | remove line |
| ctrl-w | | remove last word |
| enter | | create directory |
| esc | | cancel |
### rename
key | remaps | action
--------------- | ------------------------- | ------
backspace | | remove last character
ctrl-c | | terminate
ctrl-u | | remove line
ctrl-w | | remove last word
enter | | rename
esc | | cancel
| key | remaps | action |
| --------- | ------ | --------------------- |
| backspace | | remove last character |
| ctrl-c | | terminate |
| ctrl-u | | remove line |
| ctrl-w | | remove last word |
| enter | | rename |
| esc | | cancel |
### delete
key | remaps | action
--------------- | ------------------------- | ------
D | | force delete
ctrl-c | | terminate
d | | delete
esc | | cancel
| key | remaps | action |
| ------ | ------ | ------------ |
| D | | force delete |
| ctrl-c | | terminate |
| d | | delete |
| esc | | cancel |
### sort
key | remaps | action
--------------- | ------------------------- | ------
! | | reverse sorters
E | | by canonical extension reverse
M | | by canonical mime essence reverse
N | | by node type reverse
R | | by relative path reverse
S | | by size reverse
backspace | | remove last sorter
ctrl-c | | terminate
ctrl-r | | reset sorters
ctrl-u | | clear sorters
e | | by canonical extension
enter | esc | done
m | | by canonical mime essence
n | | by node type
r | | by relative path
s | | by size
| key | remaps | action |
| --------- | ------ | --------------------------------- |
| ! | | reverse sorters |
| E | | by canonical extension reverse |
| M | | by canonical mime essence reverse |
| N | | by node type reverse |
| R | | by relative path reverse |
| S | | by size reverse |
| backspace | | remove last sorter |
| ctrl-c | | terminate |
| ctrl-r | | reset sorters |
| ctrl-u | | clear sorters |
| e | | by canonical extension |
| enter | esc | done |
| m | | by canonical mime essence |
| n | | by node type |
| r | | by relative path |
| s | | by size |
### filter
key | remaps | action
--------------- | ------------------------- | ------
R | | relative does not contain
backspace | | remove last filter
ctrl-c | | terminate
ctrl-r | | reset filters
ctrl-u | | clear filters
enter | esc | done
r | | relative does contain
| key | remaps | action |
| --------- | ------ | ------------------------- |
| R | | relative does not contain |
| backspace | | remove last filter |
| ctrl-c | | terminate |
| ctrl-r | | reset filters |
| ctrl-u | | clear filters |
| enter | esc | done |
| r | | relative does contain |
### relative path does contain
key | remaps | action
--------------- | ------------------------- | ------
backspace | | remove last character
ctrl-c | | terminate
ctrl-u | | remove line
ctrl-w | | remove last word
enter | | apply filter
esc | | cancel
| key | remaps | action |
| --------- | ------ | --------------------- |
| backspace | | remove last character |
| ctrl-c | | terminate |
| ctrl-u | | remove line |
| ctrl-w | | remove last word |
| enter | | apply filter |
| esc | | cancel |
### relative path does not contain
key | remaps | action
--------------- | ------------------------- | ------
backspace | | remove last character
ctrl-c | | terminate
ctrl-u | | remove line
ctrl-w | | remove last word
enter | | apply filter
esc | | cancel
| key | remaps | action |
| --------- | ------ | --------------------- |
| backspace | | remove last character |
| ctrl-c | | terminate |
| ctrl-u | | remove line |
| ctrl-w | | remove last word |
| enter | | apply filter |
| esc | | cancel |
### switch layout
key | remaps | action
--------------- | ------------------------- | ------
1 | | default
2 | | no help menu
3 | | no selection panel
4 | | no help or selection
ctrl-c | | terminate
esc | | cancel
[1]:https://www.vim.org/
[2]:https://github.com/jarun/nnn/
[3]:#default
[4]:modes.md
| key | remaps | action |
| ------ | ------ | -------------------- |
| 1 | | default |
| 2 | | no help menu |
| 3 | | no selection panel |
| 4 | | no help or selection |
| ctrl-c | | terminate |
| esc | | cancel |
[1]: https://www.vim.org/
[2]: https://github.com/jarun/nnn/
[3]: #default
[4]: modes.md

@ -1,5 +1,4 @@
Filtering
=========
# Filtering
xplr supports filtering paths by different properties. The filtering mechanism
works like a pipeline, which in visible in the `Sort & filter` panel.
@ -11,15 +10,13 @@ rel!^. [i]abs=~abc [i]rel!~xyz
```
This line means that the nodes visible on the table will first be filtered by
the condition: *relative path does not start with `.`*, then by the condition:
*absolute path contains `abc` (case insensitive)*, and finally by the
condition: *relative path does not contain `xyz`* (case insensitive).
the condition: _relative path does not start with `.`_, then by the condition:
_absolute path contains `abc` (case insensitive)_, and finally by the
condition: _relative path does not contain `xyz`_ (case insensitive).
Each part of this pipeline is called [Node Filter Applicable][1].
Node Filter Applicable
----------------------
## Node Filter Applicable
It contains the following information:
@ -63,7 +60,6 @@ A filter can be one of the following:
- "IAbsolutePathDoesEndWith"
- "IAbsolutePathDoesNotEndWith"
TODO: document each
### input
@ -72,9 +68,7 @@ Type: string
The input for the condition.
Example:
--------
## Example:
```lua
ToggleNodeFilter = {
@ -86,8 +80,7 @@ ToggleNodeFilter = {
Here, `ToggleNodeFilter` is a [message][4] that adds or removes
(toggles) the filter applied.
[1]:#node-filter-applicable
[2]:#filter
[3]:#input
[4]:message.md
[1]: #node-filter-applicable
[2]: #filter
[3]: #input
[4]: message.md

@ -1,152 +1,117 @@
General Config
==============
# General Config
This configuration is exposed via the `xplr.config.general` API. It contains
the following fields:
enable_mouse
------------
## enable_mouse
Type: boolean
Set it to `true` enable scrolling using mouse.
show_hidden
-----------
## show_hidden
Type: boolean
Set it to `true` to show hidden files.
read_only
---------
## read_only
Type: boolean
Set it to `true` to use only a subset of selected operations that forbids
executing commands or performing write operations on the file-system.
enable_recover_mode
--------------------
## enable_recover_mode
Type: boolean
Set it to `true` if you want to enable a safety feature that will save you from
yourself when you type recklessly.
cursor.format
-------------
## cursor.format
Type: nullable string
This is the shape of the cursor visible when the input buffer contains some string.
This is the shape of the cursor visible when the input buffer contains some
string.
cursor.style
------------
## cursor.style
Type: [Style][1]
Style of the cursor.
initial_layout
--------------
## initial_layout
Type: string
The name of one of the [layout][2] to use when xplr loads.
initial_mode
------------
## initial_mode
Type: string
The name of one of the [mode][3] to use when xplr loads.
initial_sorting
---------------
## initial_sorting
Type: list of [Node Sorter Applicable][4]
Initial group if sorters applied to the nodes list in the table.
table.style
-----------
## table.style
Type: [Style][1]
Default style of the table.
table.col_spacing
-----------------
## table.col_spacing
Type: nullable integer
Default spacing of the columns in the table.
table.col_widths
----------------
## table.col_widths
Type: nullable list of [Constraint][5]
Width of each column in the table.
table.header.height
----------------
## table.header.height
Type: nullable integer
Height of the table header.
table.header.style
---------------
## table.header.style
Type: [Style][1]
Style of table header.
## table.header.cols
table.header.cols
-----------------
Type: List of column configuration
Type: list of column configuration
Each column config contains `format` field (string) and `style` field
([Style][1]), that define the content and style of header.
table.row.height
----------------
## table.row.height
Type: nullable integer
Height of each row in the table.
table.row.style
---------------
## table.row.style
Type: [Style][1]
Style of table rows.
## table.row.cols
table.row.cols
-----------------
Type: List of column configuration
Type: list of column configuration
Each column config contains `format` field (string) and `style` field
([Style][1]).
@ -154,11 +119,9 @@ Each column config contains `format` field (string) and `style` field
However, unlike [table.header.cols][6], the `format` field here
points to a [column renderer function][7].
## table.tree
table.tree
-----------------
Type: List of tree configuration
Type: list of tree configuration
It expects a list of three items. The first component of the tree, then the
middle components, and finally the last component of the tree.
@ -176,298 +139,238 @@ xplr.config.general.table.tree = {
}
```
start_fifo
----------
## start_fifo
Type: nullable string
[Description](https://docs.rs/xplr/0.15.0/xplr/config/struct.GeneralConfig.html#structfield.start_fifo)
Start a FIFO file when xplr loads. It will track the absolute path of the file
under focus.
prompt.format
-------------
## prompt.format
Type: string
This is the shape of the prompt for the input buffer.
prompt.style
--------------------------
## prompt.style
Type: [Style][1]
Style of the input prompt.
logs.error.format
-----------------
## logs.error.format
Type: string
The string to indicate an error in logs.
logs.error.style
----------------
## logs.error.style
Type: [Style][1]
Style for errors shown in logs.
logs.info.format
----------------
## logs.info.format
Type: string
The string to indicate an information in logs.
logs.info.style
---------------
## logs.info.style
Type: [Style][1]
Style for infos shown in logs.
logs.success.format
-------------------
## logs.success.format
Type: string
The string to indicate a successful operation in logs.
logs.success.style
------------------
## logs.success.style
Type: [Style][1]
Style for successful operations in logs.
## logs.warning.format
logs.warning.format
-------------------
Type: string
The string that indicates a warning in logs.
logs.warning.style
------------------
## logs.warning.style
Type: [Style][1]
Style for warnings in logs.
default_ui.prefix
-----------------
## default_ui.prefix
Type: nullable string
The content that is placed before the item name for each row.
default_ui.suffix
-----------------
## default_ui.suffix
Type: nullable string
The content which is appended to each item name for each row.
default_ui.style
----------------
## default_ui.style
Type: [Style][1]
Style for the default user interface.
focus_ui.prefix
---------------
## focus_ui.prefix
Type: nullable string
The string placed before the item name for a focused row.
focus_ui.suffix
---------------
## focus_ui.suffix
Type: nullable string
The string placed after the item name for a focused row.
focus_ui.style
--------------
## focus_ui.style
Type: [Style][1]
Style for focused elements.
selection_ui.prefix
-------------------
## selection_ui.prefix
Type: nullable string
The string that is placed before the item name for a selected row.
selection_ui.suffix
-------------------
## selection_ui.suffix
Type: nullable string
The string placed after the item name for a selected row.
selection_ui.style
------------------
## selection_ui.style
Type: [Style][1]
Style for selected rows.
focus_selection_ui.prefix
-------------------------
## focus_selection_ui.prefix
Type: nullable string
The string placed before item name for a selected row that gets the focus.
focus_selection_ui.suffix
-------------------------
## focus_selection_ui.suffix
Type: nullable string
The string placed after the item name for a selected row that gets the focus.
focus_selection_ui.style
------------------------
## focus_selection_ui.style
Type: [Style][1]
Style for a selected row that gets the focus.
sort_and_filter_ui.separator.format
-----------------------------------
## sort_and_filter_ui.separator.format
Type: nullable string
The shape of the separator for the `Sort & filter` panel.
sort_and_filter_ui.separator.style
----------------------------------
## sort_and_filter_ui.separator.style
Type: [Style][1]
Style for `Sort & filter` panel separator.
Style for `Sort & filter` panel separator.
sort_and_filter_ui.default_identifier.format
--------------------------------------------
## sort_and_filter_ui.default_identifier.format
Type: nullable string
The content of the default identifier in `Sort & filter` panel.
sort_and_filter_ui.default_identifier.style
-------------------------------------------
## sort_and_filter_ui.default_identifier.style
Type: [Style][1]
Style for the default identifier in `Sort & filter` panel.
sort_and_filter_ui.filter_identifiers
-------------------------------------
## sort_and_filter_ui.filter_identifiers
Type: Table with [filter name][8] as key
The value contains format field (string) and style field (Style), that define the content and style for the given filter.
The value contains format field (string) and style field (Style), that define
the content and style for the given filter.
Example:
```lua
xplr.config.general.sort_and_filter_ui.filter_identifiers = {
AbsolutePathDoesContain = {
format = "abs=~",
style = { add_modifiers = { "Bold" }, bg = nil, fg = nil, sub_modifiers = nil },
}
xplr.config.general.sort_and_filter_ui.filter_identifiers.AbsolutePathDoesContain = {
format = "abs=~",
style = { add_modifiers = { "Bold" }, bg = nil, fg = nil, sub_modifiers = nil },
}
```
sort_and_filter_ui.sort_direction_identifiers.forward.format
------------------------------------------------------------
## sort_and_filter_ui.sort_direction_identifiers.forward.format
Type: nullable string
The shape of the forward direction indicator for sort identifiers in `Sort & filter` panel.
The shape of the forward direction indicator for sort identifiers in
`Sort & filter` panel.
sort_and_filter_ui.sort_direction_identifiers.forward.style
------------------------------------------------------------
## sort_and_filter_ui.sort_direction_identifiers.forward.style
Type: [Style][1]
Style of forward direction indicator.
sort_and_filter_ui.sort_direction_identifiers.reverse.format
------------------------------------------------------------
## sort_and_filter_ui.sort_direction_identifiers.reverse.format
Type: nullable string
The shape of the reverse direction indicator for sort identifiers in `Sort & filter` panel.
The shape of the reverse direction indicator for sort identifiers in
`Sort & filter` panel.
sort_and_filter_ui.sort_direction_identifiers.reverse.style
-----------------------------------------------------------
## sort_and_filter_ui.sort_direction_identifiers.reverse.style
Type: [Style][1]
Style of reverse direction indicator.
sort_and_filter_ui.sorter_identifiers
-------------------------------------
## sort_and_filter_ui.sorter_identifiers
Type: Table with [sorter name][9] as key
The value contains format field (string) and style field (Style), that define the content and style for the given sorter.
The value contains format field (string) and style field (Style), that define
the content and style for the given sorter.
Example:
```lua
sort_and_filter_ui.sorter_identifiers = {
ByCanonicalAbsolutePath = {
format = "[c]abs",
style = { add_modifiers = nil, bg = nil, fg = "Yellow", sub_modifiers = nil },
}
}
sort_and_filter_ui.sorter_identifiers.ByCanonicalAbsolutePath = {
format = "[c]abs",
style = { add_modifiers = nil, bg = nil, fg = "Yellow", sub_modifiers = nil },
}
```
panel_ui.default.borders
------------------------
## panel_ui.default.borders
Type: nullable List of strings
Type: nullable list of strings
Defines where to show borders for the panels.
The possible values are any combination of: "Top", "Bottom", "Left" and "Right".
The possible values are any combination of: "Top", "Bottom", "Left" and
"Right".
Example:
```lua
-- Show Left and Right borders only
xplr.config.general.panel_ui.default.borders = {
@ -476,172 +379,138 @@ xplr.config.general.panel_ui.default.borders = {
}
```
panel_ui.default.style
----------------------
## panel_ui.default.style
Type: [Style][1]
Default style for panels.
panel_ui.default.title.format
-----------------------------
## panel_ui.default.title.format
Type: nullable string
The content for panel title.
panel_ui.default.title.style
----------------------------
## panel_ui.default.title.style
Type: [Style][1]
Style for panel title.
panel_ui.help_menu.borders
--------------------------
## panel_ui.help_menu.borders
Type: nullable List of strings
Type: nullable list of strings
Defines where to show borders for the `Help` panel.
The possible values are any combination of: "Top", "Bottom", "Left" and "Right".
The possible values are any combination of: "Top", "Bottom", "Left" and
"Right".
panel_ui.help_menu.style
------------------------
## panel_ui.help_menu.style
Type: [Style][1]
Style for `Help` panel.
panel_ui.help_menu.title.format
-------------------------------
## panel_ui.help_menu.title.format
Type: nullable string
The content for `Help` panel title.
panel_ui.help_menu.title.style
-------------------------------
## panel_ui.help_menu.title.style
Type: [Style][1]
Style for `Help` panel title.
## panel_ui.input_and_logs.borders
panel_ui.input_and_logs.borders
-------------------------------
Type: nullable List of strings
Type: nullable list of strings
Defines where to show borders for the `Input` & `Logs` panel.
The possible values are any combination of: "Top", "Bottom", "Left" and "Right".
The possible values are any combination of: "Top", "Bottom", "Left" and
"Right".
panel_ui.input_and_logs.style
-----------------------------
## panel_ui.input_and_logs.style
Type: [Style][1]
Style for `Input` & `Logs` panel.
panel_ui.input_and_logs.title.format
------------------------------------
## panel_ui.input_and_logs.title.format
Type: nullable string
The content for the `Input` and `Logs` panel title.
panel_ui.input_and_logs.title.style
-----------------------------------
## panel_ui.input_and_logs.title.style
Type: [Style][1]
Style for `Input` & `Logs` panel title.
## panel_ui.selection.borders
panel_ui.selection.borders
--------------------------
Type: nullable List of strings
Type: nullable list of strings
Defines where to show borders for the `Selection` panel.
The possible values are any combination of: "Top", "Bottom", "Left" and "Right".
The possible values are any combination of: "Top", "Bottom", "Left" and
"Right".
panel_ui.selection.style
------------------------
## panel_ui.selection.style
Type: [Style][1]
Style for `Selection` panel.
panel_ui.selection.title.format
-------------------------------
## panel_ui.selection.title.format
Type: nullable string
The content for `Selection` panel title.
panel_ui.selection.title.style
------------------------------
## panel_ui.selection.title.style
Type: [Style][1]
Style for `Selection` panel title.
panel_ui.sort_and_filter.borders
--------------------------------
## panel_ui.sort_and_filter.borders
Type: nullable list of strings
Defines where to show borders for the `Sort & filter` panel.
The possible values are any combination of: "Top", "Bottom", "Left" and "Right".
The possible values are any combination of: "Top", "Bottom", "Left" and
"Right".
panel_ui.sort_and_filter.style
------------------------------
## panel_ui.sort_and_filter.style
Type: [Style][1]
Style for `Sort & filter` panel.
panel_ui.sort_and_filter.title.format
-------------------------------------
## panel_ui.sort_and_filter.title.format
Type: nullable string
The content for `Sort & filter` panel title.
panel_ui.sort_and_filter.title.style
------------------------------------
## panel_ui.sort_and_filter.title.style
Type: [Style][1]
Style for `Sort & filter` panel title.
[1]:style.md
[2]:layouts.md
[3]:modes.md
[4]:sorting.md#node-sorter-applicable
[5]:layouts.md#constraint
[6]:#tableheadercols
[7]:column-renderer.md
[8]:filtering.md#filter
[9]:sorting.md#sorter
[1]: style.md
[2]: layouts.md
[3]: modes.md
[4]: sorting.md#node-sorter-applicable
[5]: layouts.md#constraint
[6]: #tableheadercols
[7]: column-renderer.md
[8]: filtering.md#filter
[9]: sorting.md#sorter

@ -1,5 +1,4 @@
Try in Docker
=============
# Try in Docker
If you prefer to try it before installing, here's the snipper for your
convenience.
@ -14,9 +13,7 @@ docker run -w / -it --rm ubuntu sh -uec '
'
```
Install
=======
# Install
You can install xplr using one of the following ways. Each has their own
advantages and limitations.
@ -30,16 +27,13 @@ available.
One way to keep an eye on the releases is to
[watch the repository][4].
Community Maintained Repositories
---------------------------------
## Community Maintained Repositories
xplr can be installed from one of the following community maintained
repositories:
[![packaging status][5]][6]
### Arch Linux
#### [Official Community Repo][7]
@ -127,9 +121,7 @@ cd /usr/pkgsrc/sysutils/xplr
make install
```
Direct Download
---------------
## Direct Download
One can directly download the standalone binary from the
[releases][15].
@ -154,9 +146,7 @@ tar xzvf xplr-$platform.tar.gz
sudo mv xplr /usr/local/bin/
```
From [crates.io][18]
-----------------------------------------------
## From [crates.io][18]
Prerequisites:
@ -170,9 +160,7 @@ Command-line instructions:
cargo install --locked --force xplr
```
Build From Source
-----------------
## Build From Source
Prerequisites:
@ -195,9 +183,7 @@ cargo build --locked --release --bin xplr
sudo cp target/release/xplr /usr/local/bin/
```
Android
-------
## Android
### [Termux][23]
@ -238,29 +224,28 @@ Android
~/.cargo/bin/xplr
```
[1]:#direct-download
[2]:#from-a-hrefhttpscratesiocratesxplrcratesioa
[3]:#build-from-source
[4]:https://github.com/sayanarijit/xplr/watchers
[5]:https://repology.org/badge/vertical-allrepos/xplr.svg
[6]:https://repology.org/project/xplr/versions
[7]:https://archlinux.org/packages/community/x86_64/xplr
[8]:https://aur.archlinux.org/packages/?O=0&SeB=n&K=xplr&outdated=&SB=n&SO=a&PP=50&do_Search=Go
[9]:https://github.com/shubham-cpp/void-pkg-templates
[10]:https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/misc/xplr
[11]:https://ports.macports.org/port/xplr
[12]:https://formulae.brew.sh/formula/xplr
[13]:https://cgit.freebsd.org/ports/plain/misc/xplr/
[14]:https://pkgsrc.se/sysutils/xplr
[15]:https://github.com/sayanarijit/xplr/releases
[16]:https://github.com/sayanarijit/xplr/releases/latest/download/xplr-linux.tar.gz
[17]:https://github.com/sayanarijit/xplr/releases/latest/download/xplr-macos.tar.gz
[18]:https://crates.io/crates/xplr
[19]:https://www.rust-lang.org/tools/install
[20]:https://gcc.gnu.org/
[21]:https://www.gnu.org/software/make/
[22]:https://git-scm.com/
[23]:https://termux.com/
[24]:https://s3.gifyu.com/images/xplr-termuxfd3c398d3cf4bcbc.md.jpg
[25]:https://gifyu.com/image/tF2D
[1]: #direct-download
[2]: #from-a-hrefhttpscratesiocratesxplrcratesioa
[3]: #build-from-source
[4]: https://github.com/sayanarijit/xplr/watchers
[5]: https://repology.org/badge/vertical-allrepos/xplr.svg
[6]: https://repology.org/project/xplr/versions
[7]: https://archlinux.org/packages/community/x86_64/xplr
[8]: https://aur.archlinux.org/packages/?O=0&SeB=n&K=xplr&outdated=&SB=n&SO=a&PP=50&do_Search=Go
[9]: https://github.com/shubham-cpp/void-pkg-templates
[10]: https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/misc/xplr
[11]: https://ports.macports.org/port/xplr
[12]: https://formulae.brew.sh/formula/xplr
[13]: https://cgit.freebsd.org/ports/plain/misc/xplr/
[14]: https://pkgsrc.se/sysutils/xplr
[15]: https://github.com/sayanarijit/xplr/releases
[16]: https://github.com/sayanarijit/xplr/releases/latest/download/xplr-linux.tar.gz
[17]: https://github.com/sayanarijit/xplr/releases/latest/download/xplr-macos.tar.gz
[18]: https://crates.io/crates/xplr
[19]: https://www.rust-lang.org/tools/install
[20]: https://gcc.gnu.org/
[21]: https://www.gnu.org/software/make/
[22]: https://git-scm.com/
[23]: https://termux.com/
[24]: https://s3.gifyu.com/images/xplr-termuxfd3c398d3cf4bcbc.md.jpg
[25]: https://gifyu.com/image/tF2D

@ -1,5 +1,4 @@
Installing Plugins
==================
# Installing Plugins
Until we get a cool plugin manager, let's install plugins manually using the
following procedure:
@ -25,4 +24,4 @@ following procedure:
-- The setup arguments might differ for different plugins.
-- Visit the project README for setup instructions.
```
```

@ -1,10 +1,8 @@
Integration
===========
# Integration
xplr is designed to integrate well with other tools and commands. It can be
used as a file picker or a pluggable file manager.
- [Awesome Integrations][1]
[1]:awesome-integrations.md
[1]: awesome-integrations.md

@ -1,5 +1,4 @@
Introduction
============
# Introduction
xplr is a terminal UI based file explorer that aims to increase our terminal
productivity by being a flexible, interactive orchestrator for the ever growing
@ -14,9 +13,7 @@ intuitive, scriptable, keyboard controlled, real-time visual interface, also
being an ideal candidate for further integration, enabling the users to achieve
insane terminal productivity.
Features
--------
## Features
### Hackable
@ -29,7 +26,6 @@ A few things you can do with the xplr configuration
- [Hack the key bindings][2]
- [Extend with plugins][3]
## Fast
Although speed is not the primary concern, xplr is already fast enough so that
@ -46,7 +42,6 @@ because I am waiting for someone to complain. I want to avoid optimizing things
I don't need to, because optimization often requires either complexity or
feature sacrifice or both.
## Minimalist
xplr prefers to stay minimal, both in terms of features and binary size, but
@ -56,7 +51,6 @@ little more productive or allows xplr to be a little more configurable, it will
be considered. But of-course, the `bulk vs productivity gain per user` balance
will also be considered in the decision-making.
## Other features
- [Embedded LuaJIT][5] for
@ -113,10 +107,9 @@ will also be considered in the decision-making.
(`:` `q` `s`).
- Quit with failure (`ctrl-c`).
[1]:layouts.md
[2]:modes.md
[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
[1]: layouts.md
[2]: modes.md
[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

@ -1 +1 @@
# Key Bindings
# Key Bindings

@ -1,5 +1,4 @@
Modes
=====
# Modes
xplr is a modal file explorer. That means the users switch between different
modes, each containing a different set of key bindings to avoid clashes. Users
@ -12,9 +11,7 @@ It contains the following fields:
- [builtin][1]
- [custom][2]
builtin
-------
## builtin
Type: mapping of string and [Mode][3]
@ -44,9 +41,7 @@ xplr by default provides the following builtin modes:
Visit the [Default Key Bindings][4] to see what each mode
does.
custom
------
## custom
Type: mapping of string and [Mode][3]
@ -78,9 +73,7 @@ xplr.config.general.initial_mode = "example"
-- pressing "enter" should take you to the "default" mode.
```
Mode
----
## Mode
A mode contains the following information:
@ -122,9 +115,7 @@ Type: nullable [Layout][30]
If specified, this layout will be used to render the UI.
Key Bindings
------------
## Key Bindings
Key bindings define how each keyboard input will be handled in a specific mode.
@ -173,9 +164,7 @@ Default action to perform in case of a keyboard input not mapped via any of the
[on_key][10], [on_alphabet][11], [on_number][12] or
[on_special_character][13] field.
Key
---
## Key
A key can be one of the following:
@ -203,9 +192,7 @@ A key can be one of the following:
And finally, the special characters - including space (`" "`).
Action
------
## Action
An action contains the following information:
@ -225,9 +212,7 @@ Type: A list of [Message][18] to send.
The list of messages to send when a key is pressed.
Tutorial: Adding a New Mode
---------------------------
## Tutorial: Adding a New Mode
Assuming xplr is [installed][19] and [setup][20], let's
add our own mode to integrate xplr with [fzf][21].
@ -296,38 +281,37 @@ Now let's try out the new `xplr`-`fzf` integration.
[![xplr-fzf.gif][25]][26]
-----
---
Visit [Awesome Plugins][27] for more [integration][28] options.
[1]:#builtin
[2]:#custom
[3]:#mode
[4]:default-key-bindings.md
[5]:#name
[6]:#help
[7]:#extra_help
[8]:#key_bindings
[9]:#key-bindings
[10]:#on_key
[11]:#on_alphabet
[12]:#on_number
[13]:#on_special_character
[14]:#default
[15]:#key
[16]:#action
[17]:#messages
[18]:message.md
[19]:install.md
[20]:post-install.md
[21]:https://github.com/junegunn/fzf
[22]:message.md#environment-variables
[23]:message.md#input-pipe
[24]:message.md#output-pipes
[25]:https://s3.gifyu.com/images/xplr-fzf.gif
[26]:https://gifyu.com/image/tW86
[27]:awesome-plugins.md
[28]:awesome-plugins.md#integration
[29]:#layout
[30]:layouts.md#Layout
[1]: #builtin
[2]: #custom
[3]: #mode
[4]: default-key-bindings.md
[5]: #name
[6]: #help
[7]: #extra_help
[8]: #key_bindings
[9]: #key-bindings
[10]: #on_key
[11]: #on_alphabet
[12]: #on_number
[13]: #on_special_character
[14]: #default
[15]: #key
[16]: #action
[17]: #messages
[18]: message.md
[19]: install.md
[20]: post-install.md
[21]: https://github.com/junegunn/fzf
[22]: message.md#environment-variables
[23]: message.md#input-pipe
[24]: message.md#output-pipes
[25]: https://s3.gifyu.com/images/xplr-fzf.gif
[26]: https://gifyu.com/image/tW86
[27]: awesome-plugins.md
[28]: awesome-plugins.md#integration
[29]: #layout
[30]: layouts.md#Layout

@ -1,5 +1,4 @@
Node Types
==========
# Node Types
This configuration defines how to deal with different kinds of nodes (files,
directories, symlinks etc.) in a directory.
@ -23,7 +22,6 @@ The priority is:
**special** > **extension** > **mime_essence** > **symlink** > **file** > **directory**
### directory
Type: [NodeType Config][7]
@ -39,7 +37,6 @@ xplr.config.node_types.directory.meta.icon = ""
xplr.config.node_types.directory.style.add_modifiers = { "Bold" }
```
### file
Type: [NodeType Config][7]
@ -55,7 +52,6 @@ xplr.config.node_types.file.meta.icon = ""
xplr.config.node_types.file.style.fg = "White"
```
### symlink
Type: [NodeType Config][7]
@ -69,7 +65,6 @@ xplr.config.node_types.symlink.meta.icon = ""
xplr.config.node_types.symlink.style.add_modifiers = { "Italic" }
```
### mime_essence
Type: mapping of mime-type and mapping of mime-subtype and [NodeType Config][7]
@ -86,7 +81,7 @@ xplr.config.node_types.mime_essence = {
application = {
-- application/*
["*"] = { meta = { icon = "a" } }
-- application/pdf
pdf = { meta = { icon = "" } },
@ -123,9 +118,7 @@ xplr.config.node_types.special["Cargo.toml"] = { meta = { icon = "" } }
xplr.config.node_types.special["Downloads"] = { meta = { icon = "" } }
```
NodeType Config
---------------
## NodeType Config
A node-type config contains the following fields:
@ -151,13 +144,12 @@ xplr.config.node_types.file = {
}
```
[1]:#directory
[2]:#file
[3]:#symlink
[4]:#mime_essence
[5]:#extension
[6]:#special
[7]:#nodetype-config
[8]:#meta
[9]:style.md
[1]: #directory
[2]: #file
[3]: #symlink
[4]: #mime_essence
[5]: #extension
[6]: #special
[7]: #nodetype-config
[8]: #meta
[9]: style.md

@ -1,5 +1,4 @@
Plugin
======
# Plugin
xplr supports pluggable Lua modules that can be used to easily configure or
extend xplr UI and functionalities.
@ -8,7 +7,6 @@ extend xplr UI and functionalities.
- [Writing Plugins][2]
- [Awesome Plugins][3]
[1]:installing-plugins.md
[2]:writing-plugins.md
[3]:awesome-plugins.md
[1]: installing-plugins.md
[2]: writing-plugins.md
[3]: awesome-plugins.md

@ -1,10 +1,8 @@
Post Install
============
# Post Install
Once [installed][1], use the following steps to setup and run xplr.
Create the customizable config file
-----------------------------------
## Create the customizable config file
```bash
mkdir -p ~/.config/xplr
@ -28,15 +26,12 @@ and remove / comment out what you don't want to customize.
> Also, the default configuration is meant to be overwritten to suit your
> workflow.
Run
---
## Run
```
xplr
```
[1]:install.md
[2]:https://github.com/sayanarijit/xplr/blob/main/src/init.lua
[3]:upgrade-guide.md
[1]: install.md
[2]: https://github.com/sayanarijit/xplr/blob/main/src/init.lua
[3]: upgrade-guide.md

@ -1,5 +1,4 @@
Quickstart
==========
# Quickstart
Nice to you have here! Let's quickly start our xplr journey with the
following steps:
@ -7,6 +6,5 @@ following steps:
- [Install][1]
- [Post Install][2]
[1]:install.md
[2]:post-install.md
[1]: install.md
[2]: post-install.md

@ -1,5 +1,4 @@
Sorting
=======
# Sorting
xplr supports sorting paths by different properties. The sorting mechanism
works like a pipeline, which in visible in the `Sort & filter` panel.
@ -19,16 +18,13 @@ The arrows denote the order.
Each part of this pipeline is called [Node Sorter Applicable][1].
Node Sorter Applicable
----------------------
## Node Sorter Applicable
It contains the following information:
- [sorter][2]
- [reverse][3]
### sorter
A sorter can be one of the following:
@ -62,16 +58,13 @@ A sorter can be one of the following:
TODO: document each
### reverse
Type: boolean
It defined the direction of the order.
Example
-------
## Example
```lua
xplr.config.general.initial_sorting = {
@ -82,7 +75,6 @@ xplr.config.general.initial_sorting = {
This snippet defines the initial sorting logic to be applied when xplr loads.
[1]:#node-sorter-applicable
[2]:#sorter
[3]:#reverse
[1]: #node-sorter-applicable
[2]: #sorter
[3]: #reverse

@ -1,5 +1,4 @@
Style
=====
# Style
A style object contains the following information:
@ -14,30 +13,25 @@ Type: nullable [Color][5]
The foreground color.
### bg
Type: nullable [Color][5]
The background color.
### add_modifiers
Type: nullable list of [Modifier][6]
Modifiers to add.
### sub_modifiers
Type: nullable list of [Modifier][6]
Modifiers to remove.
Color
-----
## Color
Color can be one of the following:
@ -61,9 +55,7 @@ Color can be one of the following:
- { Rgb = { int, int, int } }
- { Indexed = int }
Modifier
--------
## Modifier
Modifier can be one of the following:
@ -77,9 +69,7 @@ Modifier can be one of the following:
- "Hidden"
- "CrossedOut"
Example
-------
## Example
```lua
xplr.config.general.cursor.style.fg = "Red"
@ -88,10 +78,9 @@ xplr.config.general.cursor.style.add_modifiers = { "Bold", "Italic" }
xplr.config.general.cursor.style.sub_modifiers = { "Hidden" }
```
[1]:#fg
[2]:#bg
[3]:#add_modifiers
[4]:#sub_modifiers
[5]:#color
[6]:#modifier
[1]: #fg
[2]: #bg
[3]: #add_modifiers
[4]: #sub_modifiers
[5]: #color
[6]: #modifier

@ -1,5 +1,4 @@
TODO
====
# TODO
- [x] Saner key bindings.
- [x] Pipes.
@ -27,10 +26,9 @@ TODO
Like this project so far? **[Please consider contributing][6].**
[1]:https://github.com/sayanarijit/xplr/wiki/Hacks#spawn-multiple-sessions-in-different-windows
[2]:https://github.com/sayanarijit/xplr/discussions/15
[3]:https://github.com/sayanarijit/xplr/wiki/Hacks#bookmark
[4]:https://github.com/sayanarijit/xplr.vim
[5]:https://github.com/sayanarijit/xplr/discussions/2
[6]:contribute.md
[1]: https://github.com/sayanarijit/xplr/wiki/Hacks#spawn-multiple-sessions-in-different-windows
[2]: https://github.com/sayanarijit/xplr/discussions/15
[3]: https://github.com/sayanarijit/xplr/wiki/Hacks#bookmark
[4]: https://github.com/sayanarijit/xplr.vim
[5]: https://github.com/sayanarijit/xplr/discussions/2
[6]: contribute.md

@ -1,20 +1,15 @@
Writing Plugins
===============
# Writing Plugins
Anyone who can write [Lua][1] code, can write xplr plugins.
Just follow the instructions and best practices:
Naming
------
## Naming
xplr plugins are named using hiphen (`-`) separated words that may also include
integers. They will be plugged using the `require()` function in Lua.
Structure
---------
## Structure
A minimal plugin should confirm to the following structure:
@ -28,7 +23,6 @@ plugin-name
You can also use
[this template][2].
### README.md
This is where you document what the plugin does, how to use it, etc.
@ -49,8 +43,7 @@ end
return { setup = setup }
```
Publishing
----------
## Publishing
When publishing plugins on GitHub or other repositories, it's a best practice
to append `.xplr` to the name to make them distinguishable. Similar to the
@ -59,15 +52,11 @@ to append `.xplr` to the name to make them distinguishable. Similar to the
Finally, after publishing, don't hesitate to
[let us know][4].
Examples
--------
## Examples
Visit [Awesome Plugins][5] for xplr plugin examples.
Also See
--------
## Also See
- [Tutorial: Adding a New Mode][6]
- [Example: Using Environment Variables and Pipes][7]
@ -76,15 +65,14 @@ Also See
- [Example: Customizing Table Renderer][10]
- [Example: Render a custom dynamic table][11]
[1]:https://www.lua.org
[2]:https://github.com/sayanarijit/plugin-template1.xplr
[3]:https://neovim.io
[4]:https://github.com/sayanarijit/xplr/discussions/categories/show-and-tell
[5]:awesome-plugins.md
[6]:modes.md#tutorial-adding-a-new-mode
[7]:message.md#example-using-environment-variables-and-pipes
[8]:message.md#example-using-lua-function-calls
[9]:layouts.md#example-defining-custom-layout
[10]:column-renderer.md#example-customizing-table-renderer
[11]:layouts.md#example-render-a-custom-dynamic-table
[1]: https://www.lua.org
[2]: https://github.com/sayanarijit/plugin-template1.xplr
[3]: https://neovim.io
[4]: https://github.com/sayanarijit/xplr/discussions/categories/show-and-tell
[5]: awesome-plugins.md
[6]: modes.md#tutorial-adding-a-new-mode
[7]: message.md#example-using-environment-variables-and-pipes
[8]: message.md#example-using-lua-function-calls
[9]: layouts.md#example-defining-custom-layout
[10]: column-renderer.md#example-customizing-table-renderer
[11]: layouts.md#example-render-a-custom-dynamic-table

Loading…
Cancel
Save