#######################################################
# This is the default config file for mpv-file-browser
# https://github.com/CogentRedTester/mpv-file-browser
#######################################################

####################################
######## browser settings ##########
####################################

# Root directories, separated by commas.
# `C:/` and `/` are automatically added on Windows and non-windows systems, respectively.
# The order of automatically added items can be changed by entering them here manually.
root=~/

# characters to separate root directories, each character works individually
root_separators=,

# number of entries to show on the screen at once
num_entries=20

# number of directories to keep in the history.
# A size of 0 disables the history.
history_size=100

# wrap the cursor around the top and bottom of the list
wrap=no

# enables loading external addons
addons=yes

# enable custom keybinds
# the keybind json file must go in ~~/script-opts
custom_keybinds=yes

# Automatically detect windows drives and adds them to the root.
# Using Ctrl+r in the root will run another scan.
auto_detect_windows_drives=yes

# when opening the browser in idle mode prefer the current working directory over the root
# note that the working directory is set as the 'current' directory regardless, so `home` will
# move the browser there even if this option is set to false
default_to_working_directory=no

# When opening the browser prefer the directory last opened by a previous mpv instance of file-browser.
# Overrides the `default_to_working_directory` option.
# Requires `save_last_opened_directory` to be `yes`.
# Uses the internal `last-opened-directory` addon.
default_to_last_opened_directory=no

# Whether to save the last opened directory.
save_last_opened_directory=no

# Move the cursor to the currently playing item (if available) when the playing file changes.
cursor_follows_playing_item=no

####################################
########## filter settings #########
####################################

# only show files compatible with mpv in the browser
filter_files=yes

# file-browser only shows files that are compatible with mpv by default
# adding a file extension to this list will add it to the extension whitelist
# extensions are separated with commas, do not use any spaces
extension_whitelist=

# add file extensions to this list to disable default filetypes
# note that this will also override audio/subtitle_extension options below
extension_blacklist=

# files with these extensions will be added as additional audio tracks for the current file instead of appended to the playlist
# items on this list are automatically added to the extension whitelist
audio_extensions=mka,dts,dtshd,dts-hd,truehd,true-hd

# files with these extensions will be added as additional subtitle tracks for the current file instead of appended to the playlist
# items on this list are automatically added to the extension whitelist
subtitle_extensions=etf,etf8,utf-8,idx,sub,srt,rt,ssa,ass,mks,vtt,sup,scc,smi,lrc,pgs

# filter directories or files starting with a period like .config for linux systems
# auto will show dot entries on windows and hide them otherwise
filter_dot_dirs=auto
filter_dot_files=auto

####################################
###### file loading settings #######
####################################

# this option reverses the behaviour of the alt+ENTER keybind
# when disabled the keybind is required to enable autoload for the file
# when enabled the keybind disables autoload for the file
autoload=no

# experimental feature that recurses directories concurrently when appending items to the playlist
# this feature has the potential for massive performance improvements when using addons with asynchronous IO
concurrent_recursion=yes

# maximum number of recursions that can run concurrently
# if this number is too high it risks overflowing the mpv event queue, which will cause some directories to be dropped entirely
max_concurrency=16

# substitute forward slashes for backslashes when appending a local file to the playlist
# may be useful on windows systems
substitute_backslash=no

# if autoload is triggered by selecting the currently playing file, then
# the current file will have it's watch-later config saved before being closed and re-opened
# essentially the current file will not be restarted
autoload_save_current=yes

####################################
### directory parsing settings #####
####################################

# a directory cache to improve directory reading time,
# enable if it takes a long time to load directories.
# May cause 'ghost' files to be shown that no-longer exist or
# fail to show files that have recently been created.
# Reloading the directory with Ctrl+r will never use the cache.
# Use Ctrl+Shift+r to forcibly clear the cache.
cache=no

# Enables the internal `ls` addon that parses directories using the `ls` commandline tool.
# Allows directory parsing to run concurrently, which prevents the browser from locking up.
# Automatically disables itself on Windows systems.
ls_parser=yes

# Enables the internal `windir` addon that parses directories using the `dir` command in cmd.exe.
# Allows directory parsing to run concurrently, which prevents the browser from locking up.
# Automatically disables itself on non-Windows systems.
windir_parser=yes

# when moving up a directory do not stop on empty protocol schemes like `ftp://`
# e.g. moving up from `ftp://localhost/` will move straight to the root instead of `ftp://`
skip_protocol_schemes=yes

# map optical device paths to their respective file paths,
# e.g. mapping bd:// to the value of the bluray-device property
map_bd_device=yes
map_dvd_device=yes
map_cdda_device=yes

####################################
########## misc settings ###########
####################################

# turn the OSC idle screen off and on when opening and closing the browser
# this should only be enabled if file-browser is the only thing controlling the idle-screen,
# if multiple sources attempt to control the idle-screen at the same time it can cause unexpected behaviour.
toggle_idlescreen=no

# interpret backslashes `\` in paths as forward slashes `/`
# this is useful on Windows, which natively uses backslashes.
# As backslashes are valid filename characters in Unix systems this could
# cause mangled paths, though such filenames are rare.
# Use `yes` and `no` to enable/disable. `auto` tries to use the mpv `platform`
# property (mpv v0.36+) to decide. If the property is unavailable it defaults to `yes`.
normalise_backslash=auto

# Set the current open status of the browser in the `file_browser/open` field of the `user-data` property.
# This property is only available in mpv v0.36+.
set_user_data=yes

# Set the current open status of the browser in the `file_browser-open` field of the `shared-script-properties` property.
# This property is deprecated. When it is removed in mpv v0.37 file-browser will automatically disable this option.
set_shared_script_properties=no

####################################
########## file overrides #########
####################################

# directory to load external modules - currently just user-input-module
module_directory=~~/script-modules
addon_directory=~~/script-modules/file-browser-addons
custom_keybinds_file=~~/script-opts/file-browser-keybinds.json
last_opened_directory_file=~~state/file_browser-last_opened_directory

####################################
######### style settings ###########
####################################

# Replace the user's home directory with `~/` in the header.
# Uses the internal home-label addon.
home_label=yes

# force file-browser to use a specific alignment (default: top-left)
# set to auto to use the default mpv osd-align options
# Options: 'auto'|'top'|'center'|'bottom'
align_y=top
# Options: 'auto'|'left'|'center'|'right'
align_x=left

# The format string used for the header. Uses custom-keybind substitution codes to
# dynamically change the contents of the header (see: docs/custom-keybinds.md#codes)
# and supports the additional code `%^`which re-applies the default header ass style.
# The original style used before the current one was: %q\N----------------------------------------------------
format_string_header={\fnMonospace}[%i/%x]%^ %q\N------------------------------------------------------------------

# The format strings used for the wrappers. Supports custom-keybind substitution codes, and
# supports two additional codes: `%<` and `%>` to show the number of items before and after the visible list, respectively.
# Setting these options to empty strings will disable the wrappers.
# Original styles used before the current ones were:
# top: %< item(s) above\N
# bottom: \N%> item(s) remaining
format_string_topwrapper=...
format_string_bottomwrapper=...

# allows custom icons be set for the folder and cursor
# the `\h` character is a hard space to add padding
folder_icon={\p1}m 6.52 0 l 1.63 0 b 0.73 0 0.01 0.73 0.01 1.63 l 0 11.41 b 0 12.32 0.73 13.05 1.63 13.05 l 14.68 13.05 b 15.58 13.05 16.31 12.32 16.31 11.41 l 16.31 3.26 b 16.31 2.36 15.58 1.63 14.68 1.63 l 8.15 1.63{\p0}\h
cursor_icon={\p1}m 14.11 6.86 l 0.34 0.02 b 0.25 -0.02 0.13 -0 0.06 0.08 b -0.01 0.16 -0.02 0.28 0.04 0.36 l 3.38 5.55 l 3.38 5.55 3.67 6.15 3.81 6.79 3.79 7.45 3.61 8.08 3.39 8.5l 0.04 13.77 b -0.02 13.86 -0.01 13.98 0.06 14.06 b 0.11 14.11 0.17 14.13 0.24 14.13 b 0.27 14.13 0.31 14.13 0.34 14.11 l 14.11 7.28 b 14.2 7.24 14.25 7.16 14.25 7.07 b 14.25 6.98 14.2 6.9 14.11 6.86{\p0}\h
cursor_icon_flipped={\p1}m 0.13 6.86 l 13.9 0.02 b 14 -0.02 14.11 -0 14.19 0.08 b 14.26 0.16 14.27 0.28 14.21 0.36 l 10.87 5.55 l 10.87 5.55 10.44 6.79 10.64 8.08 10.86 8.5l 14.21 13.77 b 14.27 13.86 14.26 13.98 14.19 14.06 b 14.14 14.11 14.07 14.13 14.01 14.13 b 13.97 14.13 13.94 14.13 13.9 14.11 l 0.13 7.28 b 0.05 7.24 0 7.16 0 7.07 b 0 6.98 0.05 6.9 0.13 6.86{\p0}\h

# set the opacity of fonts in hexadecimal from 00 (opaque) to FF (transparent)
font_opacity_selection_marker=99

# print the header in bold font
font_bold_header=yes

# scale the size of the browser; 2 would double the size, 0.5 would halve it, etc.
# the header and wrapper scaling is relative to the base scaling
scaling_factor_base=1
scaling_factor_header=1.4
scaling_factor_wrappers=1

# set custom font names, blank is the default
# setting custom fonts for the folder/cursor can fix broken or missing icons
font_name_header=
font_name_body=
font_name_wrappers=
font_name_folder=
font_name_cursor=

# set custom font colours
# colours are in hexadecimal format in Blue Green Red order
# note that this is the opposite order to RGB colour codes
font_colour_header=00ccff
font_colour_body=ffffff
font_colour_wrappers=00ccff
font_colour_cursor=00ccff
font_colour_escape_chars=413eff

# these are colours applied to list items in different states
font_colour_selected=fce788
font_colour_multiselect=fcad88
font_colour_playing=33ff66
font_colour_playing_multiselected=22b547
