############################################################### # 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 `#`. # ############################################################### { ############################################################### # 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: true ############################################################### # 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: { # : 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 }