# castero configuration file
# https://github.com/xgi/castero


[client]
# Whether to limit the amount of memory used by the client (by doing more
# disk I/O). Enabling this will reduce performance -- only enable it if you
# know you need to.
# default: False
restrict_memory_usage = False

# Whether to ask for confirmation before deleting a feed.
# default: False
delete_feed_confirmation = True

# The minimum number of feeds before the client asks you for confirmation
# after pressing the reload key.
# default: 10
reload_feeds_threshold = 10

# The maximum number of episodes to retain per feed. Set to -1 for no limit.
# default: -1
max_episodes = -1

# Whether to keep episodes in the client even if they are no longer present on
# the feed (i.e. the RSS feed only shows the x most recent episodes).
# default: False
retain_absent_episodes = False

# Default window layout. This can also be changed within castero by pressing the corresponding key.
# 1 - feeds + episodes + metadata
# 2 - queue + metadata
# 3 - feeds + episodes
# 4 - downloaded episodes + metadata
# 5 - all episodes + metadata
# default: 1
default_layout = 3

# Hide vertical borders between menus.
# default: False
disable_vertical_borders = False

# Whether to remove HTML tags from feed/episode descriptions.
# default: True
clean_html_descriptions = True

# The display refresh delay, in ms. Increase to reduce idle CPU usage.
# default: 30
refresh_delay = 30

# The external player to use for media playback.
# If the given player is not valid or a dependency is not met, the client will
# instead try to use the first valid interface.
# Available players (in order of precedence):
# mpv, vlc
# default: (blank)
player = mpv

# The command to run when you press key_execute (default e). All instances of
# the following tokens are replaced with the corresponding episode attributes:
#   {file} - the episode enclosure, usually a remote mp3 file
#   {title} - the episode name
#   {description} - the episode description
#   {link} - the link to the episode, which is often a blog post
#   {pubdate} - the publish date/time of the episode
#   {copyright} - the copyright of the episode
# Most of these attributes have spaces, so you will probably want to enclose
# the token with quotations.
# For example, `firefox "{file}"` would open the file in Firefox.
# The client executes the text you enter as a shell command. Use with caution!
# default: (blank)
execute_command = xdg-open {link}

# An HTTP or SOCKS proxy to use for HTTP network requests.
# example: http://user:pass@10.10.1.10:3128
# example: socks5://user:pass@host:port
# default: (blank)
proxy_http =

# An HTTP or SOCKS proxy to use for HTTPS network requests.
# example: http://user:pass@10.10.1.10:3128
# example: socks5://user:pass@host:port
# default: (blank)
proxy_https =

# Behavior when adding selected feed into queue.
# If set to true, only unplayed episodes will be added to the queue.
# default: False
add_only_unplayed_episodes = False

[feeds]
# Whether to reload/refresh your feeds when the client starts. Depending on how
# many feeds you have, this operation may take a long time.
# default: False
reload_on_start = False


[downloads]
# The (absolute) location to save episodes downloaded for offline playback. Set
# to blank or whitespaces to disable -- the client will default to either
# $XDG_DATA_DIR, if set, otherwise ~/.local/share/castero/downloaded
# default: (blank)
custom_download_dir = ~/Downloads/podcasts

# The timeout for network requests, in seconds. The same value is used for
# connection and read timeouts.
# default: 3
request_timeout = 3


[colors]
# Available colors for all fields are:
# black, blue, cyan, green, magenta, red, white, yellow, transparent (background),
# integer from -1 to 255 if terminal supports 256 colors
# NOTE:  Background transparency only works on compatible terminals with compositing

# The foreground (text) color of the main interface.
# default: yellow
color_foreground = blue

# The background color of the main interface.
# default: black
color_background = transparent

# The foreground (text) color of selected items.
# default: black
color_foreground_alt = black

# The background color of selected items.
# default: white
color_background_alt = white

# The foreground (text) color of marked items. Paired with color_background.
# default: green
color_foreground_dim = yellow

# The foreground (text) color of status lines. Paired with color_background.
# default: white
color_foreground_status = white

# The foreground (text) color of menu headings. Paired with color_background.
# default: yellow
color_foreground_heading = green

# The foreground (text) color of dividers. Paired with color_background.
# default: white
color_foreground_dividers = white


[playback]
# The distance to move forward when pressing seek keys, in seconds.
# default: 30
seek_distance_forward = 30

# The distance to move backward when pressing seek keys, in seconds.
# default: 10
seek_distance_backward = 10

# The default playback speed. See also the rate_increase/rate_decrease keys.
# default: 1.0
default_playback_speed = 1.0

# The default volume. Can be 0-100, inclusive.
# default: 100
default_volume = 100

# The amount to adjust the volume when pressing the volume up/down keys.
# default: 5
volume_adjust_distance = 5

# The distance to rewind when resuming from playback, in seconds.
# default: 0
resume_rewind_distance = 0


[keys]
# Keybindings for controlling the client. Entries may not be blank, but may
# overlap -- however, only one operation will be performed for each key press.
# Please see this page for a list of available key names:
# https://docs.python.org/3/library/curses.html#constants

# Show the help menu.
# default: h
key_help = ?

# Exit the client
# default: q
key_exit = q

# Add a feed.
# default: a
key_add_feed = a

# Remove the selected feed.
# default: d
key_remove = d

# Reload/refresh all feeds.
# default: r
key_reload = R

# Reload/refresh the selected feed.
# default: R
key_reload_selected = r

# Save episode for offline playback.
# default: s
key_save = s

# Delete downloaded episodes.
# default: x
key_delete = x

# Navigate up.
# default: UP
key_up = k

# Navigate right.
# default: RIGHT
key_right = l

# Navigate down.
# default: DOWN
key_down = j

# Navigate left.
# default: LEFT
key_left = h

# Scroll menu up.
# default: PPAGE
key_scroll_up = K

# Scroll menu down.
# default: NPAGE
key_scroll_down = J

# Play selected feed/episode.
# default: ENTER
key_play_selected = ENTER

# Add selected feed/episode to queue.
# default: SPACE
key_add_selected = SPACE

# Clear the queue.
# default: c
key_clear = c

# Clear progress from episode.
# default: z
key_clear_progress = z

# Go to the next episode in the queue.
# default: n
key_next = n

# Execute a command on the selected episode. See also execute_command.
key_execute = e

# Invert the order of the menu.
# default: i
key_invert = i

# Filter the contents of the menu. Press again to clear the filter.
# default: /
key_filter = /

# Mark the episode as played/unplayed.
# default: m
key_mark_played = m

# Pause/play the current episode.
# default: p
key_pause_play = p

# Alternate binding for key_pause_play -- make identical to disable.
# default: k
key_pause_play_alt = P

# Seek forward.
# default: f
key_seek_forward = f

# Alternate binding for key_seek_forward -- make identical to disable.
# default: l
key_seek_forward_alt = >

# Seek backward.
# default: b
key_seek_backward = b

# Alternate binding for key_seek_backward -- make identical to disable.
# default: j
key_seek_backward_alt = <

# Increase playback speed.
# default: ]
key_rate_increase = ]

# Decrease playback speed.
# default: [
key_rate_decrease = [

# Increase volume.
# default: =
key_volume_increase = =

# Decrease volume.
# default: -
key_volume_decrease = -

# Show episode URL.
# default: u
key_show_url = u
