1
0

Initial commit

This commit is contained in:
Mark
2021-04-24 17:30:03 -07:00
commit 7ed13932d3
18 changed files with 1766 additions and 0 deletions

3
ncmpcpp/README.md Normal file
View File

@ -0,0 +1,3 @@
**NCMPCPP config**
These files go in `~/.ncmpcpp`

608
ncmpcpp/bindings Normal file
View File

@ -0,0 +1,608 @@
# Delete
def_key "x"
delete_playlist_items
def_key "x"
delete_browser_items
def_key "x"
delete_stored_playlist
# Navigation
def_key "k"
scroll_up
def_key "j"
scroll_down
def_key "ctrl-u"
page_up
def_key "ctrl-d"
page_down
def_key "K"
select_item
scroll_up
def_key "J"
select_item
scroll_down
def_key "h"
previous_column
def_key "l"
next_column
def_key "k"
scroll_up
def_key "j"
scroll_down
def_key "a"
select_item
def_key "A"
add_selected_items
def_key "shift-enter"
add
# Search
def_key "n"
next_found_item
def_key "N"
previous_found_item
# Switch + and = keys.
# Nobody wants to press shift to increase volume
def_key "+"
show_clock
def_key "="
volume_up
# Better seek keys
def_key "."
seek_forward
def_key ","
seek_backward
def_key "L"
show_lyrics
##### General rules #####
##
## 1) Because each action has runtime checks whether it's
## ok to run it, a few actions can be bound to one key.
## Actions will be bound in order given in configuration
## file. When a key is pressed, first action in order
## will test itself whether it's possible to run it. If
## test succeeds, action is executed and other actions
## bound to this key are ignored. If it doesn't, next
## action in order tests itself etc.
##
## 2) It's possible to bind more that one action at once
## to a key. It can be done using the following syntax:
##
## def_key "key"
## action1
## action2
## ...
##
## This creates a chain of actions. When such chain is
## executed, each action in chain is run until the end of
## chain is reached or one of its actions fails to execute
## due to its requirements not being met. If multiple actions
## and/or chains are bound to the same key, they will be
## consecutively run until one of them gets fully executed.
##
## 3) When ncmpcpp starts, bindings configuration file is
## parsed and then ncmpcpp provides "missing pieces"
## of default keybindings. If you want to disable some
## bindings, there is a special action called 'dummy'
## for that purpose. Eg. if you want to disable ability
## to crop playlists, you need to put the following
## into configuration file:
##
## def_key "C"
## dummy
##
## After that ncmpcpp will not bind any default action
## to this key.
##
## 4) To let you write simple macros, the following special
## actions are provided:
##
## - push_character "character" - pushes given special
## character into input queue, so it will be immediately
## picked by ncmpcpp upon next call to readKey function.
## Accepted values: mouse, up, down, page_up, page_down,
## home, end, space, enter, insert, delete, left, right,
## tab, ctrl-a, ctrl-b, ..., ctrl-z, ctrl-[, ctrl-\\,
## ctrl-], ctrl-^, ctrl-_, f1, f2, ..., f12, backspace.
## In addition, most of these names can be prefixed with
## alt-/ctrl-/shift- to be recognized with the appropriate
## modifier key(s).
##
## - push_characters "string" - pushes given string into
## input queue.
##
## - require_runnable "action" - checks whether given action
## is runnable and fails if it isn't. This is especially
## useful when mixed with previous two functions. Consider
## the following macro definition:
##
## def_key "key"
## push_characters "custom_filter"
## apply_filter
##
## If apply_filter can't be currently run, we end up with
## sequence of characters in input queue which will be
## treated just as we typed them. This may lead to unexpected
## results (in this case 'c' will most likely clear current
## playlist, 'u' will trigger database update, 's' will stop
## playback etc.). To prevent such thing from happening, we
## need to change above definition to this one:
##
## def_key "key"
## require_runnable "apply_filter"
## push_characters "custom_filter"
## apply_filter
##
## Here, first we test whether apply_filter can be actually run
## before we stuff characters into input queue, so if condition
## is not met, whole chain is aborted and we're fine.
##
## - require_screen "screen" - checks whether given screen is
## currently active. accepted values: browser, clock, help,
## media_library, outputs, playlist, playlist_editor,
## search_engine, tag_editor, visualizer, last_fm, lyrics,
## selected_items_adder, server_info, song_info,
## sort_playlist_dialog, tiny_tag_editor.
##
## - run_external_command "command" - runs given command using
## system() function.
##
## 5) In addition to binding to a key, you can also bind actions
## or chains of actions to a command. If it comes to commands,
## syntax is very similar to defining keys. Here goes example
## definition of a command:
##
## def_command "quit" [deferred]
## stop
## quit
##
## If you execute the above command (which can be done by
## invoking action execute_command, typing 'quit' and pressing
## enter), ncmpcpp will stop the player and then quit. Note the
## presence of word 'deferred' enclosed in square brackets. It
## tells ncmpcpp to wait for confirmation (ie. pressing enter)
## after you typed quit. Instead of 'deferred', 'immediate'
## could be used. Then ncmpcpp will not wait for confirmation
## (enter) and will execute the command the moment it sees it.
##
## Note: while command chains are executed, internal environment
## update (which includes current window refresh and mpd status
## update) is not performed for performance reasons. However, it
## may be desirable to do so in some situration. Therefore it's
## possible to invoke by hand by performing 'update enviroment'
## action.
##
## Note: There is a difference between:
##
## def_key "key"
## action1
##
## def_key "key"
## action2
##
## and
##
## def_key "key"
## action1
## action2
##
## First one binds two single actions to the same key whilst
## second one defines a chain of actions. The behavior of
## these two is different and is described in (1) and (2).
##
## Note: Function def_key accepts non-ascii characters.
##
##### List of unbound actions #####
##
## The following actions are not bound to any key/command:
##
## - set_volume
##
#
#def_key "mouse"
# mouse_event
#
#def_key "up"
# scroll_up
#
#def_key "shift-up"
# select_item
# scroll_up
#
#def_key "down"
# scroll_down
#
#def_key "shift-down"
# select_item
# scroll_down
#
#def_key "["
# scroll_up_album
#
#def_key "]"
# scroll_down_album
#
#def_key "{"
# scroll_up_artist
#
#def_key "}"
# scroll_down_artist
#
#def_key "page_up"
# page_up
#
#def_key "page_down"
# page_down
#
#def_key "home"
# move_home
#
#def_key "end"
# move_end
#
#def_key "insert"
# select_item
#
#def_key "enter"
# enter_directory
#
#def_key "enter"
# toggle_output
#
#def_key "enter"
# run_action
#
#def_key "enter"
# play_item
#
#def_key "space"
# add_item_to_playlist
#
#def_key "space"
# toggle_lyrics_update_on_song_change
#
#def_key "space"
# toggle_visualization_type
#
#def_key "delete"
# delete_playlist_items
#
#def_key "delete"
# delete_browser_items
#
#def_key "delete"
# delete_stored_playlist
#
#def_key "right"
# next_column
#
#def_key "right"
# slave_screen
#
#def_key "right"
# volume_up
#
#def_key "+"
# volume_up
#
#def_key "left"
# previous_column
#
#def_key "left"
# master_screen
#
#def_key "left"
# volume_down
#
#def_key "-"
# volume_down
#
#def_key ":"
# execute_command
#
#def_key "tab"
# next_screen
#
#def_key "shift-tab"
# previous_screen
#
#def_key "f1"
# show_help
#
#def_key "1"
# show_playlist
#
#def_key "2"
# show_browser
#
#def_key "2"
# change_browse_mode
#
#def_key "3"
# show_search_engine
#
#def_key "3"
# reset_search_engine
#
#def_key "4"
# show_media_library
#
#def_key "4"
# toggle_media_library_columns_mode
#
#def_key "5"
# show_playlist_editor
#
#def_key "6"
# show_tag_editor
#
#def_key "7"
# show_outputs
#
#def_key "8"
# show_visualizer
#
#def_key "="
# show_clock
#
#def_key "@"
# show_server_info
#
#def_key "s"
# stop
#
#def_key "p"
# pause
#
#def_key ">"
# next
#
#def_key "<"
# previous
#
#def_key "ctrl-h"
# jump_to_parent_directory
#
#def_key "ctrl-h"
# replay_song
#
#def_key "backspace"
# jump_to_parent_directory
#
#def_key "backspace"
# replay_song
#
#def_key "f"
# seek_forward
#
#def_key "b"
# seek_backward
#
#def_key "r"
# toggle_repeat
#
#def_key "z"
# toggle_random
#
#def_key "y"
# save_tag_changes
#
#def_key "y"
# start_searching
#
#def_key "y"
# toggle_single
#
#def_key "R"
# toggle_consume
#
#def_key "Y"
# toggle_replay_gain_mode
#
#def_key "T"
# toggle_add_mode
#
#def_key "|"
# toggle_mouse
#
#def_key "#"
# toggle_bitrate_visibility
#
#def_key "Z"
# shuffle
#
#def_key "x"
# toggle_crossfade
#
#def_key "X"
# set_crossfade
#
#def_key "u"
# update_database
#
#def_key "ctrl-s"
# sort_playlist
#
#def_key "ctrl-s"
# toggle_browser_sort_mode
#
#def_key "ctrl-s"
# toggle_media_library_sort_mode
#
#def_key "ctrl-r"
# reverse_playlist
#
#def_key "ctrl-_"
# select_found_items
#
#def_key "/"
# find
#
#def_key "/"
# find_item_forward
#
#def_key "?"
# find
#
#def_key "?"
# find_item_backward
#
#def_key "."
# next_found_item
#
#def_key ","
# previous_found_item
#
#def_key "w"
# toggle_find_mode
#
#def_key "e"
# edit_song
#
#def_key "e"
# edit_library_tag
#
#def_key "e"
# edit_library_album
#
#def_key "e"
# edit_directory_name
#
#def_key "e"
# edit_playlist_name
#
#def_key "e"
# edit_lyrics
#
#def_key "i"
# show_song_info
#
#def_key "I"
# show_artist_info
#
#def_key "g"
# jump_to_position_in_song
#
#def_key "l"
# show_lyrics
#
#def_key "ctrl-v"
# select_range
#
#def_key "v"
# reverse_selection
#
#def_key "V"
# remove_selection
#
#def_key "B"
# select_album
#
#def_key "a"
# add_selected_items
#
#def_key "c"
# clear_playlist
#
#def_key "c"
# clear_main_playlist
#
#def_key "C"
# crop_playlist
#
#def_key "C"
# crop_main_playlist
#
#def_key "m"
# move_sort_order_up
#
#def_key "m"
# move_selected_items_up
#
#def_key "m"
# set_visualizer_sample_multiplier
#
#def_key "n"
# move_sort_order_down
#
#def_key "n"
# move_selected_items_down
#
#def_key "M"
# move_selected_items_to
#
#def_key "A"
# add
#
#def_key "S"
# save_playlist
#
#def_key "o"
# jump_to_playing_song
#
#def_key "G"
# jump_to_browser
#
#def_key "G"
# jump_to_playlist_editor
#
#def_key "~"
# jump_to_media_library
#
#def_key "E"
# jump_to_tag_editor
#
#def_key "U"
# toggle_playing_song_centering
#
#def_key "P"
# toggle_display_mode
#
#def_key "\\"
# toggle_interface
#
#def_key "!"
# toggle_separators_between_albums
#
#def_key "L"
# toggle_lyrics_fetcher
#
#def_key "F"
# toggle_fetching_lyrics_in_background
#
#def_key "ctrl-l"
# toggle_screen_lock
#
#def_key "`"
# toggle_library_tag_type
#
#def_key "`"
# refetch_lyrics
#
#def_key "`"
# add_random_items
#
#def_key "ctrl-p"
# set_selected_items_priority
#
#def_key "q"
# quit
#

464
ncmpcpp/config Normal file
View File

@ -0,0 +1,464 @@
# __ __ ___ ___ ___
# | \/ | _ \ \ / __| ___ _ ___ _____ _ _
# | |\/| | _/ |) | \__ \/ -_) '_\ V / -_) '_|
# |_| |_|_| |___/ |___/\___|_| \_/\___|_|
#
mpd_host =localhost
mpd_port = 6600
mpd_connection_timeout = 5
# ___ _ _ _
# | __(_) |___ ____ _ __| |_ ___ _ __
# | _|| | / -_|_-< || (_-< _/ -_) ' \
# |_| |_|_\___/__/\_, /__/\__\___|_|_|_|
# |__/
ncmpcpp_directory = ~/.config/ncmpcpp
lyrics_directory = ~/.config/ncmpcpp/lyrics
mpd_music_dir = ~/Music
#random_exclude_pattern = "^(temp|midi_songs).*"
show_hidden_files_in_local_browser = no
generate_win32_compatible_filenames = yes
allow_for_physical_item_deletion = no
ignore_leading_the = no
ignore_diacritics = yes
# _ _
# | | _ _ _ _(_)__ ___
# | |_| || | '_| / _(_-<
# |____\_, |_| |_\__/__/
# |__/
lyrics_fetchers = azlyrics, genius, metrolyrics
follow_now_playing_lyrics = no
fetch_lyrics_for_current_song_in_background = yes
store_lyrics_in_song_dir = no
# __ ___ _ _
# \ \ / (_)____ _ __ _| (_)______ _ _
# \ V /| (_-< || / _` | | |_ / -_) '_|
# \_/ |_/__/\_,_\__,_|_|_/__\___|_|
#
visualizer_data_source = /tmp/mpd.fifo
visualizer_output_name = Visualizer feed
visualizer_in_stereo = yes
# ___ _ __
# |_ _|_ _| |_ ___ _ _ / _|__ _ __ ___
# | || ' \ _/ -_) '_| _/ _` / _/ -_)
# |___|_||_\__\___|_| |_| \__,_\__\___|
#
jump_to_now_playing_song_at_start = yes
ask_before_clearing_playlists = yes
mouse_support = no
mouse_list_scroll_whole_page = yes
cyclic_scrolling = no
lines_scrolled = 2
playlist_disable_highlight_delay = 5
message_delay_time = 5
autocenter_mode = yes
centered_cursor = yes
incremental_seeking = yes
seek_time = 1
volume_change_step = 2
# ___ _
# / __|_ _ __| |_ ___ _ __
# \__ \ || (_-< _/ -_) ' \
# |___/\_, /__/\__\___|_|_|_|
# |__/
external_editor = vim
use_console_editor = yes
execute_on_song_change = ""
execute_on_player_state_change = ""
# Available values: none, basic, extended, perl.
regular_expressions = perl
show_duplicate_tags = yes
# ncmpcpp will try to get info from last.fm in the
# language you set and if it fails, it will fall back
# to english. Otherwise it
lastfm_preferred_language = ru
# _ _ _
# | | (_) |__ _ _ __ _ _ _ _ _
# | |__| | '_ \ '_/ _` | '_| || |
# |____|_|_.__/_| \__,_|_| \_, |
# |__/
# Available values: artist, album_artist, date, genre, composer, performer.
media_library_primary_tag = artist
media_library_albums_split_by_date = yes
# Available values: database, playlist.
default_place_to_search_in = database
# Available values: wrapped, normal.
default_find_mode = wrapped
# 1 - mpd search (no regex, pattern matching)
# 2 - ncmpcpp search (pattern matching, regex, needs to download remote database)
# 3 - exact values (mpd search in database, local search in current playlist)
search_engine_default_search_mode = 1
# Available values: name, mtime, format and noop
browser_sort_mode = name
block_search_constraints_change_if_items_found = yes
media_library_sort_by_mtime = no
# __ __ _
# | \/ (_)___ __
# | |\/| | (_-</ _|
# |_| |_|_/__/\__|
#
data_fetching_delay = yes
default_tag_editor_pattern = %n - %t
# _ _ _
# | | | |_ _ _ _ ___ ___ __| |
# | |_| | ' \ || (_-</ -_) _` |
# \___/|_||_\_,_/__/\___\__,_|
#
#mpd_crossfade_time = 5
#system_encoding = ""
#space_add_mode = add_remove
#browser_sort_format = {%a - }{%t}|{%f} {(%l)}
#connected_message_on_startup = yes
# _____ _ _
# |_ _| |__ ___ _ __ ___ (_)_ __ __ _
# | | | '_ \ / _ \ '_ ` _ \| | '_ \ / _` |
# | | | | | | __/ | | | | | | | | | (_| |
# |_| |_| |_|\___|_| |_| |_|_|_| |_|\__, |
# Various look configurations |___/
#user_interface = classic
user_interface = alternative
header_visibility = no
statusbar_visibility = yes
titles_visibility = yes
header_text_scrolling = yes
# How should the screen switcher work?
#
# "previous" switch between the current and previous screen.
# "screen1,...,screenN" switch between given sequence of screens.
#
# Screens available for use:
# help, playlist, browser, search_engine,
# media_library, playlist_editor, tag_editor, outputs, visualizer, clock,
# lyrics, last_fm
screen_switcher_mode = playlist, browser
startup_screen = playlist
startup_slave_screen = ""
startup_slave_screen_focus = no
# Default width of locked screen (in %). Acceptable values are from 20 to 80.
locked_screen_width_part = 50
ask_for_locked_screen_width_part = yes
# Note: Possible display modes: classic, columns.
browser_display_mode = classic
search_engine_display_mode = classic
playlist_editor_display_mode = classic
discard_colors_if_item_is_selected = yes
empty_tag_marker = <empty>
tags_separator = " | "
tag_editor_extended_numeration = no
enable_window_title = yes
clock_display_seconds = no
display_volume_level = yes
display_bitrate = no
display_remaining_time = no
# Available values: spectrum, wave, wave_filled, ellipse.
visualizer_type = wave
visualizer_look = "●▮"
visualizer_color = blue, cyan, green, yellow, magenta, red
# Alternative color set for 256-color terminals
#visualizer_color = 41, 83, 119, 155, 185, 215, 209, 203, 197, 161
# Tag format strings:
# %l length
# %f filename
# %D directory
# %a artist
# %A album artist
# %t title
# %b album
# %y date
# %n track number (01/12 -> 01)
# %N full track info (01/12 -> 01/12)
# %g genre
# %c composer
# %p performer
# %d disc
# %C comment
# %P priority
# Colors:
# $0 default window color (discards all other colors)
# $1 black
# $2 red
# $3 green
# $4 yellow
# $5 blue
# $6 magenta
# $7 cyan
# $8 white
# $9 end of current color
# Formatting:
# $b bold text
# $u underline text
# $r reverse colors
# $a use alternative character set
# $R right-align
# If you want to make sure that a part of the format is displayed only when
# certain tags are present, you can archieve it by grouping them with brackets,
# e.g. '{%a - %t}' will be evaluated to 'ARTIST - TITLE' if both tags are
# present or '' otherwise. It is also possible to define a list of
# alternatives by providing several groups and separating them with '|',
# e.g. '{%t}|{%f}' will be evaluated to 'TITLE' or 'FILENAME' if the former is
# not present.
##
## Note: If you want to set limit on maximal length of a tag, just put the
## appropriate number between % and character that defines tag type, e.g. to
## make album take max. 20 terminal cells, use '%20b'.
##
## In addition, formats support markers used for text attributes. They are
## followed by character '$'. After that you can put:
##
#
## If you don't want to use a non-color attribute anymore, just put it again,
## but this time insert character '/' between '$' and attribute character,
## e.g. {$b%t$/b}|{$r%f$/r} will display bolded title tag or filename with
## reversed colors.
##
## If you want to use 256 colors and/or background colors in formats (the naming
## scheme is described below in section about color definitions), it can be done
## with the syntax $(COLOR), e.g. to set the artist tag to one of the
## non-standard colors and make it have yellow background, you need to write
## $(197_yellow)%a$(end). Note that for standard colors this is interchangable
## with attributes listed above.
##
## Note: colors can be nested.
##
#
song_list_format = {%a - }{%t}|{$8%f$9}$R{$3(%l)$9}
song_status_format = {{%a{ "%b"{ (%y)}} - }{%t}}|{%f}
song_library_format = {%n - }{%t}|{%f}
# ___ _ _ _ _
# | _ \ |__ _ _ _| (_)__| |_
# | _/ / _` | || | | (_-< _|
# |_| |_\__,_|\_, |_|_/__/\__|
# |__/
# Possible values: columns, classic
playlist_display_mode = columns
playlist_show_mpd_host = no
playlist_show_remaining_time = no
playlist_shorten_total_times = no
playlist_separate_albums = no
# Alternative layout
alternative_header_first_line_format = "$5$aqqu$/a$9 $b{%t}|{%f}$/b $5$atqq$/a$9"
#alternative_header_second_line_format = "{$8%a - $7%b}"
alternative_header_second_line_format = "{$8%a}"
progressbar_color = white
progressbar_elapsed_color = blue
progressbar_look = "▀▀▀"
# Other possible values:
# "⠒⠒⠐"
# "•••"
# "---"
# "▀▀ "
# "╼·"
# "━━━"
# "━━─"
# "─╼─"
# "◾◾◽"
# Column format
#
# Each column is defined as follows:
# (width)[color]{content}
#
# Width can both relative and absolute:
# (10) Take 10% of the screen's width
# (10f) A fixed width of 10 characters
#
# If the color field is empty, the default one is used.
#
# Content is formatted with the tag format strings
# listed above. Use them without the leading "%".
#
# Options:
# (Placed after content string)
#
# r right-aligh column
# E Don't display empty tag marker
#
#
# Column names can also be defined:
# {lr:Length} creates a right aligned column named "Length"
#
# Multiple tag optons can be given:
# {a|c|p:Owner} creates a tag named owner that tries to
# display the artist tag, defaulting to composer
# and performer if the previous tag is unavaliable.
song_columns_list_format = "(20)[yellow]{a} (50)[white]{t|f} (20)[cyan]{bE} (6f)[white]{l}"
current_item_prefix = $(yellow)$r
current_item_suffix = $/r$(end)
current_item_inactive_column_prefix = $(white)$r
current_item_inactive_column_suffix = $/r$(end)
now_playing_prefix = $b
now_playing_suffix = $/b
browser_playlist_prefix = "$2playlist$9 "
selected_item_prefix = $6
selected_item_suffix = $9
modified_item_prefix = $3> $9
# Attributes are not supported here
song_window_title_format = {%a - }{%t}|{%f}
# ___ _
# / __|___| |___ _ _ ___
# | (__/ _ \ / _ \ '_(_-<
# \___\___/_\___/_| /__/
#
#
# It is possible to set a background color by setting a color value
# "<foreground>_<background>", e.g. red_black will set foregound color to red
# and background color to black.
#
# In addition, for terminals that support 256 colors it is possible to set one
# of them by using a number in range [1, 256] instead of color name,
# e.g. numerical value corresponding to red_black is 2_1. To find out if the
# terminal supports 256 colors, run ncmpcpp and check out the bottom of the
# help screen for list of available colors and their numerical values.
#
# What is more, there are two special values for the background color:
# "transparent" and "current". The first one explicitly sets the background to
# be transparent, while the second one allows you to preserve current
# background color and change only the foreground one. It's used implicitly
# when background color is not specified.
#
# Moreover, it is possible to attach format information to selected color
# variables by appending to their end a colon followed by one or more format
# flags, e.g. black:b or red:ur. The following variables support this syntax:
# visualizer_color, color1, color2, empty_tag_color, volume_color,
# state_line_color, state_flags_color, progressbar_color,
# progressbar_elapsed_color, player_state_color, statusbar_time_color,
# alternative_ui_separator_color.
#
# Note: due to technical limitations of older ncurses version, if 256 colors
# are used there is a possibility that you'll be able to use only colors with
# transparent background.
#
colors_enabled = yes
empty_tag_color = cyan
header_window_color = default
volume_color = white
state_line_color = green
state_flags_color = white:b
main_window_color = yellow
color1 = white
color2 = green
statusbar_color = default
statusbar_time_color = default:b
player_state_color = default:b
alternative_ui_separator_color = white
window_border_color = white
active_window_border = red