###############################################################
# This configuration file lets you
# - define new commands
# - change the shortcut or triggering keys of built-in verbs
# - change the colors
# - set default values for flags
# - set special behaviors on specific paths
# - and more...
#
# Configuration documentation is available at
#     https://dystroy.org/broot
#
# This file's format is Hjson ( https://hjson.github.io/ ). Some
# properties are commented out. To enable them, remove the `#`.
#
###############################################################
{
    capture_mouse: false

    ###############################################################
    # Default flags
    # You can set up flags you want broot to start with by
    # default, for example `default_flags="ihp"` if you usually want
    # to see hidden and gitignored files and the permissions (then
    # if you don't want the hidden files you can launch `br -H`)
    # A popular flag is the `g` one which displays git related info.
    #
    # default_flags:

    ###############################################################
    # Date/Time format
    # If you want to change the format for date/time, uncomment the
    # following line and change it according to
    # https://docs.rs/chrono/0.4.11/chrono/format/strftime/index.html
    #
    # date_time_format: %Y/%m/%d %R

    ###############################################################
    # uncomment to activate modal mode
    #
    # (you really should read https://dystroy.org/broot/modal/
    # before as it may not suit everybody even among vim users)
    #
    modal: false

    ###############################################################
    # Whether to mark the selected line with a triangle
    #
    show_selection_mark: true

    ###############################################################
    # Column order
    # cols_order, if specified, must be a permutation of the following
    # array. You should keep the name at the end as it has a variable
    # length.
    #
    # cols_order: [
    #     mark
    #     git
    #     size
    #     permission
    #     date
    #     count
    #     branch
    #     name
    # ]

    ###############################################################
    # True Colors
    # If this parameter isn't set, broot tries to automatically
    # determine whether true colors (24 bits) are available.
    # As this process is unreliable, you may uncomment this setting
    # and set it to false or true if you notice the colors in
    # previewed images are too off.
    #
    # true_colors: false

    ###############################################################
    # Icons
    # If you want to display icons in broot, uncomment this line
    # (see https://dystroy.org/broot/icons for installation and
    # troubleshooting)
    #
    # icon_theme: vscode

    ###############################################################
    # Special paths
    # If some paths must be handled specially, uncomment (and change
    # this section as per the examples)
    #
    # special_paths: {
    #     "/media/slow-backup-disk"    : no-enter
    #     "/home/dys/useless"    : hide
    #     "/home/dys/my-link-I-want-to-explore"    : enter
    # }

    ###############################################################
    # Quit on last cancel
    # You can usually cancel the last state change on escape.
    # If you want the escape key to quit broot when there's nothing
    # to cancel (for example when you just opened broot), uncomment
    # this parameter
    # 
    # quit_on_last_cancel: true

    ###############################################################
    # Search modes
    #
    # broot allows many search modes.
    # A search mode is defined by
    # - the way to search: 'fuzzy', 'exact', 'regex', or 'tokens'.
    # - where to search: file 'name', 'path', or file 'content'
    # A search pattern may for example be "fuzzy path" (default),
    # "regex content" or "exact path".
    #
    # The search mode is selected from its prefix. For example, if
    # you type "abc", the default mode is "fuzzy path". If you type
    # "/abc", the mode is "regex path". If you type "rn/abc", the mode
    # is "regex name".
    #
    # This mapping may be modified. You may want to dedicate the
    # empty prefix (the one which doesn't need a '/') to the
    # search mode you use most often. The example below makes it
    # easy to search on name rather than on the subpath.
    #
    # More information on
    #  https://dystroy.org/broot/input/#the-filtering-pattern
    #
    # search_modes: {
    #     <empty>: fuzzy name
    #     /: regex name
    # }

    ###############################################################
    # Verbs and shortcuts
    # You can define your own commands which would be applied to
    # the selection.
    # You'll also find below verbs that you can customize or enable.
    verbs: [

    # Example 1: launching `tail -n` on the selected file (leaving broot)
    # {
    #     name: tail_lines
    #     invocation: tl {lines_count}
    #     execution: "tail -f -n {lines_count} {file}"
    # }

    # Example 2: creating a new file without leaving broot
    # {
    #     name: touch
    #     invocation: touch {new_file}
    #     execution: "touch {directory}/{new_file}"
    #     leave_broot: false
    # }

    # A standard recommended command for editing files, that you
    # can customize.
    # If $EDITOR isn't set on your computer, you should either set it using
    #  something similar to
    #   export EDITOR=nvim
    #  or just replace it with your editor of choice in the 'execution'
    #  pattern.
    #  If your editor is able to open a file on a specific line, use {line}
    #   so that you may jump directly at the right line from a preview.
    # Example:
    #  execution: nvim +{line} {file}
    {
        invocation: edit
        shortcut: e
        execution: "$EDITOR +{line} {file}"
        leave_broot: false
    }

    # A convenient shortcut to create new text files in
    # the current directory or below
    {
        invocation: create {subpath}
        execution: "$EDITOR {directory}/{subpath}"
        leave_broot: false
    }

    {
        invocation: git_diff
        shortcut: gd
        leave_broot: false
        execution: "git difftool -y {file}"
    }

    # On ctrl-b, propose the creation of a copy of the selection.
    # While this might occasionally be useful, this verb is mostly here
    # as an example to demonstrate rare standard groups like {file-stem}
    # and {file-dot-extension} and the auto_exec verb property which
    # allows verbs not executed until you hit enter
    {
        invocation: "backup {version}"
        key: ctrl-b
        leave_broot: false
        auto_exec: false
        execution: "cp -r {file} {parent}/{file-stem}-{version}{file-dot-extension}"
    }

    # This verb lets you launch a terminal on ctrl-T
    # (on exit you'll be back in broot)
    {
        invocation: terminal
        key: ctrl-t
        execution: "$SHELL"
        set_working_dir: true
        leave_broot: false
    }

    # Here's an example of a shortcut bringing you to your home directory
    # {
    #     invocation: home
    #     key: ctrl-home
    #     execution: ":focus ~"
    # }

    # A popular set of shortcuts for going up and down:
    #
    # {
    #     key: ctrl-k
    #     execution: ":line_up"
    # }
    # {
    #     key: ctrl-j
    #     execution: ":line_down"
    # }
    # {
    #     key: ctrl-u
    #     execution: ":page_up"
    # }
    # {
    #     key: ctrl-d
    #     execution: ":page_down"
    # }

    # If you develop using git, you might like to often switch
    # to the git status filter:
    # {
    #     key: ctrl-g
    #     execution: ":toggle_git_status"
    # }

    # You can reproduce the bindings of Norton Commander
    # on copying or moving to the other panel:
    # {
    #     key: F5
    #     external: "cp -r {file} {other-panel-directory}"
    #     leave_broot: false
    # }
    # {
    #     key: F6
    #     external: "mv {file} {other-panel-directory}"
    #     leave_broot: false
    # }
    ]

    ###############################################################
    # Skin
    # If you want to change the colors of broot,
    # uncomment the following bloc and start messing
    # with the various values.
    # A skin entry value is made of two parts separated with a '/':
    # The first one is the skin for the active panel.
    # The second one, optional, is the skin for non active panels.
    # You may find explanations and other skins on
    #  https://dystroy.org/broot/skins
    ###############################################################
    # If you only want to set the default color and a transparent
    # background, uncomment this simplified skin:
    # skin: {
    #     default: none none / gray(20) none
    # }
    #
    # To experiment with a whole skin, uncomment this one:
    # skin: {
    #     default: gray(23) none / gray(20) none
    #     tree: ansi(94) None / gray(3) None
    #     parent: gray(18) None / gray(13) None
    #     file: gray(20) None / gray(15) None
    #     directory: ansi(208) None Bold / ansi(172) None bold
    #     exe: Cyan None
    #     link: Magenta None
    #     pruning: gray(12) None Italic
    #     perm__: gray(5) None
    #     perm_r: ansi(94) None
    #     perm_w: ansi(132) None
    #     perm_x: ansi(65) None
    #     owner: ansi(138) None
    #     group: ansi(131) None
    #     count: ansi(136) gray(3)
    #     dates: ansi(66) None
    #     sparse: ansi(214) None
    #     content_extract: ansi(29) None
    #     content_match: ansi(34) None
    #     git_branch: ansi(229) None
    #     git_insertions: ansi(28) None
    #     git_deletions: ansi(160) None
    #     git_status_current: gray(5) None
    #     git_status_modified: ansi(28) None
    #     git_status_new: ansi(94) None Bold
    #     git_status_ignored: gray(17) None
    #     git_status_conflicted: ansi(88) None
    #     git_status_other: ansi(88) None
    #     selected_line: None gray(5) / None gray(4)
    #     char_match: Yellow None
    #     file_error: Red None
    #     flag_label: gray(15) None
    #     flag_value: ansi(208) None Bold
    #     input: White None / gray(15) gray(2)
    #     status_error: gray(22) ansi(124)
    #     status_job: ansi(220) gray(5)
    #     status_normal: gray(20) gray(3) / gray(2) gray(2)
    #     status_italic: ansi(208) gray(3) / gray(2) gray(2)
    #     status_bold: ansi(208) gray(3) Bold / gray(2) gray(2)
    #     status_code: ansi(229) gray(3) / gray(2) gray(2)
    #     status_ellipsis: gray(19) gray(1) / gray(2) gray(2)
    #     purpose_normal: gray(20) gray(2)
    #     purpose_italic: ansi(178) gray(2)
    #     purpose_bold: ansi(178) gray(2) Bold
    #     purpose_ellipsis: gray(20) gray(2)
    #     scrollbar_track: gray(7) None / gray(4) None
    #     scrollbar_thumb: gray(22) None / gray(14) None
    #     help_paragraph: gray(20) None
    #     help_bold: ansi(208) None Bold
    #     help_italic: ansi(166) None
    #     help_code: gray(21) gray(3)
    #     help_headers: ansi(208) None
    #     help_table_border: ansi(239) None
    #     preview: gray(20) gray(1) / gray(18) gray(2)
    #     preview_line_number: gray(12) gray(3)
    #     preview_match: None ansi(29)
    #     hex_null: gray(11) None
    #     hex_ascii_graphic: gray(18) None
    #     hex_ascii_whitespace: ansi(143) None
    #     hex_ascii_other: ansi(215) None
    #     hex_non_ascii: ansi(167) None
    # }


    ###############################################################
    # File Extension Colors
    #
    # uncomment and modify the next section if you want to color
    # file name depending on their extension
    #
    # ext_colors: {
    #     png: rgb(255, 128, 75)
    #     rs: yellow
    # }


    ###############################################################
    # Max Panels Count
    #
    # Change this if you sometimes want to have more than 2 panels
    # open
    # max_panels_count: 2
}
