Broot can display two panels. Most frequent uses are:

Keyboard shortcuts

The ctrl and ctrl shortcuts should be enough to support all common panel related operation:

The type of open panel depends on the selection:

You may also close the current panel with ctrlW, which is a shortcut for :close_panel (you can change all bindings).

Note

Depending on your system and terminal, the ctrl and ctrl key bindings might not convenient or not usable. In such a case, you should rebind the :panel_left and :panel_right internals.

Use a verb to open a panel

Another way to open a panel is to add a bang (!) to a verb. It tells broot to show the result in a new panel.

For example, while :focus ~ navigates to your home directory in the current panel, you can use :!focus ~ or :focus! ~ to open a new panel on your home.

The preview panel

preview

It's not immediately focused on creation, because most often you'll want to preview a few files and it's convenient to stay in the tree to navigate.

To focus it, for example to scroll it or to do a search, do ctrl again.

Files that can't be interpreted as text or image are shown as binary:

binary

You can search with fuzzy patterns or regular expressions inside a text preview panel:

search-preview

You can go from the selected matched line to the unfiltered text, at the right place, with ctrl (and then back to the list of matching lines with ctrl).

Hopefully this blog post should make the complete search workflow look natural.

Copy, move between panels... or more

When exactly two panels are displayed, {other-panel-file} {other-panel-directory}, and {other-panel-parent} are available for verbs.

Two built-in verbs use those arguments: :copy_to_panel (alias :cpp) and :move_to_panel (alias :mvp). By having two panels displayed you can thus copy (or move) the current panel's selection to the other one:

cpp

The default configuration file contains this that you may uncomment to add F5 and F6 shortcuts:

# {
#     key: F5
#     internal: ":copy_to_panel"
# }
# {
#     key: F6
#     internal: ":move_to_panel"
# }
# [[verbs]]
# key = "F5"
# internal = ":copy_to_panel"
#
# [[verbs]]
# key = "F6"
# internal = ":move_to_panel"

You may define other shortcuts, or your own bi-panels verbs.

Use a panel to edit a verb argument

Assuming you started from just one panel and wanted to execute a command taking a path as argument. You may use tab-completion to type it faster but you may also hit ctrlP to create a panel and select it. Here's the complete workflow.

You may now hit enter to execute the command, maybe after having completed the path.

This workflow is based on the :start_end_panel verb which can be bound to another key if desired.

More panels

The default configuration limits the number of panels to two, because most people never needs more and it makes it easier to alternate between one or two panels.

But if you want more panels, for a specific configuration of for your main one, you may change the value of max_panels_count in the configuration file.

If your terminal is wide enough, you may then open more panels:

image

Resize panels

3 verbs are at your disposal if you ever need to change the width of panels:

You may bind keyboard shortcuts, eg (in the verbs array of verbs.hjson)

{
    invocation: move_divider_left
    key: alt-<
    execution: ":move_panel_divider 0 -1"
    leave_broot: false
}
{
    invocation: move_divider_right
    key: alt->
    execution: ":move_panel_divider 0 1"
    leave_broot: false
}

Resizing instructions can also be provided in a configuration file, eg

layout_instructions: [
    { panel: 1, width: 80 }
]

or

layout_instructions: [
    { divider: 0, dx: 5 }
]