Compare commits
8 Commits
5b7e8ef4c3
...
dcc50fa9f2
| Author | SHA1 | Date | |
|---|---|---|---|
| dcc50fa9f2 | |||
| 2e919d6702 | |||
| c7ee2e997f | |||
| e8ed114bc2 | |||
| e6bb4bb425 | |||
| 7ac2f980b3 | |||
| 1d8a63bd9e | |||
| e3354c6c28 |
@@ -1,117 +0,0 @@
|
||||
# Simple black-and-white theme
|
||||
|
||||
# Pointers
|
||||
# ========
|
||||
# Sign that indicates the existence of audio files
|
||||
FORMAT_LOCAL="|>"
|
||||
# Pointer to the track currently playing (playlist)
|
||||
FORMAT_CURRENT="->"
|
||||
|
||||
# Input prompt
|
||||
# =============
|
||||
# Search prompt
|
||||
SEARCH_PROMPT="search> "
|
||||
|
||||
# Headers
|
||||
# =======
|
||||
# Header that displays artist's name
|
||||
HEADER_ARTIST="%s > "
|
||||
# Header that displays the release-group name after artist's
|
||||
HEADER_ARTIST_RELEASEGROUP="%s > %s > "
|
||||
# Header that in addition to `HEADER_ARTIST_RELEASEGROUP` also shows some
|
||||
# release information
|
||||
HEADER_RELEASE="%s > %s > %s"
|
||||
# The release information is formatted as follows (placeholders implicit):
|
||||
HEADER_RELEASE_FORMAT="<<tracks>> tx <<media>> | <<label>> <<country>> <<year>>"
|
||||
|
||||
# Artist view
|
||||
# ===========
|
||||
# Artist string for persons
|
||||
AV_PERSON="<<name>>"
|
||||
# Artist string for groups
|
||||
AV_GROUP="<<name>>"
|
||||
# Artist disambiguation string
|
||||
AV_DISAMBIGUATION=" (<<disambiguation>>)"
|
||||
|
||||
# Release-group view
|
||||
# ==================
|
||||
# Default release group string
|
||||
RGV_RELEASE="<<title>>"
|
||||
# Release group string if the artist name differs from the current artist
|
||||
RGV_RELEASE_W_ARTIST="<<title>> by <<artist>>"
|
||||
# Year of the release group
|
||||
RGV_YEAR="[<<year>>]"
|
||||
|
||||
# Release-group types
|
||||
# ===================
|
||||
# Album
|
||||
FORMAT_TYPE_ALBUM="[LP]"
|
||||
# EP
|
||||
FORMAT_TYPE_EP="[EP]"
|
||||
# Single
|
||||
FORMAT_TYPE_SINGLE="[single]"
|
||||
# Broadcast
|
||||
FORMAT_TYPE_BROADCAST="[broadcast]"
|
||||
# Other
|
||||
FORMAT_TYPE_OTHER="[other]"
|
||||
# Flag to indicate that the given release group has associated secondary types.
|
||||
FORMAT_TYPE_HAS_SECONDARY="%s xx"
|
||||
# Style to represent secondary types (takes one %s placeholder)
|
||||
FORMAT_TYPE_SECONDARY="(%s)"
|
||||
# Secondary types
|
||||
FORMAT_TYPE_SECONDARY_COMPILATION="compilation"
|
||||
FORMAT_TYPE_SECONDARY_SOUNDTRACK="OST"
|
||||
FORMAT_TYPE_SECONDARY_SPOKENWORD="spokenword"
|
||||
FORMAT_TYPE_SECONDARY_INTERVIEW="interview"
|
||||
FORMAT_TYPE_SECONDARY_AUDIOBOOK="book"
|
||||
FORMAT_TYPE_SECONDARY_AUDIODRAMA="drama"
|
||||
FORMAT_TYPE_SECONDARY_LIVE="live"
|
||||
FORMAT_TYPE_SECONDARY_REMIX="remix"
|
||||
FORMAT_TYPE_SECONDARY_DJMIX="DJ"
|
||||
FORMAT_TYPE_SECONDARY_MIXTAPE="mixtape"
|
||||
FORMAT_TYPE_SECONDARY_DEMO="demo"
|
||||
FORMAT_TYPE_SECONDARY_FIELDREC="field rec"
|
||||
|
||||
# Artist Preview
|
||||
# ==============
|
||||
# Main preview format. Takes two %s placeholder. The first is for the artist
|
||||
# biography. The second for the life span.
|
||||
APV_FORMAT="\n\n%s\n\n%s"
|
||||
# Specification of a date
|
||||
APV_DATE="%s"
|
||||
# Specification of a place
|
||||
APV_PLACE="%s"
|
||||
# Specification of a date and a place (in that order)
|
||||
APV_DATEPLACE="%s in %s"
|
||||
# String to represent when/where a person is born
|
||||
APV_BORN="Born: %s"
|
||||
# String to represent when/where a person died
|
||||
APV_DIED="Died: %s"
|
||||
|
||||
# Release view
|
||||
# ============
|
||||
# Format of a string that represents a release.
|
||||
RV_FORMAT="<<status>>\t<<tracks>> tracks\t<<media>>\t<<year>>\t<<country>>\t<<label>>"
|
||||
# Additional string to display the release title and artist name
|
||||
RV_TITLE_ARTIST="<<artist>> - <<title>>"
|
||||
# Additional string to display the release title
|
||||
RV_TITLE="<<title>>"
|
||||
# Additional string to display the artist
|
||||
RV_ARTIST="<<artist>>"
|
||||
|
||||
# Release Status
|
||||
# ==============
|
||||
FORMAT_STATUS_OFFICIAL="official"
|
||||
FORMAT_STATUS_PROMO="promo"
|
||||
FORMAT_STATUS_BOOTLEG="bootleg"
|
||||
FORMAT_STATUS_PSEUDO="psuedo"
|
||||
FORMAT_STATUS_WITHDRAWN="withdrawn"
|
||||
FORMAT_STATUS_EXPUNGED="expunged"
|
||||
FORMAT_STATUS_CANCELLED="cancelled"
|
||||
|
||||
# Recording view
|
||||
# ==============
|
||||
# Format of a track in a release
|
||||
REC_FORMAT="<<med>>\t<<nr>>\t<<title>>\t<<artist>>\t<<duration>>"
|
||||
# Format of a track in the playlist
|
||||
REC_FORMAT_NO_NUMBER="<<title>>\t<<artist>>\t<<duration>>"
|
||||
90
share/theme/lite.sh
Normal file
90
share/theme/lite.sh
Normal file
@@ -0,0 +1,90 @@
|
||||
# Colors (internal only)
|
||||
ESC=$(printf '\033')
|
||||
CARTIST="${ESC}[38;5;209m"
|
||||
CYEAR="${ESC}[38;5;179m"
|
||||
RED="${ESC}[31m"
|
||||
GREEN="${ESC}[32m"
|
||||
YELLOW="${ESC}[33m"
|
||||
OFF="${ESC}[m"
|
||||
|
||||
# Pointers
|
||||
# ========
|
||||
# Sign that indicates the existence of audio files
|
||||
FORMAT_LOCAL="${YELLOW}|>${OFF}"
|
||||
|
||||
# Input prompt
|
||||
# =============
|
||||
# General search prompt (for now only used when choosing one-of-many artist)
|
||||
SEARCH_PROMPT="search> "
|
||||
|
||||
# General workings of format strings
|
||||
#
|
||||
# A format string (_FMT) contains placeholders, e.g., <<name>>. These
|
||||
# placeholders are filled with the relevant information. A placeholder may
|
||||
# occur zero times, once, or more than once. There are two types of
|
||||
# placeholders: strings and items. A placeholder of type string comes with a
|
||||
# variable containing a `printf` expression (_FMT_placeholder). This `printf`
|
||||
# expression may be used to additionally modify the string passed. If the
|
||||
# string passed is empty, then each corresponding placeholder is replaced
|
||||
# with the empty string, i.e., the `printf` expression is bypassed. A
|
||||
# placeholder of the alternative type (item) comes with a series of variables
|
||||
# that encode constants to be used (_FMT_placeholder_XYZ).
|
||||
#
|
||||
# The items in the format string may be separated with "\t". This will induce
|
||||
# a proper representation (using `column`). By default, all fields but the
|
||||
# first are left aligned, and the first field is right aligned. This can be
|
||||
# changed by setting the appropriate FMT_RIGHTALIGN variable. If that
|
||||
# variable is empty, then the first field is right aligned. This means that
|
||||
# at least one field must be right aligned.
|
||||
#
|
||||
# Artist view
|
||||
# ===========
|
||||
# <<flag>> item Indication for locally available audio files
|
||||
# <<type>> item Indicator for single-person artist or group
|
||||
# <<name>> string Artist name
|
||||
# <<disambiguation>> string Disambiguation string
|
||||
#
|
||||
AV_FMT_TYPE_PERSON="${RED}P${OFF}"
|
||||
AV_FMT_TYPE_GROUP="${RED}G${OFF}"
|
||||
AV_FMT_NAME="${GREEN}%s${OFF}"
|
||||
AV_FMT_DISAMBIGUATION="(%s)"
|
||||
|
||||
# Release-group view
|
||||
# ==================
|
||||
# <<flag>> item Indication for locally available audio files
|
||||
# <<type>> item Indicates the type
|
||||
# <<hassecondary>> item Indicates if there is some secondary type or none
|
||||
# <<secondary>> string List of secondary types
|
||||
# <<title>> string Title of album
|
||||
# <<artist>> string Artist of album
|
||||
# <<year>> string Year of initial release
|
||||
# Note: The above <<secondary>> is of a joint item-string type. See code for
|
||||
# details.
|
||||
RGV_FMT="<<flag>>\t<<year>>\t<<title>>\t<<artist>>"
|
||||
RGV_FMT_ARTIST="${CARTIST}%s${OFF}"
|
||||
RGV_FMT_YEAR="${CYEAR}%s${OFF}"
|
||||
|
||||
# Release view
|
||||
# ============
|
||||
# <<flag>> item Indication for locally available audio files
|
||||
# <<status>> item Release status
|
||||
# <<tracks>> string Total number of track
|
||||
# <<media>> string Media description
|
||||
# <<year>> string Release year
|
||||
# <<country>> string Release country
|
||||
# <<label>> string Release label
|
||||
# <<title>> string Optional titel string
|
||||
# <<artist>> string Optional artist string
|
||||
RV_FMT="<<flag>>\t<<year>>\t<<tracks>>\t<<media>>\t<<country>>\t<<label>>"
|
||||
|
||||
# Headers
|
||||
# =======
|
||||
# These header strings are based on the respective view and its fields
|
||||
# defined above.
|
||||
#
|
||||
# Header that displays artist's name (based on artist view)
|
||||
HEADER_ARTIST_FMT="\t<<name>>"
|
||||
# Header that displays the release-group (based on release-group view)
|
||||
HEADER_RG_FMT="\t<<artist>> / <<title>>"
|
||||
# Header that displays the release (based on release view)
|
||||
HEADER_R_FMT="\t<<artist>> / <<title>> / <<tracks>> tx <<media>>"
|
||||
186
share/theme/plain.sh
Normal file
186
share/theme/plain.sh
Normal file
@@ -0,0 +1,186 @@
|
||||
# Pointers
|
||||
# ========
|
||||
# Sign that indicates the existence of audio files
|
||||
FORMAT_LOCAL="|>"
|
||||
|
||||
# Input prompt
|
||||
# =============
|
||||
# General search prompt (for now only used when choosing one-of-many artist)
|
||||
SEARCH_PROMPT="search> "
|
||||
|
||||
# General workings of format strings
|
||||
#
|
||||
# A format string (_FMT) contains placeholders, e.g., <<name>>. These
|
||||
# placeholders are filled with the relevant information. A placeholder may
|
||||
# occur zero times, once, or more than once. There are two types of
|
||||
# placeholders: strings and items. A placeholder of type string comes with a
|
||||
# variable containing a `printf` expression (_FMT_placeholder). This `printf`
|
||||
# expression may be used to additionally modify the string passed. If the
|
||||
# string passed is empty, then each corresponding placeholder is replaced
|
||||
# with the empty string, i.e., the `printf` expression is bypassed. A
|
||||
# placeholder of the alternative type (item) comes with a series of variables
|
||||
# that encode constants to be used (_FMT_placeholder_XYZ).
|
||||
#
|
||||
# The items in the format string may be separated with "\t". This will induce
|
||||
# a proper representation (using `column`). By default, all fields but the
|
||||
# first are left aligned, and the first field is right aligned. This can be
|
||||
# changed by setting the appropriate FMT_RIGHTALIGN variable. If that
|
||||
# variable is empty, then the first field is right aligned. This means that
|
||||
# at least one field must be right aligned.
|
||||
#
|
||||
# Artist view
|
||||
# ===========
|
||||
# <<flag>> item Indication for locally available audio files
|
||||
# <<type>> item Indicator for single-person artist or group
|
||||
# <<name>> string Artist name
|
||||
# <<disambiguation>> string Disambiguation string
|
||||
#
|
||||
AV_FMT_TYPE_PERSON="P"
|
||||
AV_FMT_TYPE_GROUP="G"
|
||||
AV_FMT_NAME="%s"
|
||||
AV_FMT_DISAMBIGUATION="(%s)"
|
||||
|
||||
# Release-group view
|
||||
# ==================
|
||||
# <<flag>> item Indication for locally available audio files
|
||||
# <<type>> item Indicates the type
|
||||
# <<hassecondary>> item Indicates if there is some secondary type or none
|
||||
# <<secondary>> string List of secondary types
|
||||
# <<title>> string Title of album
|
||||
# <<artist>> string Artist of album
|
||||
# <<year>> string Year of initial release
|
||||
# Note: The above <<secondary>> is of a joint item-string type. See code for
|
||||
# details.
|
||||
RGV_FMT_TYPE_SINGLE="single"
|
||||
RGV_FMT_TYPE_ALBUM="LP"
|
||||
RGV_FMT_TYPE_EP="EP"
|
||||
RGV_FMT_TYPE_BROADCAST="broadcast"
|
||||
RGV_FMT_TYPE_OTHER="other"
|
||||
RGV_FMT_HASSECONDARY_YES="xx"
|
||||
RGV_FMT_SECONDARY="[xx: %s]"
|
||||
RGV_FMT_SECONDARY_SOUNDTRACK="soundtrack"
|
||||
RGV_FMT_SECONDARY_SPOKENWORD="spokenword"
|
||||
RGV_FMT_SECONDARY_INTERVIEW="interview"
|
||||
RGV_FMT_SECONDARY_AUDIOBOOK="audiobook"
|
||||
RGV_FMT_SECONDARY_AUDIODRAMA="audio drama"
|
||||
RGV_FMT_SECONDARY_LIVE="live"
|
||||
RGV_FMT_SECONDARY_REMIX="remix"
|
||||
RGV_FMT_SECONDARY_DJMIX="DJ-mix"
|
||||
RGV_FMT_SECONDARY_MIXTAPE="mixtape"
|
||||
RGV_FMT_SECONDARY_DEMO="demo"
|
||||
RGV_FMT_SECONDARY_FIELDREC="field recording"
|
||||
RGV_FMT_TITLE="%s"
|
||||
RGV_FMT_ARTIST=" - %s"
|
||||
RGV_FMT_YEAR="(%s)"
|
||||
|
||||
# Release view
|
||||
# ============
|
||||
# <<flag>> item Indication for locally available audio files
|
||||
# <<status>> item Release status
|
||||
# <<tracks>> string Total number of track
|
||||
# <<media>> string Media description
|
||||
# <<year>> string Release year
|
||||
# <<country>> string Release country
|
||||
# <<label>> string Release label
|
||||
# <<title>> string Optional titel string
|
||||
# <<artist>> string Optional artist string
|
||||
RV_FMT="${RV_FMT:-"<<flag>>\t<<status>> >> \t<<tracks>>\t<<media>>\t<<year>>\t<<country>>\t<<label>>\t<<title>> <<artist>>"}"
|
||||
RV_FMT_STATUS_OFFICIAL="official"
|
||||
RV_FMT_STATUS_PROMO="promo"
|
||||
RV_FMT_STATUS_BOOTLEG="bootleg"
|
||||
RV_FMT_STATUS_PSEUDO="pseudo"
|
||||
RV_FMT_STATUS_WITHDRAWN="withdrawn"
|
||||
RV_FMT_STATUS_EXPUNGED="expunged"
|
||||
RV_FMT_STATUS_CANCELLED="cancelled"
|
||||
RV_FMT_TRACKS="%s tracks"
|
||||
RV_FMT_MEDIA="%s"
|
||||
RV_FMT_YEAR="%s"
|
||||
RV_FMT_COUNTRY="%s"
|
||||
RV_FMT_LABEL="%s"
|
||||
RV_FMT_TITLE="as %s"
|
||||
RV_FMT_ARTIST="by %s"
|
||||
|
||||
# Recording view
|
||||
# ==============
|
||||
# <<flag>> item Indication for locally available audio files
|
||||
# <<media>> string Media identifier
|
||||
# <<nr>> string Track number within media
|
||||
# <<title>> string Track title
|
||||
# <<artist>> string Track artist
|
||||
# <<duration>> string Track duration
|
||||
REC_FMT_MEDIA="%s"
|
||||
REC_FMT_NR="%s"
|
||||
REC_FMT_TITLE="%s"
|
||||
REC_FMT_ARTIST="%s"
|
||||
REC_FMT_DURATION="%s"
|
||||
|
||||
# Recording view (playlist)
|
||||
# =========================
|
||||
# <<playing>> item Mark for currently playing track
|
||||
# <<title>> string Track title
|
||||
# <<artist>> string Track artist
|
||||
# <<duration>> string Track duration
|
||||
PLYLST_FMT_PLAYING_YES="-->"
|
||||
PLYLST_FMT_TITLE="%s"
|
||||
PLYLST_FMT_ARTIST="%s"
|
||||
PLYLST_FMT_DURATION="%s"
|
||||
|
||||
# Headers
|
||||
# =======
|
||||
# These header strings are based on the respective view and its fields
|
||||
# defined above.
|
||||
#
|
||||
# Header that displays artist's name (based on artist view)
|
||||
HEADER_ARTIST_FMT=":::\t<<name>> >"
|
||||
|
||||
# Header that displays the release-group (based on release-group view)
|
||||
HEADER_RG_FMT=":::\t<<artist>> >> <<title>> >"
|
||||
HEADER_RG_FMT_ARTIST="%s"
|
||||
|
||||
# Header that displays the release (based on release view)
|
||||
#HEADER_RELEASE="${HEADER_RELEASE:-" ${CARTIST}%s$OFF 》${CTITLE}%s$OFF 〉%s"}"
|
||||
#HEADER_RELEASE_FORMAT="${HEADER_RELEASE_FORMAT:-"${CRELINFO}<<tracks>> tx <<media>> $OFF|$CRELINFO <<label>> <<country>> <<year>>$OFF"}"
|
||||
HEADER_R_FMT=":::\t<<artist>> >> <<title>> > <<tracks>> tx <<media>> | <<label>> <<country>> <<year>>"
|
||||
HEADER_R_FMT_TRACKS="%s"
|
||||
HEADER_R_FMT_MEDIA="%s"
|
||||
HEADER_R_FMT_YEAR="%s"
|
||||
HEADER_R_FMT_COUNTRY="%s"
|
||||
HEADER_R_FMT_LABEL="%s"
|
||||
HEADER_R_FMT_TITLE="%s"
|
||||
HEADER_R_FMT_ARTIST="%s"
|
||||
|
||||
# Artist Preview
|
||||
# ==============
|
||||
# Lines that contain the pattern defined in PREVIEW_NO_WRAP (see
|
||||
# `src/sh/preview.sh`) will not be wrapped.
|
||||
#
|
||||
# We distinguish between single-person and group artists.
|
||||
#
|
||||
# <<name>> | string | Artist name
|
||||
# <<sortname>> | string | Artist sort name
|
||||
# <<bio>> | string | Artist biography
|
||||
# <<disambiguation>> | string | Artist disambiguation string
|
||||
# <<alias>> | higher-order placeholder | Placeholder for aliases
|
||||
# <<start> | higher-order placeholder | Placeholder for start string
|
||||
# <<end>> | higher-order placeholder | Placeholder for end string
|
||||
# <<url>> | higher-order placeholder | Placeholder for links
|
||||
PREVIEW_ARTIST_PERSON_BIO="%s\n\n"
|
||||
PREVIEW_ARTIST_PERSON_ALIAS="Also known as %s\n\n"
|
||||
PREVIEW_ARTIST_PERSON_START="Born: %s\n"
|
||||
PREVIEW_ARTIST_PERSON_END="Died: %s\n"
|
||||
PREVIEW_ARTIST_PERSON_URL="\nLinks:\n%s\n"
|
||||
PREVIEW_ARTIST_PERSON_URL_URLINDEX="%3d"
|
||||
PREVIEW_ARTIST_PERSON_URL_URLNAME="%s"
|
||||
PREVIEW_ARTIST_PERSON_URL_URLLINK="%s"
|
||||
|
||||
PREVIEW_ARTIST_GROUP_START="Founded: %s\n"
|
||||
PREVIEW_ARTIST_GROUP_END="Dissolved: %s\n"
|
||||
|
||||
# Keybinding themes
|
||||
# =================
|
||||
# Format keybinding group
|
||||
KBF_GROUP="%s"
|
||||
# Format key
|
||||
KBF_KEY="%s"
|
||||
# Format description
|
||||
KBF_DESC="%s"
|
||||
@@ -1,118 +0,0 @@
|
||||
# Simple theme without emojis
|
||||
|
||||
# Colors (internal only)
|
||||
ESC=$(printf '\033')
|
||||
RED="${ESC}[31m"
|
||||
GREEN="${ESC}[32m"
|
||||
YELLOW="${ESC}[33m"
|
||||
BLUE="${ESC}[34m"
|
||||
PURPLE="${ESC}[35m"
|
||||
CYAN="${ESC}[36m"
|
||||
WHITE="${ESC}[37m"
|
||||
OFF="${ESC}[m"
|
||||
|
||||
# Pointers
|
||||
# ========
|
||||
# Sign that indicates the existence of audio files
|
||||
FORMAT_LOCAL="${BLUE}|>$OFF"
|
||||
# Pointer to the track currently playing (playlist)
|
||||
FORMAT_CURRENT="${WHITE}-->$OFF"
|
||||
|
||||
# Input prompt
|
||||
# =============
|
||||
# Search prompt
|
||||
SEARCH_PROMPT="search: "
|
||||
|
||||
# Headers
|
||||
# =======
|
||||
# Header that displays artist's name
|
||||
HEADER_ARTIST="artist: %s"
|
||||
# Header that displays the release-group name after artist's
|
||||
HEADER_ARTIST_RELEASEGROUP="artist: %s / album: %s"
|
||||
# Header that in addition to `HEADER_ARTIST_RELEASEGROUP` also shows some
|
||||
# release information
|
||||
HEADER_RELEASE="artist: %s / album: %s (%s)"
|
||||
# The release information is formatted as follows (placeholders implicit):
|
||||
HEADER_RELEASE_FORMAT="<<label>> <<year>>"
|
||||
|
||||
# Artist view
|
||||
# ===========
|
||||
# Artist string for persons
|
||||
AV_PERSON="(P) ${CYAN}<<name>>$OFF"
|
||||
# Artist string for groups
|
||||
AV_GROUP="(G) ${CYAN}<<name>>$OFF"
|
||||
# Artist disambiguation string
|
||||
AV_DISAMBIGUATION="// <<disambiguation>>"
|
||||
|
||||
# Release-group view
|
||||
# ==================
|
||||
# Default release group string
|
||||
RGV_RELEASE="${PURPLE}<<title>>$OFF"
|
||||
# Release group string if the artist name differs from the current artist
|
||||
RGV_RELEASE_W_ARTIST="${PURPLE}<<title>>$OFF by ${CYAN}<<artist>>$OFF"
|
||||
# Year of the release group
|
||||
RGV_YEAR="[<<year>>]"
|
||||
|
||||
# Release-group types
|
||||
# ===================
|
||||
# Album
|
||||
FORMAT_TYPE_ALBUM="${YELLOW}LP$OFF"
|
||||
# EP
|
||||
FORMAT_TYPE_EP="${YELLOW}EP$OFF"
|
||||
# Single
|
||||
FORMAT_TYPE_SINGLE="${YELLOW}Single$OFF"
|
||||
# Broadcast
|
||||
FORMAT_TYPE_BROADCAST="${YELLOW}Broadcast$OFF"
|
||||
# Other
|
||||
FORMAT_TYPE_OTHER=""
|
||||
# Flag to indicate that the given release group has associated secondary types.
|
||||
FORMAT_TYPE_HAS_SECONDARY="%s ${RED}xx${OFF}"
|
||||
# Style to represent secondary types (takes one %s placeholder)
|
||||
FORMAT_TYPE_SECONDARY="${RED}(${OFF}%s${RED})${OFF}"
|
||||
# Secondary types
|
||||
FORMAT_TYPE_SECONDARY_COMPILATION="${YELLOW}compilation$OFF"
|
||||
FORMAT_TYPE_SECONDARY_SOUNDTRACK="${YELLOW}soundtrack$OFF"
|
||||
FORMAT_TYPE_SECONDARY_SPOKENWORD="${YELLOW}spokenword$OFF"
|
||||
FORMAT_TYPE_SECONDARY_INTERVIEW="${YELLOW}interview$OFF"
|
||||
FORMAT_TYPE_SECONDARY_AUDIOBOOK="${YELLOW}audiobook$OFF"
|
||||
FORMAT_TYPE_SECONDARY_AUDIODRAMA="${YELLOW}audio drama$OFF"
|
||||
FORMAT_TYPE_SECONDARY_LIVE="${YELLOW}live$OFF"
|
||||
FORMAT_TYPE_SECONDARY_REMIX="${YELLOW}remix$OFF"
|
||||
FORMAT_TYPE_SECONDARY_DJMIX="${YELLOW}DJ-mix$OFF"
|
||||
FORMAT_TYPE_SECONDARY_MIXTAPE="${YELLOW}mixtape$OFF"
|
||||
FORMAT_TYPE_SECONDARY_DEMO="${YELLOW}demo$OFF"
|
||||
FORMAT_TYPE_SECONDARY_FIELDREC="${YELLOW}field recording$OFF"
|
||||
|
||||
# Artist Preview
|
||||
# ==============
|
||||
# Main preview format. Takes two %s placeholder. The first is for the artist
|
||||
# biography. The second for the life span.
|
||||
APV_FORMAT="\n\nBio:\n%s\n\n${WHITE}%s${OFF}"
|
||||
# Specification of a date
|
||||
APV_DATE="%s"
|
||||
# Specification of a place
|
||||
APV_PLACE="%s"
|
||||
# Specification of a date and a place (in that order)
|
||||
APV_DATEPLACE="%s in %s"
|
||||
# String to represent when/where a person is born
|
||||
APV_BORN="Born: %s"
|
||||
# String to represent when/where a person died
|
||||
APV_DIED="Died: %s"
|
||||
|
||||
# Release view
|
||||
# ============
|
||||
# Format of a string that represents a release.
|
||||
RV_FORMAT="<<media>> (<<tracks>>, yr: <<year>>)\t<<label>>"
|
||||
# Additional string to display the release title and artist name
|
||||
RV_TITLE_ARTIST="${CYAN}<<artist>>$OFF - ${PURPLE}<<title>>$OFF"
|
||||
# Additional string to display the release title
|
||||
RV_TITLE="${PURPLE}<<title>>$OFF"
|
||||
# Additional string to display the artist
|
||||
RV_ARTIST="${CYAN}<<artist>>$OFF"
|
||||
|
||||
# Recording view
|
||||
# ==============
|
||||
# Format of a track in a release
|
||||
REC_FORMAT="<<med>>\t${RED}<<nr>>$OFF\t${GREEN}<<title>>$OFF\t${CYAN}<<artist>>$OFF\t${WHITE}<<duration>>$OFF"
|
||||
# Format of a track in the playlist
|
||||
REC_FORMAT_NO_NUMBER="${GREEN}<<title>>$OFF\t${CYAN}<<artist>>$OFF\t${WHITE}<<duration>>$OFF"
|
||||
@@ -85,6 +85,7 @@ BEGIN {
|
||||
gsub("<<urllink>>", urllink, urlentry)
|
||||
url = i == 1 ? urlentry : sprintf(join_url, url, urlentry)
|
||||
}
|
||||
url = sprintf(fmturl, escape(url))
|
||||
}
|
||||
# Combine all and print
|
||||
gsub("<<name>>", name, format)
|
||||
|
||||
74
src/main.sh
74
src/main.sh
@@ -213,7 +213,7 @@ case "${1:-}" in
|
||||
cnt=$(echo "$j" | $JQ 'length')
|
||||
[ "$cnt" -eq 1 ] && aid="$(echo "$j" | $JQ '.[0].artist.id')"
|
||||
fi
|
||||
[ "${aid:-}" ] && $0 --action-draw "$mode" "$VIEW_ARTIST" "$aid" || printf "print(%s)+print(%s)+print(%s)+print(%s)+accept" "$VIEW_SELECT_ARTIST" "$j" "$view" "$mbid_cur"
|
||||
[ "${aid:-}" ] && $0 --action-draw "$mode" "$VIEW_ARTIST" "0" "$aid" || printf "print(%s)+print(%s)+print(%s)+print(%s)+accept" "$VIEW_SELECT_ARTIST" "$j" "$view" "$mbid_cur"
|
||||
exit 0
|
||||
;;
|
||||
"--action-draw")
|
||||
@@ -221,8 +221,8 @@ case "${1:-}" in
|
||||
#
|
||||
# @argument $2: mode (default `normal`)
|
||||
# @argument $3: view (default list artists)
|
||||
# @argument $4: MusicBrainz ID (optional)
|
||||
# @argument $5: level (optional)
|
||||
# @argument $4: level
|
||||
# @argument $5: MusicBrainz ID (optional)
|
||||
#
|
||||
# The argument `level` specifies the view relative to `view`: If `level` is
|
||||
# set to +1, then the specified MusicBrainz ID is an ID of an object one level
|
||||
@@ -256,8 +256,8 @@ case "${1:-}" in
|
||||
# - VIEW_RELEASE: Divert view to VIEW_LIST_RELEASEGROUP.
|
||||
mode="${2:-"$MODE_NORMAL"}"
|
||||
view="${3:-"$VIEW_LIST_ARTISTS"}"
|
||||
mbid="${4:-}"
|
||||
level="${5:-}"
|
||||
level="${4:-}"
|
||||
mbid="${5:-}"
|
||||
# Change state, if we are being diverted.
|
||||
case "$level" in
|
||||
"-1")
|
||||
@@ -291,6 +291,7 @@ case "${1:-}" in
|
||||
printf "show-input+change-query(%s)" "$q"
|
||||
# Store current state
|
||||
printf "+change-list-label(%s)" "$view"
|
||||
printf "+change-border-label(%s)" "$mbid"
|
||||
# Set header
|
||||
fzf_command_set_header "$view" "$mbid"
|
||||
# Set preview window
|
||||
@@ -508,6 +509,9 @@ local_files_present || load_missing_files
|
||||
precompute_views
|
||||
|
||||
# Generate filenames for temporary files
|
||||
# We keep these files in a temporary directory and not in the state directory
|
||||
# because this allows for straight-forward capability to run multiple instances
|
||||
# simultaneously.
|
||||
tmpdir=$(mktemp -d)
|
||||
LOCKFILE="$tmpdir/lock"
|
||||
RESULTS="$tmpdir/results"
|
||||
@@ -538,9 +542,11 @@ IN_VIEW_PATTERN="[ \$FZF_LIST_LABEL = %s ]"
|
||||
IN_LIST_ARTISTS_VIEW="$(printf "$IN_VIEW_PATTERN" "$VIEW_LIST_ARTISTS")"
|
||||
FZF_CURRENT_MODE="\$FZF_INPUT_STATE"
|
||||
FZF_CURRENT_VIEW="\$FZF_LIST_LABEL"
|
||||
FZF_CURRENT_MBID="\$FZF_BORDER_LABEL"
|
||||
FZF_RELOAD_PLAYLIST="reload-sync($0 --lines $VIEW_PLAYLIST)"
|
||||
FZF_POS_PLAYLIST="transform:$0 --action-playlistcursor"
|
||||
PUT_FZF_KEY_LOGIC="case \$FZF_KEY in space) echo \"put( )\";; left) echo backward-char;; right) echo forward-char;; backspace|bspace|bs) echo backward-delete-char;; delete|del) echo delete-char;; *) echo \"put(\$FZF_KEY)\";; esac"
|
||||
FZF_DEFAULT_PREVIEW_WINDOW="right,$PREVIEW_WINDOW_PERCENTAGE%,border-line,nowrap,<50(hidden)"
|
||||
while true; do
|
||||
case "$VIEW" in
|
||||
"$VIEW_SELECT_ARTIST")
|
||||
@@ -561,13 +567,16 @@ while true; do
|
||||
--bind="$KEYS_KEYBINDINGS:preview:$0 --show-keybindings $VIEW_SELECT_ARTIST" \
|
||||
--bind="$KEYS_SCROLL_PREVIEW_DOWN:preview-down" \
|
||||
--bind="$KEYS_SCROLL_PREVIEW_UP:preview-up" \
|
||||
--bind="$KEYS_PREVIEW_TOGGLE_WRAP:toggle-preview-wrap" \
|
||||
--bind="$KEYS_PREVIEW_TOGGLE_SIZE:change-preview-window(right,90%,border-line,nowrap|$FZF_DEFAULT_PREVIEW_WINDOW)" \
|
||||
--bind="$KEYS_PREVIEW_OPEN:show-preview" \
|
||||
--bind="$KEYS_PREVIEW_CLOSE:hide-preview" \
|
||||
--bind="$KEYS_FILTER_LOCAL:change-query($QUERY_LOCAL )" \
|
||||
-0 -1 \
|
||||
--border="bold" \
|
||||
--border-label="Select artist" \
|
||||
--preview-window="right,25%,border-left,wrap,<30(hidden)" \
|
||||
--preview-window="$FZF_DEFAULT_PREVIEW_WINDOW" \
|
||||
--wrap-sign="" \
|
||||
--preview="$0 --preview $VIEW_SELECT_ARTIST {4}" \
|
||||
--delimiter="\t" \
|
||||
--prompt="$SEARCH_PROMPT" \
|
||||
@@ -659,7 +668,7 @@ while true; do
|
||||
--info="inline-right" \
|
||||
--header-first \
|
||||
--header-border="bottom" \
|
||||
--bind="start:transform:$0 --action-draw $MODE $VIEW $MBID" \
|
||||
--bind="start:transform:$0 --action-draw $MODE $VIEW "0" $MBID" \
|
||||
--bind="$KEYS_I_NORMAL:transform:$IN_NORMAL_MODE || echo hide-input" \
|
||||
--bind="$KEYS_N_INSERT:transform:$IN_NORMAL_MODE && echo show-input || $PUT_FZF_KEY_LOGIC" \
|
||||
--bind="$KEYS_DOWN:down" \
|
||||
@@ -670,26 +679,26 @@ while true; do
|
||||
--bind="$KEYS_N_UP:transform:$IN_NORMAL_MODE && echo up || $PUT_FZF_KEY_LOGIC" \
|
||||
--bind="$KEYS_N_BOT:transform:$IN_NORMAL_MODE && echo last || $PUT_FZF_KEY_LOGIC" \
|
||||
--bind="$KEYS_N_TOP:transform:$IN_NORMAL_MODE && echo first || $PUT_FZF_KEY_LOGIC" \
|
||||
--bind="$KEYS_IN:transform:[ {4} ] && $0 --action-draw $FZF_CURRENT_MODE $FZF_CURRENT_VIEW {4} \"+1\"" \
|
||||
--bind="$KEYS_OUT:transform:[ {3} ] && $0 --action-draw $FZF_CURRENT_MODE $FZF_CURRENT_VIEW {3} \"-1\"" \
|
||||
--bind="$KEYS_N_IN:transform:$IN_NORMAL_MODE && ([ {4} ] && $0 --action-draw $FZF_CURRENT_MODE $FZF_CURRENT_VIEW {4} \"+1\") || $PUT_FZF_KEY_LOGIC" \
|
||||
--bind="$KEYS_N_OUT:transform:$IN_NORMAL_MODE && ([ {3} ] && $0 --action-draw $FZF_CURRENT_MODE $FZF_CURRENT_VIEW {3} \"-1\") || $PUT_FZF_KEY_LOGIC" \
|
||||
--bind="$KEYS_SELECT_ARTIST:transform:$0 --action-gotoartist $FZF_CURRENT_MODE $FZF_CURRENT_VIEW {3} {4}" \
|
||||
--bind="$KEYS_LIST_ARTISTS:transform:$0 --action-draw \$FZF_INPUT_STATE $VIEW_LIST_ARTISTS" \
|
||||
--bind="$KEYS_LIST_ALBUMS:transform:$0 --action-draw \$FZF_INPUT_STATE $VIEW_LIST_ALBUMS" \
|
||||
--bind="$KEYS_SEARCH_ARTIST:transform:$0 --action-draw $MODE_INSERT $VIEW_SEARCH_ARTIST" \
|
||||
--bind="$KEYS_SEARCH_ALBUM:transform:$0 --action-draw $MODE_INSERT $VIEW_SEARCH_ALBUM" \
|
||||
--bind="$KEYS_IN:transform:[ {4} ] && $0 --action-draw $FZF_CURRENT_MODE $FZF_CURRENT_VIEW \"+1\" {4}" \
|
||||
--bind="$KEYS_OUT:transform:$0 --action-draw $FZF_CURRENT_MODE $FZF_CURRENT_VIEW \"-1\" $FZF_CURRENT_MBID" \
|
||||
--bind="$KEYS_N_IN:transform:$IN_NORMAL_MODE && ([ {4} ] && $0 --action-draw $FZF_CURRENT_MODE $FZF_CURRENT_VIEW \"+1\" {4}) || $PUT_FZF_KEY_LOGIC" \
|
||||
--bind="$KEYS_N_OUT:transform:$IN_NORMAL_MODE && ($0 --action-draw $FZF_CURRENT_MODE $FZF_CURRENT_VIEW \"-1\" $FZF_CURRENT_MBID) || $PUT_FZF_KEY_LOGIC" \
|
||||
--bind="$KEYS_SELECT_ARTIST:transform:$0 --action-gotoartist $FZF_CURRENT_MODE $FZF_CURRENT_VIEW $FZF_CURRENT_MBID {4}" \
|
||||
--bind="$KEYS_LIST_ARTISTS:transform:$0 --action-draw \$FZF_INPUT_STATE $VIEW_LIST_ARTISTS \"0\"" \
|
||||
--bind="$KEYS_LIST_ALBUMS:transform:$0 --action-draw \$FZF_INPUT_STATE $VIEW_LIST_ALBUMS \"0\"" \
|
||||
--bind="$KEYS_SEARCH_ARTIST:transform:$0 --action-draw $MODE_INSERT $VIEW_SEARCH_ARTIST \"0\"" \
|
||||
--bind="$KEYS_SEARCH_ALBUM:transform:$0 --action-draw $MODE_INSERT $VIEW_SEARCH_ALBUM \"0\"" \
|
||||
--bind="$KEYS_SWITCH_ARTIST_ALBUM:transform:case $FZF_CURRENT_VIEW in
|
||||
$VIEW_LIST_ARTISTS) $0 --action-draw $FZF_CURRENT_MODE $VIEW_LIST_ALBUMS ;;
|
||||
$VIEW_LIST_ALBUMS) $0 --action-draw $FZF_CURRENT_MODE $VIEW_LIST_ARTISTS ;;
|
||||
$VIEW_SEARCH_ARTIST) $0 --action-draw $MODE_INSERT $VIEW_SEARCH_ALBUM ;;
|
||||
$VIEW_SEARCH_ALBUM) $0 --action-draw $MODE_INSERT $VIEW_SEARCH_ARTIST ;;
|
||||
$VIEW_LIST_ARTISTS) $0 --action-draw $FZF_CURRENT_MODE $VIEW_LIST_ALBUMS \"0\" ;;
|
||||
$VIEW_LIST_ALBUMS) $0 --action-draw $FZF_CURRENT_MODE $VIEW_LIST_ARTISTS \"0\";;
|
||||
$VIEW_SEARCH_ARTIST) $0 --action-draw $MODE_INSERT $VIEW_SEARCH_ALBUM \"0\" ;;
|
||||
$VIEW_SEARCH_ALBUM) $0 --action-draw $MODE_INSERT $VIEW_SEARCH_ARTIST \"0\" ;;
|
||||
esac" \
|
||||
--bind="$KEYS_SWITCH_LOCAL_REMOTE:transform:case $FZF_CURRENT_VIEW in
|
||||
$VIEW_LIST_ARTISTS) $0 --action-draw $MODE_INSERT $VIEW_SEARCH_ARTIST ;;
|
||||
$VIEW_LIST_ALBUMS) $0 --action-draw $MODE_INSERT $VIEW_SEARCH_ALBUM ;;
|
||||
$VIEW_SEARCH_ARTIST) $0 --action-draw $MODE_NORMAL $VIEW_LIST_ARTISTS ;;
|
||||
$VIEW_SEARCH_ALBUM) $0 --action-draw $MODE_NORMAL $VIEW_LIST_ALBUMS ;;
|
||||
$VIEW_LIST_ARTISTS) $0 --action-draw $MODE_INSERT $VIEW_SEARCH_ARTIST \"0\" ;;
|
||||
$VIEW_LIST_ALBUMS) $0 --action-draw $MODE_INSERT $VIEW_SEARCH_ALBUM \"0\" ;;
|
||||
$VIEW_SEARCH_ARTIST) $0 --action-draw $MODE_NORMAL $VIEW_LIST_ARTISTS \"0\" ;;
|
||||
$VIEW_SEARCH_ALBUM) $0 --action-draw $MODE_NORMAL $VIEW_LIST_ALBUMS \"0\" ;;
|
||||
esac" \
|
||||
--bind="$KEYS_FILTER:transform:$0 --action-filter $FZF_CURRENT_MODE $FZF_CURRENT_VIEW" \
|
||||
--bind="$KEYS_BROWSE:execute-silent:
|
||||
@@ -705,20 +714,23 @@ open \"https://musicbrainz.org/\$t/{r4}\"" \
|
||||
[ {5} ] || exit 0
|
||||
open \"\$(dirname {5})\"" \
|
||||
--bind="$KEYS_N_YANK:transform:$IN_NORMAL_MODE && echo \"execute-silent(printf {4} | $CLIP)\" || $PUT_FZF_KEY_LOGIC" \
|
||||
--bind="$KEYS_YANK_CURRENT:execute-silent:printf {3} | $CLIP" \
|
||||
--bind="$KEYS_SHOW_PLAYLIST:transform:echo \"print($VIEW_PLAYLIST)+print()+print($FZF_CURRENT_VIEW)+print({3})+accept\"" \
|
||||
--bind="$KEYS_YANK_CURRENT:execute-silent:printf $FZF_CURRENT_MBID | $CLIP" \
|
||||
--bind="$KEYS_SHOW_PLAYLIST:transform:echo \"print($VIEW_PLAYLIST)+print()+print($FZF_CURRENT_VIEW)+print($FZF_CURRENT_MBID)+accept\"" \
|
||||
--bind="$KEYS_KEYBINDINGS:preview:$0 --show-keybindings $FZF_CURRENT_VIEW" \
|
||||
--bind="$KEYS_REFRESH:execute-silent($0 --remove-from-cache $FZF_CURRENT_VIEW {3} {4})+transform:$0 --action-draw $FZF_CURRENT_MODE $FZF_CURRENT_VIEW {3}" \
|
||||
--bind="$KEYS_REFRESH:execute-silent($0 --remove-from-cache $FZF_CURRENT_VIEW $FZF_CURRENT_MBID {4})+transform:$0 --action-draw $FZF_CURRENT_MODE $FZF_CURRENT_VIEW \"0\" $FZF_CURRENT_MBID" \
|
||||
--bind="$KEYS_QUIT:print($VIEW_QUIT)+accept" \
|
||||
--bind="$KEYS_N_QUIT:transform:$IN_NORMAL_MODE && ($IN_LIST_ARTISTS_VIEW && echo \"print($VIEW_QUIT)+accept\" || $0 --action-draw $MODE_NORMAL $VIEW_LIST_ARTISTS) || $PUT_FZF_KEY_LOGIC" \
|
||||
--bind="$KEYS_N_QUIT:transform:$IN_NORMAL_MODE && ($IN_LIST_ARTISTS_VIEW && echo \"print($VIEW_QUIT)+accept\" || $0 --action-draw $MODE_NORMAL $VIEW_LIST_ARTISTS \"0\") || $PUT_FZF_KEY_LOGIC" \
|
||||
--bind="$KEYS_SCROLL_PREVIEW_DOWN:preview-down" \
|
||||
--bind="$KEYS_SCROLL_PREVIEW_UP:preview-up" \
|
||||
--bind="$KEYS_PREVIEW_TOGGLE_WRAP:toggle-preview-wrap" \
|
||||
--bind="$KEYS_PREVIEW_TOGGLE_SIZE:change-preview-window(right,90%,border-line,nowrap|$FZF_DEFAULT_PREVIEW_WINDOW)" \
|
||||
--bind="$KEYS_PREVIEW_OPEN:show-preview" \
|
||||
--bind="$KEYS_PREVIEW_CLOSE:hide-preview" \
|
||||
--bind="$KEYS_PLAYBACK:transform:$0 --playback $FZF_CURRENT_VIEW {3} {4} {5}" \
|
||||
--bind="$KEYS_N_PLAYBACK:transform:$IN_NORMAL_MODE && $0 --playback $FZF_CURRENT_VIEW {3} {4} {5} || $PUT_FZF_KEY_LOGIC" \
|
||||
--bind="$KEYS_PLAYBACK:transform:$0 --playback $FZF_CURRENT_VIEW $FZF_CURRENT_MBID {4} {5}" \
|
||||
--bind="$KEYS_N_PLAYBACK:transform:$IN_NORMAL_MODE && $0 --playback $FZF_CURRENT_VIEW $FZF_CURRENT_MBID {4} {5} || $PUT_FZF_KEY_LOGIC" \
|
||||
--bind="change:execute-silent($0 --mbsearch $FZF_CURRENT_VIEW &)+reload:$0 --lines $FZF_CURRENT_VIEW" \
|
||||
--preview-window="right,25%,border-left,wrap,<30(hidden)" \
|
||||
--preview-window="$FZF_DEFAULT_PREVIEW_WINDOW" \
|
||||
--wrap-sign="" \
|
||||
--preview="$0 --preview $FZF_CURRENT_VIEW {4}" \
|
||||
--delimiter="\t" \
|
||||
--with-nth="{1}" || true
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
if [ ! "${CACHE_LOADED:-}" ]; then
|
||||
# Base path for cache
|
||||
CACHEDIR="$HOME/.cache/$APP_NAME"
|
||||
CACHEDIR="${XGD_CACHE_HOME:-"$HOME/.cache"}/$APP_NAME"
|
||||
# Directory names for cache types
|
||||
TYPE_ARTIST="artist"
|
||||
TYPE_RELEASEGROUP="releasegroup"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# the file may be overwritten by specifying the environment variable
|
||||
# `CONFIGFILE`. If a configuration file is specified, then it must also exist.
|
||||
# A configuration file comprises the specification of environment variables
|
||||
# that are` allowed to be set.
|
||||
# that are allowed to be set.
|
||||
#
|
||||
# Currently, the following files hold variables that are configurable:
|
||||
# - `src/sh/filter.sh`: Configuration of filters that can be triggered with
|
||||
@@ -12,7 +12,7 @@
|
||||
# - `src/sh/keys.sh`: Configuration of key bindings to certain actions
|
||||
# - `src/sh/theme.sh`: Configuration of theme
|
||||
# - `src/sh/sort.sh`: List sorting
|
||||
CONFIGFILE_DEFAULT="$HOME/.config/$APP_NAME/config"
|
||||
CONFIGFILE_DEFAULT="${XDG_CONFIG_HOME:-"$HOME/.config"}/$APP_NAME/config"
|
||||
CONFIGFILE="${CONFIGFILE:-"$CONFIGFILE_DEFAULT"}"
|
||||
[ "$CONFIGFILE" != "$CONFIGFILE_DEFAULT" ] && [ ! -f "$CONFIGFILE" ] && err "The configuration file manually specified with the environment variable CONFIGFILE=($CONFIGFILE) does not exist." && exit 1
|
||||
# shellcheck source=/dev/null
|
||||
|
||||
166
src/sh/filter.sh
166
src/sh/filter.sh
@@ -1,87 +1,91 @@
|
||||
# Preset filters for different views. These filters are associated to key
|
||||
# bindings (see `src/sh/keys.sh`), and are configurable through a configuration
|
||||
# file (see `src/sh/config.sh`).
|
||||
if [ ! "${FILTER_LOADED:-}" ]; then
|
||||
# The `QUERY_LOCAL` filter is associated with the keys `KEYS_FILTER_LOCAL`.
|
||||
# It is used to hide all entries that are not available locally (see
|
||||
# `src/sh/query.sh` for details and the relevant methods)
|
||||
QUERY_LOCAL="${QUERY_LOCAL:-"$(printf "'%s'" "$FORMAT_LOCAL" | __clean_filter)"}"
|
||||
|
||||
# The `QUERY_LOCAL` filter is associated with the keys `KEYS_FILTER_LOCAL`. It
|
||||
# is used to hide all entries that are not available locally (see
|
||||
# `src/sh/query.sh` for details and the relevant methods)
|
||||
QUERY_LOCAL="${QUERY_LOCAL:-"$(printf "'%s'" "$FORMAT_LOCAL" | __clean_filter)"}"
|
||||
# The following variables store preset strings derived from the theme (see
|
||||
# `src/sh/theme.sh`), and used in the assignment of the default filters.
|
||||
q_has_seconary="$(printf "%s" "$RGV_FMT_HASSECONDARY_YES" | __clean_filter)"
|
||||
q_album="$(printf "%s" "$RGV_FMT_TYPE_ALBUM" | __clean_filter)"
|
||||
q_ep="$(printf "%s" "$RGV_FMT_TYPE_EP" | __clean_filter)"
|
||||
q_single="$(printf "%s" "$RGV_FMT_TYPE_SINGLE" | __clean_filter)"
|
||||
if printf "$RV_FMT" | grep -q "<<status>>"; then
|
||||
q_official="$(printf "'%s'" "$RV_FMT_STATUS_OFFICIAL" | __clean_filter)"
|
||||
fi
|
||||
export QUERY_LOCAL
|
||||
|
||||
# The following variables store preset strings derived from the theme (see
|
||||
# `src/sh/theme.sh`), and used in the assignment of the default filters.
|
||||
q_has_seconary="$(printf "%s" "$RGV_FMT_HASSECONDARY_YES" | __clean_filter)"
|
||||
q_album="$(printf "%s" "$RGV_FMT_TYPE_ALBUM" | __clean_filter)"
|
||||
q_ep="$(printf "%s" "$RGV_FMT_TYPE_EP" | __clean_filter)"
|
||||
q_single="$(printf "%s" "$RGV_FMT_TYPE_SINGLE" | __clean_filter)"
|
||||
if printf "$RV_FMT" | grep -q "<<status>>"; then
|
||||
q_official="$(printf "'%s'" "$RV_FMT_STATUS_OFFICIAL" | __clean_filter)"
|
||||
# Here starts the list of all filters (grouped per view) that are associated
|
||||
# to the keys `KEYS_FILTER_0` - `KEYS_FILTER_9`. The filters in the
|
||||
# `F_1_<view>` variable are automatically applied whenever the given view is
|
||||
# entered.
|
||||
F_1_VIEW_ARTIST="${F_1_VIEW_ARTIST:-"!'$q_has_seconary'"}"
|
||||
F_2_VIEW_ARTIST="${F_2_VIEW_ARTIST:-"'$q_album'"}"
|
||||
F_3_VIEW_ARTIST="${F_3_VIEW_ARTIST:-"'$q_ep'"}"
|
||||
F_4_VIEW_ARTIST="${F_4_VIEW_ARTIST:-"'$q_single'"}"
|
||||
F_5_VIEW_ARTIST="${F_5_VIEW_ARTIST:-}"
|
||||
F_6_VIEW_ARTIST="${F_6_VIEW_ARTIST:-}"
|
||||
F_7_VIEW_ARTIST="${F_7_VIEW_ARTIST:-}"
|
||||
F_8_VIEW_ARTIST="${F_8_VIEW_ARTIST:-}"
|
||||
F_9_VIEW_ARTIST="${F_9_VIEW_ARTIST:-}"
|
||||
export F_1_VIEW_ARTIST F_2_VIEW_ARTIST F_3_VIEW_ARTIST F_4_VIEW_ARTIST \
|
||||
F_5_VIEW_ARTIST F_6_VIEW_ARTIST F_7_VIEW_ARTIST F_8_VIEW_ARTIST \
|
||||
F_9_VIEW_ARTIST
|
||||
|
||||
F_1_VIEW_RELEASEGROUP="${F_1_VIEW_RELEASEGROUP:-"${q_official:-}"}"
|
||||
F_2_VIEW_RELEASEGROUP="${F_2_VIEW_RELEASEGROUP:-}"
|
||||
F_3_VIEW_RELEASEGROUP="${F_3_VIEW_RELEASEGROUP:-}"
|
||||
F_4_VIEW_RELEASEGROUP="${F_4_VIEW_RELEASEGROUP:-}"
|
||||
F_5_VIEW_RELEASEGROUP="${F_5_VIEW_RELEASEGROUP:-}"
|
||||
F_6_VIEW_RELEASEGROUP="${F_6_VIEW_RELEASEGROUP:-}"
|
||||
F_7_VIEW_RELEASEGROUP="${F_7_VIEW_RELEASEGROUP:-}"
|
||||
F_8_VIEW_RELEASEGROUP="${F_8_VIEW_RELEASEGROUP:-}"
|
||||
F_9_VIEW_RELEASEGROUP="${F_9_VIEW_RELEASEGROUP:-}"
|
||||
export F_1_VIEW_RELEASEGROUP F_2_VIEW_RELEASEGROUP F_3_VIEW_RELEASEGROUP \
|
||||
F_4_VIEW_RELEASEGROUP F_5_VIEW_RELEASEGROUP F_6_VIEW_RELEASEGROUP \
|
||||
F_7_VIEW_RELEASEGROUP F_8_VIEW_RELEASEGROUP F_9_VIEW_RELEASEGROUP
|
||||
|
||||
F_1_VIEW_RELEASE="${F_1_VIEW_RELEASE:-}"
|
||||
F_2_VIEW_RELEASE="${F_2_VIEW_RELEASE:-}"
|
||||
F_3_VIEW_RELEASE="${F_3_VIEW_RELEASE:-}"
|
||||
F_4_VIEW_RELEASE="${F_4_VIEW_RELEASE:-}"
|
||||
F_5_VIEW_RELEASE="${F_5_VIEW_RELEASE:-}"
|
||||
F_6_VIEW_RELEASE="${F_6_VIEW_RELEASE:-}"
|
||||
F_7_VIEW_RELEASE="${F_7_VIEW_RELEASE:-}"
|
||||
F_8_VIEW_RELEASE="${F_8_VIEW_RELEASE:-}"
|
||||
F_9_VIEW_RELEASE="${F_9_VIEW_RELEASE:-}"
|
||||
export F_1_VIEW_RELEASE F_2_VIEW_RELEASE F_3_VIEW_RELEASE F_4_VIEW_RELEASE \
|
||||
F_5_VIEW_RELEASE F_6_VIEW_RELEASE F_7_VIEW_RELEASE F_8_VIEW_RELEASE \
|
||||
F_9_VIEW_RELEASE
|
||||
|
||||
F_1_LIST_ARTISTS="${F_1_LIST_ARTISTS:-}"
|
||||
F_2_LIST_ARTISTS="${F_2_LIST_ARTISTS:-}"
|
||||
F_3_LIST_ARTISTS="${F_3_LIST_ARTISTS:-}"
|
||||
F_4_LIST_ARTISTS="${F_4_LIST_ARTISTS:-}"
|
||||
F_5_LIST_ARTISTS="${F_5_LIST_ARTISTS:-}"
|
||||
F_6_LIST_ARTISTS="${F_6_LIST_ARTISTS:-}"
|
||||
F_7_LIST_ARTISTS="${F_7_LIST_ARTISTS:-}"
|
||||
F_8_LIST_ARTISTS="${F_8_LIST_ARTISTS:-}"
|
||||
F_9_LIST_ARTISTS="${F_9_LIST_ARTISTS:-}"
|
||||
export F_1_LIST_ARTISTS F_2_LIST_ARTISTS F_3_LIST_ARTISTS F_4_LIST_ARTISTS \
|
||||
F_5_LIST_ARTISTS F_6_LIST_ARTISTS F_7_LIST_ARTISTS F_8_LIST_ARTISTS \
|
||||
F_9_LIST_ARTISTS
|
||||
|
||||
F_1_LIST_ALBUMS="${F_1_LIST_ALBUMS:-}"
|
||||
F_2_LIST_ALBUMS="${F_2_LIST_ALBUMS:-}"
|
||||
F_3_LIST_ALBUMS="${F_3_LIST_ALBUMS:-}"
|
||||
F_4_LIST_ALBUMS="${F_4_LIST_ALBUMS:-}"
|
||||
F_5_LIST_ALBUMS="${F_5_LIST_ALBUMS:-}"
|
||||
F_6_LIST_ALBUMS="${F_6_LIST_ALBUMS:-}"
|
||||
F_7_LIST_ALBUMS="${F_7_LIST_ALBUMS:-}"
|
||||
F_8_LIST_ALBUMS="${F_8_LIST_ALBUMS:-}"
|
||||
F_9_LIST_ALBUMS="${F_9_LIST_ALBUMS:-}"
|
||||
export F_1_LIST_ALBUMS F_2_LIST_ALBUMS F_3_LIST_ALBUMS F_4_LIST_ALBUMS \
|
||||
F_5_LIST_ALBUMS F_6_LIST_ALBUMS F_7_LIST_ALBUMS F_8_LIST_ALBUMS \
|
||||
F_9_LIST_ALBUMS
|
||||
|
||||
export FILTER_LOADED=1
|
||||
fi
|
||||
export QUERY_LOCAL
|
||||
|
||||
# Here starts the list of all filters (grouped per view) that are associated to
|
||||
# the keys `KEYS_FILTER_0` - `KEYS_FILTER_9`. The filters in the `F_1_<view>`
|
||||
# variable are automatically applied whenever the given view is entered.
|
||||
F_1_VIEW_ARTIST="${F_1_VIEW_ARTIST:-"!'$q_has_seconary'"}"
|
||||
F_2_VIEW_ARTIST="${F_2_VIEW_ARTIST:-"'$q_album'"}"
|
||||
F_3_VIEW_ARTIST="${F_3_VIEW_ARTIST:-"'$q_ep'"}"
|
||||
F_4_VIEW_ARTIST="${F_4_VIEW_ARTIST:-"'$q_single'"}"
|
||||
F_5_VIEW_ARTIST="${F_5_VIEW_ARTIST:-}"
|
||||
F_6_VIEW_ARTIST="${F_6_VIEW_ARTIST:-}"
|
||||
F_7_VIEW_ARTIST="${F_7_VIEW_ARTIST:-}"
|
||||
F_8_VIEW_ARTIST="${F_8_VIEW_ARTIST:-}"
|
||||
F_9_VIEW_ARTIST="${F_9_VIEW_ARTIST:-}"
|
||||
export F_1_VIEW_ARTIST F_2_VIEW_ARTIST F_3_VIEW_ARTIST F_4_VIEW_ARTIST \
|
||||
F_5_VIEW_ARTIST F_6_VIEW_ARTIST F_7_VIEW_ARTIST F_8_VIEW_ARTIST \
|
||||
F_9_VIEW_ARTIST
|
||||
|
||||
F_1_VIEW_RELEASEGROUP="${F_1_VIEW_RELEASEGROUP:-"${q_official:-}"}"
|
||||
F_2_VIEW_RELEASEGROUP="${F_2_VIEW_RELEASEGROUP:-}"
|
||||
F_3_VIEW_RELEASEGROUP="${F_3_VIEW_RELEASEGROUP:-}"
|
||||
F_4_VIEW_RELEASEGROUP="${F_4_VIEW_RELEASEGROUP:-}"
|
||||
F_5_VIEW_RELEASEGROUP="${F_5_VIEW_RELEASEGROUP:-}"
|
||||
F_6_VIEW_RELEASEGROUP="${F_6_VIEW_RELEASEGROUP:-}"
|
||||
F_7_VIEW_RELEASEGROUP="${F_7_VIEW_RELEASEGROUP:-}"
|
||||
F_8_VIEW_RELEASEGROUP="${F_8_VIEW_RELEASEGROUP:-}"
|
||||
F_9_VIEW_RELEASEGROUP="${F_9_VIEW_RELEASEGROUP:-}"
|
||||
export F_1_VIEW_RELEASEGROUP F_2_VIEW_RELEASEGROUP F_3_VIEW_RELEASEGROUP \
|
||||
F_4_VIEW_RELEASEGROUP F_5_VIEW_RELEASEGROUP F_6_VIEW_RELEASEGROUP \
|
||||
F_7_VIEW_RELEASEGROUP F_8_VIEW_RELEASEGROUP F_9_VIEW_RELEASEGROUP
|
||||
|
||||
F_1_VIEW_RELEASE="${F_1_VIEW_RELEASE:-}"
|
||||
F_2_VIEW_RELEASE="${F_2_VIEW_RELEASE:-}"
|
||||
F_3_VIEW_RELEASE="${F_3_VIEW_RELEASE:-}"
|
||||
F_4_VIEW_RELEASE="${F_4_VIEW_RELEASE:-}"
|
||||
F_5_VIEW_RELEASE="${F_5_VIEW_RELEASE:-}"
|
||||
F_6_VIEW_RELEASE="${F_6_VIEW_RELEASE:-}"
|
||||
F_7_VIEW_RELEASE="${F_7_VIEW_RELEASE:-}"
|
||||
F_8_VIEW_RELEASE="${F_8_VIEW_RELEASE:-}"
|
||||
F_9_VIEW_RELEASE="${F_9_VIEW_RELEASE:-}"
|
||||
export F_1_VIEW_RELEASE F_2_VIEW_RELEASE F_3_VIEW_RELEASE F_4_VIEW_RELEASE \
|
||||
F_5_VIEW_RELEASE F_6_VIEW_RELEASE F_7_VIEW_RELEASE F_8_VIEW_RELEASE \
|
||||
F_9_VIEW_RELEASE
|
||||
|
||||
F_1_LIST_ARTISTS="${F_1_LIST_ARTISTS:-}"
|
||||
F_2_LIST_ARTISTS="${F_2_LIST_ARTISTS:-}"
|
||||
F_3_LIST_ARTISTS="${F_3_LIST_ARTISTS:-}"
|
||||
F_4_LIST_ARTISTS="${F_4_LIST_ARTISTS:-}"
|
||||
F_5_LIST_ARTISTS="${F_5_LIST_ARTISTS:-}"
|
||||
F_6_LIST_ARTISTS="${F_6_LIST_ARTISTS:-}"
|
||||
F_7_LIST_ARTISTS="${F_7_LIST_ARTISTS:-}"
|
||||
F_8_LIST_ARTISTS="${F_8_LIST_ARTISTS:-}"
|
||||
F_9_LIST_ARTISTS="${F_9_LIST_ARTISTS:-}"
|
||||
export F_1_LIST_ARTISTS F_2_LIST_ARTISTS F_3_LIST_ARTISTS F_4_LIST_ARTISTS \
|
||||
F_5_LIST_ARTISTS F_6_LIST_ARTISTS F_7_LIST_ARTISTS F_8_LIST_ARTISTS \
|
||||
F_9_LIST_ARTISTS
|
||||
|
||||
F_1_LIST_ALBUMS="${F_1_LIST_ALBUMS:-}"
|
||||
F_2_LIST_ALBUMS="${F_2_LIST_ALBUMS:-}"
|
||||
F_3_LIST_ALBUMS="${F_3_LIST_ALBUMS:-}"
|
||||
F_4_LIST_ALBUMS="${F_4_LIST_ALBUMS:-}"
|
||||
F_5_LIST_ALBUMS="${F_5_LIST_ALBUMS:-}"
|
||||
F_6_LIST_ALBUMS="${F_6_LIST_ALBUMS:-}"
|
||||
F_7_LIST_ALBUMS="${F_7_LIST_ALBUMS:-}"
|
||||
F_8_LIST_ALBUMS="${F_8_LIST_ALBUMS:-}"
|
||||
F_9_LIST_ALBUMS="${F_9_LIST_ALBUMS:-}"
|
||||
export F_1_LIST_ALBUMS F_2_LIST_ALBUMS F_3_LIST_ALBUMS F_4_LIST_ALBUMS \
|
||||
F_5_LIST_ALBUMS F_6_LIST_ALBUMS F_7_LIST_ALBUMS F_8_LIST_ALBUMS \
|
||||
F_9_LIST_ALBUMS
|
||||
|
||||
@@ -59,6 +59,8 @@
|
||||
# - KEYS_SCROLL_PREVIEW_UP: Scroll preview up
|
||||
# - KEYS_PREVIEW_OPEN: Open preview window
|
||||
# - KEYS_PREVIEW_CLOSE: Close preview window
|
||||
# - KEYS_PREVIEW_TOGGLE_WRAP: Toggle line wrapping in preview window
|
||||
# - KEYS_PREVIEW_TOGGLE_SIZE: Toggle size (small, large) of preview window
|
||||
# - KEYS_REFRESH: Refresh current entry
|
||||
#
|
||||
# Playback:
|
||||
@@ -101,7 +103,7 @@ if [ ! "${KEYS_LOADED:-}" ]; then
|
||||
KEYS_N_DOWN="${KEYS_N_DOWN:-"j"}"
|
||||
KEYS_N_UP="${KEYS_N_UP:-"k"}"
|
||||
KEYS_N_BOT="${KEYS_N_BOT:-"G"}"
|
||||
KEYS_N_TOP="${KEYS_N_TOP:-"1"}"
|
||||
KEYS_N_TOP="${KEYS_N_TOP:-"g"}"
|
||||
export KEYS_DOWN KEYS_UP KEYS_HALFPAGE_DOWN KEYS_HALFPAGE_UP KEYS_N_DOWN \
|
||||
KEYS_N_UP KEYS_N_BOT KEYS_N_TOP
|
||||
|
||||
@@ -151,10 +153,14 @@ if [ ! "${KEYS_LOADED:-}" ]; then
|
||||
KEYS_SCROLL_PREVIEW_UP="${KEYS_SCROLL_PREVIEW_UP:-"page-up"}"
|
||||
KEYS_PREVIEW_OPEN="${KEYS_PREVIEW_OPEN:-"alt-up"}"
|
||||
KEYS_PREVIEW_CLOSE="${KEYS_PREVIEW_CLOSE:-"alt-down"}"
|
||||
KEYS_PREVIEW_TOGGLE_WRAP="${KEYS_PREVIEW_TOGGLE_WRAP:-"alt-w"}"
|
||||
KEYS_PREVIEW_TOGGLE_SIZE="${KEYS_PREVIEW_TOGGLE_SIZE:-"alt-/"}"
|
||||
KEYS_REFRESH="${KEYS_REFRESH:-"ctrl-r"}"
|
||||
export KEYS_BROWSE KEYS_OPEN KEYS_N_YANK KEYS_YANK_CURRENT KEYS_SHOW_PLAYLIST \
|
||||
KEYS_KEYBINDINGS KEYS_QUIT KEYS_N_QUIT KEYS_SCROLL_PREVIEW_DOWN \
|
||||
KEYS_SCROLL_PREVIEW_UP KEYS_PREVIEW_CLOSE KEYS_PREVIEW_OPEN KEYS_REFRESH
|
||||
export KEYS_BROWSE KEYS_OPEN KEYS_N_YANK KEYS_YANK_CURRENT \
|
||||
KEYS_SHOW_PLAYLIST KEYS_KEYBINDINGS KEYS_QUIT KEYS_N_QUIT \
|
||||
KEYS_SCROLL_PREVIEW_DOWN KEYS_SCROLL_PREVIEW_UP KEYS_PREVIEW_CLOSE \
|
||||
KEYS_PREVIEW_OPEN KEYS_PREVIEW_TOGGLE_WRAP KEYS_PREVIEW_TOGGLE_SIZE \
|
||||
KEYS_REFRESH
|
||||
|
||||
# Playback:
|
||||
KEYS_PLAY="${KEYS_PLAY:-"enter"}"
|
||||
@@ -239,6 +245,8 @@ print_keybindings() {
|
||||
"$KEYS_SCROLL_PREVIEW_DOWN" "Scroll preview down" \
|
||||
"$KEYS_SCROLL_PREVIEW_UP" "Scroll preview up" \
|
||||
"$KEYS_KEYBINDINGS" "Show these keybindings" \
|
||||
"$KEYS_PREVIEW_TOGGLE_WRAP" "Toggle preview wrapping" \
|
||||
"$KEYS_PREVIEW_TOGGLE_SIZE" "Toggle preview size" \
|
||||
"$KEYS_PREVIEW_OPEN" "Open preview window" \
|
||||
"$KEYS_PREVIEW_CLOSE" "Close preview window"
|
||||
__keybindinggroup_from_args "Navigation" \
|
||||
@@ -313,6 +321,8 @@ print_keybindings() {
|
||||
"$KEYS_SCROLL_PREVIEW_DOWN" "Scroll preview down" \
|
||||
"$KEYS_SCROLL_PREVIEW_UP" "Scroll preview up" \
|
||||
"$KEYS_KEYBINDINGS" "Show these keybindings" \
|
||||
"$KEYS_PREVIEW_TOGGLE_WRAP" "Toggle preview wrapping" \
|
||||
"$KEYS_PREVIEW_TOGGLE_SIZE" "Toggle preview size" \
|
||||
"$KEYS_PREVIEW_OPEN" "Open preview window" \
|
||||
"$KEYS_PREVIEW_CLOSE" "Close preview window"
|
||||
__keybindinggroup_from_args "Navigation" \
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# will also use the methods here, and modifications thereof, to support
|
||||
# MusicBainz collections.
|
||||
if [ ! "${LOCAL_LOADED:-}" ]; then
|
||||
LOCALDATADIR="$HOME/.cache/$APP_NAME/local"
|
||||
LOCALDATADIR="${XDG_DATA_HOME:-"$HOME/.local/share"}/$APP_NAME"
|
||||
LOCALDATA_ARTISTS="$LOCALDATADIR/artists"
|
||||
LOCALDATA_RELEASEGROUPS="$LOCALDATADIR/releasegroups"
|
||||
LOCALDATA_RELEASES="$LOCALDATADIR/releases"
|
||||
@@ -16,6 +16,15 @@ if [ ! "${LOCAL_LOADED:-}" ]; then
|
||||
LOCALDATA_RELEASES_LIST="$LOCALDATADIR/releases_list"
|
||||
DECORATION_FILENAME=${DECORATION_FILENAME:-"mbid.json"}
|
||||
|
||||
# Create necessary files
|
||||
[ -d "$LOCALDATADIR" ] || mkdir -p "$LOCALDATADIR"
|
||||
[ -f "$LOCALDATA_ARTISTS" ] || touch "$LOCALDATA_ARTISTS"
|
||||
[ -f "$LOCALDATA_RELEASEGROUPS" ] || touch "$LOCALDATA_RELEASEGROUPS"
|
||||
[ -f "$LOCALDATA_RELEASES" ] || touch "$LOCALDATA_RELEASES"
|
||||
[ -f "$LOCALDATA_ARTISTS_LIST" ] || touch "$LOCALDATA_ARTISTS_LIST"
|
||||
[ -f "$LOCALDATA_RELEASEGROUPS_LIST" ] || touch "$LOCALDATA_RELEASEGROUPS_LIST"
|
||||
[ -f "$LOCALDATA_RELEASES_LIST" ] || touch "$LOCALDATA_RELEASES_LIST"
|
||||
|
||||
export LOCALDATADIR LOCALDATA_ARTISTS LOCALDATA_RELEASEGROUPS \
|
||||
LOCALDATA_RELEASES LOCALDATA_ARTISTS_VIEW LOCALDATA_RELEASEGROUPS_VIEW \
|
||||
LOCALDATA_RELEASES_VIEW LOCALDATA_ARTISTS_LIST LOCALDATA_RELEASEGROUPS_LIST \
|
||||
@@ -229,7 +238,7 @@ __precompute_lists() {
|
||||
.disambiguation,
|
||||
.["life-span"].begin,
|
||||
.["life-span"].end
|
||||
] | join("\t")' >"$LOCALDATA_ARTISTS_LIST"
|
||||
] | join("\t")' >"$LOCALDATA_ARTISTS_LIST" &
|
||||
cache_get_file_batch "$TYPE_RELEASEGROUP" <"$LOCALDATA_RELEASEGROUPS" | xargs \
|
||||
$JQ '[
|
||||
.id,
|
||||
@@ -238,7 +247,8 @@ __precompute_lists() {
|
||||
."first-release-date",
|
||||
.title,
|
||||
(."artist-credit" | map(([.name, .joinphrase]|join(""))) | join(""))
|
||||
] | join("\t")' >"$LOCALDATA_RELEASEGROUPS_LIST"
|
||||
] | join("\t")' >"$LOCALDATA_RELEASEGROUPS_LIST" &
|
||||
wait
|
||||
}
|
||||
|
||||
# Precompute views
|
||||
@@ -273,19 +283,24 @@ reloaddb() {
|
||||
__batch_load_missing "$TYPE_RELEASE"
|
||||
tmpreleasefiles=$(mktemp)
|
||||
cache_get_file_batch "$TYPE_RELEASE" <"$tmpreleases" >"$tmpreleasefiles"
|
||||
xargs \
|
||||
$JQ '."release-group".id' \
|
||||
<"$tmpreleasefiles" >"$LOCALDATA_RELEASEGROUPS"
|
||||
xargs \
|
||||
$JQ '."release-group"."artist-credit" | map(.artist.id) | join("\n")' \
|
||||
<"$tmpreleasefiles" >"$LOCALDATA_ARTISTS"
|
||||
(
|
||||
xargs \
|
||||
$JQ '."release-group".id' \
|
||||
<"$tmpreleasefiles" >"$LOCALDATA_RELEASEGROUPS"
|
||||
tf1=$(mktemp)
|
||||
sort "$LOCALDATA_RELEASEGROUPS" | uniq >"$tf1"
|
||||
mv "$tf1" "$LOCALDATA_RELEASEGROUPS"
|
||||
) &
|
||||
(
|
||||
xargs \
|
||||
$JQ '."release-group"."artist-credit" | map(.artist.id) | join("\n")' \
|
||||
<"$tmpreleasefiles" >"$LOCALDATA_ARTISTS"
|
||||
tf2=$(mktemp)
|
||||
sort "$LOCALDATA_ARTISTS" | uniq >"$tf2"
|
||||
mv "$tf2" "$LOCALDATA_ARTISTS"
|
||||
) &
|
||||
wait
|
||||
rm -f "$tmpreleases" "$tmpreleasefiles"
|
||||
tf1=$(mktemp)
|
||||
tf2=$(mktemp)
|
||||
sort "$LOCALDATA_RELEASEGROUPS" | uniq >"$tf1"
|
||||
mv "$tf1" "$LOCALDATA_RELEASEGROUPS"
|
||||
sort "$LOCALDATA_ARTISTS" | uniq >"$tf2"
|
||||
mv "$tf2" "$LOCALDATA_ARTISTS"
|
||||
__batch_load_missing "$TYPE_RELEASEGROUP" <"$LOCALDATA_RELEASEGROUPS"
|
||||
__batch_load_missing "$TYPE_ARTIST" <"$LOCALDATA_ARTISTS"
|
||||
__precompute_lists
|
||||
|
||||
@@ -6,7 +6,7 @@ if [ ! "${LOG_LOADED:-}" ]; then
|
||||
ERR="\033[38;5;196m"
|
||||
INFO="\033[38;5;75m"
|
||||
OFF="\033[m"
|
||||
LOGDIR="$HOME/.local/state/$APP_NAME"
|
||||
LOGDIR="${XDG_STATE_HOME:-"$HOME/.local/state"}/$APP_NAME"
|
||||
[ -d "$LOGDIR" ] || mkdir -p "$LOGDIR"
|
||||
LOGFILE="$LOGDIR/log"
|
||||
export ERR INFO OFF LOGFILE
|
||||
|
||||
@@ -2,12 +2,32 @@
|
||||
#
|
||||
# For now, only artist previews are supported.
|
||||
|
||||
if [ ! "${PREVIEW_LOADED:-}" ]; then
|
||||
PREVIEW_NO_WRAP="__DO_NOT_WRAP_THIS_LINE__"
|
||||
PREVIEW_WINDOW_PERCENTAGE="30"
|
||||
export PREVIEW_NO_WRAP PREVIEW_WINDOW_PERCENTAGE
|
||||
|
||||
export PREVIEW_LOADED=1
|
||||
fi
|
||||
|
||||
# This internal method reshapes the text to be shown in the preview. This
|
||||
# creates a border on both horizontal ends.
|
||||
#
|
||||
# The text is read from stdin.
|
||||
# The text is read from stdin. If a line contains the pattern defined in
|
||||
# PREVIEW_NO_WRAP, then that line will not be folded.
|
||||
__shape() {
|
||||
cat | tr -d '\r' | fold -s -w "$((FZF_PREVIEW_COLUMNS - 4))" | awk '{print " "$0" "}'
|
||||
#width="$((FZF_PREVIEW_COLUMNS - 4))"
|
||||
width="$((FZF_COLUMNS * PREVIEW_WINDOW_PERCENTAGE / 100 - 4))"
|
||||
while IFS= read -r line; do
|
||||
line="$(printf "%s" "$line" | tr -d '\r')"
|
||||
if printf "%s" "$line" | grep --silent "$PREVIEW_NO_WRAP"; then
|
||||
printf " %s\n" "$line" | sed "s/$PREVIEW_NO_WRAP//g"
|
||||
else
|
||||
printf "%s\n" "$line" |
|
||||
fold -s -w "$width" |
|
||||
awk '{print " "$0" "}'
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Print preview of artist
|
||||
|
||||
@@ -19,7 +19,6 @@ if [ ! "${THEME_LOADED:-}" ]; then
|
||||
CNOTE="${ESC}[38;5;242m"
|
||||
CXXX="${ESC}[38;5;109m"
|
||||
CDESC="${ESC}[38;5;254m"
|
||||
CLIFE="${ESC}[38;5;251m"
|
||||
CKB="${ESC}[38;5;224m"
|
||||
OFF="${ESC}[m"
|
||||
|
||||
@@ -69,8 +68,8 @@ if [ ! "${THEME_LOADED:-}" ]; then
|
||||
AV_FMT_FLAG_NO_LOCAL="${AV_FMT_FLAG_NO_LOCAL:-""}"
|
||||
AV_FMT_TYPE_PERSON="${AV_FMT_TYPE_PERSON:-🧑🎤}"
|
||||
AV_FMT_TYPE_GROUP="${AV_FMT_TYPE_GROUP:-🧑🤝🧑}"
|
||||
AV_FMT_NAME="${AV_FMT_NAME:-"${CARTIST}%s$OFF"}"
|
||||
AV_FMT_DISAMBIGUATION="${AV_FMT_DISAMBIGUATION:-"${CDISAMB}(%s)$OFF"}"
|
||||
AV_FMT_NAME="${AV_FMT_NAME:-"${CARTIST}%s${OFF}"}"
|
||||
AV_FMT_DISAMBIGUATION="${AV_FMT_DISAMBIGUATION:-"${CDISAMB}(%s)${OFF}"}"
|
||||
export AV_FMT AV_FMT_CNT AV_FMT_RIGHTALIGN AV_FMT_FLAG_LOCAL \
|
||||
AV_FMT_FLAG_NO_LOCAL AV_FMT_TYPE_PERSON AV_FMT_TYPE_GROUP AV_FMT_NAME \
|
||||
AV_FMT_DISAMBIGUATION
|
||||
@@ -84,7 +83,8 @@ if [ ! "${THEME_LOADED:-}" ]; then
|
||||
# <<title>> string Title of album
|
||||
# <<artist>> string Artist of album
|
||||
# <<year>> string Year of initial release
|
||||
# TODO: The above <<secondary>> is of a joint item-string type; unify or document.
|
||||
# Note: The above <<secondary>> is of a joint item-string type. See code for
|
||||
# details.
|
||||
RGV_FMT="${RGV_FMT:-"<<flag>>\t<<type>>\t<<hassecondary>>\t<<title>><<artist>> <<year>> <<secondary>>"}"
|
||||
RGV_FMT_CNT=$(($(printf "$RGV_FMT" | tr -cd '\t' | wc -c) + 1))
|
||||
RGV_FMT_RIGHTALIGN="${RGV_FMT_RIGHTALIGN:-"1"}"
|
||||
@@ -98,7 +98,7 @@ if [ ! "${THEME_LOADED:-}" ]; then
|
||||
RGV_FMT_TYPE_UNKNOWN="${RGV_FMT_TYPE_UNKNOWN:-""}"
|
||||
RGV_FMT_HASSECONDARY_YES="${RGV_FMT_HASSECONDARY_YES:-"☼"}"
|
||||
RGV_FMT_HASSECONDARY_NO="${RGV_FMT_HASSECONDARY_NO:-""}"
|
||||
RGV_FMT_SECONDARY="${RGV_FMT_SECONDARY:-"${CNOTE}[☼: %s]$OFF"}"
|
||||
RGV_FMT_SECONDARY="${RGV_FMT_SECONDARY:-"${CNOTE}[☼: %s]${OFF}"}"
|
||||
RGV_FMT_SECONDARY_SOUNDTRACK="${RGV_FMT_SECONDARY_SOUNDTRACK:-"🎬 soundtrack"}"
|
||||
RGV_FMT_SECONDARY_SPOKENWORD="${RGV_FMT_SECONDARY_SPOKENWORD:-"📖 spokenword"}"
|
||||
RGV_FMT_SECONDARY_INTERVIEW="${RGV_FMT_SECONDARY_INTERVIEW:-"💬 interview"}"
|
||||
@@ -110,9 +110,9 @@ if [ ! "${THEME_LOADED:-}" ]; then
|
||||
RGV_FMT_SECONDARY_MIXTAPE="${RGV_FMT_SECONDARY_MIXTAPE:-"📼 mixtape"}"
|
||||
RGV_FMT_SECONDARY_DEMO="${RGV_FMT_SECONDARY_DEMO:-"🧪 demo"}"
|
||||
RGV_FMT_SECONDARY_FIELDREC="${RGV_FMT_SECONDARY_FIELDREC:-"🌿 field recording"}"
|
||||
RGV_FMT_TITLE="${RGV_FMT_TITLE:-"${CTITLE}%s$OFF"}"
|
||||
RGV_FMT_ARTIST="${RGV_FMT_ARTIST:-" — ${CARTIST}%s$OFF"}"
|
||||
RGV_FMT_YEAR="${RGV_FMT_YEAR:-"${CYEAR}(%s)$OFF"}"
|
||||
RGV_FMT_TITLE="${RGV_FMT_TITLE:-"${CTITLE}%s${OFF}"}"
|
||||
RGV_FMT_ARTIST="${RGV_FMT_ARTIST:-" — ${CARTIST}%s${OFF}"}"
|
||||
RGV_FMT_YEAR="${RGV_FMT_YEAR:-"${CYEAR}(%s)${OFF}"}"
|
||||
export RGV_FMT RGV_FMT_CNT RGV_FMT_RIGHTALIGN RGV_FMT_FLAG_LOCAL \
|
||||
RGV_FMT_FLAG_NO_LOCAL RGV_FMT_TYPE_SINGLE RGV_FMT_TYPE_ALBUM \
|
||||
RGV_FMT_TYPE_EP RGV_FMT_TYPE_BROADCAST RGV_FMT_TYPE_OTHER \
|
||||
@@ -148,13 +148,13 @@ if [ ! "${THEME_LOADED:-}" ]; then
|
||||
RV_FMT_STATUS_EXPUNGED="${RV_FMT_STATUS_EXPUNGED:-"🧹"}"
|
||||
RV_FMT_STATUS_CANCELLED="${RV_FMT_STATUS_CANCELLED:-"❌"}"
|
||||
RV_FMT_STATUS_UNKNOWN="${RV_FMT_STATUS_UNKNOWN:-""}"
|
||||
RV_FMT_TRACKS="${RV_FMT_TRACKS:-"${CXXX}%s tracks$OFF"}"
|
||||
RV_FMT_MEDIA="${RV_FMT_MEDIA:-"${CXXX}%s$OFF"}"
|
||||
RV_FMT_YEAR="${RV_FMT_YEAR:-"${CYEAR}%s$OFF"}"
|
||||
RV_FMT_COUNTRY="${RV_FMT_COUNTRY:-"${CYEAR}%s$OFF"}"
|
||||
RV_FMT_LABEL="${RV_FMT_LABEL:-"${CARTIST}%s$OFF"}"
|
||||
RV_FMT_TITLE="${RV_FMT_TITLE:-"${FAINT}as$OFF ${CTITLE}%s$OFF"}"
|
||||
RV_FMT_ARTIST="${RV_FMT_ARTIST:-"${FAINT}by$OFF ${CTITLE}%s$OFF"}"
|
||||
RV_FMT_TRACKS="${RV_FMT_TRACKS:-"${CXXX}%s tracks${OFF}"}"
|
||||
RV_FMT_MEDIA="${RV_FMT_MEDIA:-"${CXXX}%s${OFF}"}"
|
||||
RV_FMT_YEAR="${RV_FMT_YEAR:-"${CYEAR}%s${OFF}"}"
|
||||
RV_FMT_COUNTRY="${RV_FMT_COUNTRY:-"${CYEAR}%s${OFF}"}"
|
||||
RV_FMT_LABEL="${RV_FMT_LABEL:-"${CARTIST}%s${OFF}"}"
|
||||
RV_FMT_TITLE="${RV_FMT_TITLE:-"${FAINT}as${OFF} ${CTITLE}%s${OFF}"}"
|
||||
RV_FMT_ARTIST="${RV_FMT_ARTIST:-"${FAINT}by${OFF} ${CTITLE}%s${OFF}"}"
|
||||
export RV_FMT RV_FMT_CNT RV_FMT_RIGHTALIGN RV_FMT_FLAG_LOCAL \
|
||||
RV_FMT_FLAG_NO_LOCAL RV_FMT_STATUS_OFFICIAL RV_FMT_STATUS_PROMO \
|
||||
RV_FMT_STATUS_BOOTLEG RV_FMT_STATUS_PSEUDO RV_FMT_STATUS_WITHDRAWN \
|
||||
@@ -175,11 +175,11 @@ if [ ! "${THEME_LOADED:-}" ]; then
|
||||
REC_FMT_RIGHTALIGN="${REC_FMT_RIGHTALIGN:-"1,2,3,6"}"
|
||||
REC_FMT_FLAG_LOCAL="${REC_FMT_FLAG_LOCAL:-"$FORMAT_LOCAL"}"
|
||||
REC_FMT_FLAG_NO_LOCAL="${REC_FMT_FLAG_NO_LOCAL:-""}"
|
||||
REC_FMT_MEDIA="${REC_FMT_MEDIA:-"${CNOTE}${FAINT}%s$OFF"}"
|
||||
REC_FMT_NR="${REC_FMT_NR:-"${CNOTE}%s$OFF"}"
|
||||
REC_FMT_TITLE="${REC_FMT_TITLE:-"${CTITLE}%s$OFF"}"
|
||||
REC_FMT_ARTIST="${REC_FMT_ARTIST:-"${CARTIST}%s$OFF"}"
|
||||
REC_FMT_DURATION="${REC_FMT_DURATION:-"${CXXX}%s$OFF"}"
|
||||
REC_FMT_MEDIA="${REC_FMT_MEDIA:-"${CNOTE}${FAINT}%s${OFF}"}"
|
||||
REC_FMT_NR="${REC_FMT_NR:-"${CNOTE}%s${OFF}"}"
|
||||
REC_FMT_TITLE="${REC_FMT_TITLE:-"${CTITLE}%s${OFF}"}"
|
||||
REC_FMT_ARTIST="${REC_FMT_ARTIST:-"${CARTIST}%s${OFF}"}"
|
||||
REC_FMT_DURATION="${REC_FMT_DURATION:-"${CXXX}%s${OFF}"}"
|
||||
export REC_FMT REC_FMT_CNT REC_FMT_RIGHTALIGN REC_FMT_FLAG_LOCAL \
|
||||
REC_FMT_FLAG_NO_LOCAL REC_FMT_MEDIA REC_FMT_NR REC_FMT_TITLE \
|
||||
REC_FMT_ARTIST REC_FMT_DURATION
|
||||
@@ -195,9 +195,9 @@ if [ ! "${THEME_LOADED:-}" ]; then
|
||||
PLYLST_FMT_RIGHTALIGN="${PLYLST_FMT_RIGHTALIGN:-"1"}"
|
||||
PLYLST_FMT_PLAYING_YES="${PLYLST_FMT_PLAYING_YES:-"👉"}"
|
||||
PLYLST_FMT_PLAYING_NO="${PLYLST_FMT_PLAYING_NO:-""}"
|
||||
PLYLST_FMT_TITLE="${PLYLST_FMT_TITLE:-"${CTITLE}%s$OFF"}"
|
||||
PLYLST_FMT_ARTIST="${PLYLST_FMT_ARTIST:-"${CARTIST}%s$OFF"}"
|
||||
PLYLST_FMT_DURATION="${PLYLST_FMT_DURATION:-"${CXXX}%s$OFF"}"
|
||||
PLYLST_FMT_TITLE="${PLYLST_FMT_TITLE:-"${CTITLE}%s${OFF}"}"
|
||||
PLYLST_FMT_ARTIST="${PLYLST_FMT_ARTIST:-"${CARTIST}%s${OFF}"}"
|
||||
PLYLST_FMT_DURATION="${PLYLST_FMT_DURATION:-"${CXXX}%s${OFF}"}"
|
||||
export PLYLST_FMT PLYLST_FMT_CNT PLYLST_FMT_RIGHTALIGN \
|
||||
PLYLST_FMT_PLAYING_YES PLYLST_FMT_PLAYING_NO PLYLST_FMT_TITLE \
|
||||
PLYLST_FMT_ARTIST PLYLST_FMT_DURATION
|
||||
@@ -208,7 +208,6 @@ if [ ! "${THEME_LOADED:-}" ]; then
|
||||
# defined above.
|
||||
#
|
||||
# Header that displays artist's name (based on artist view)
|
||||
HEADER_ARTIST="${HEADER_ARTIST:-" ${CARTIST}%s$OFF "}"
|
||||
HEADER_ARTIST_FMT="${HEADER_ARTIST_FMT:-"🎤\t<<name>> 〉"}"
|
||||
HEADER_ARTIST_FMT_CNT=$(($(printf "$HEADER_ARTIST_FMT" | tr -cd '\t' | wc -c) + 1))
|
||||
HEADER_ARTIST_FMT_RIGHTALIGN="${HEADER_ARTIST_FMT_RIGHTALIGN:-"1"}"
|
||||
@@ -218,11 +217,10 @@ if [ ! "${THEME_LOADED:-}" ]; then
|
||||
HEADER_ARTIST_FMT_TYPE_GROUP="${HEADER_ARTIST_FMT_TYPE_GROUP:-"$AV_FMT_TYPE_GROUP"}"
|
||||
HEADER_ARTIST_FMT_NAME="${HEADER_ARTIST_FMT_NAME:-"$AV_FMT_NAME"}"
|
||||
HEADER_ARTIST_FMT_DISAMBIGUATION="${HEADER_ARTIST_FMT_DISAMBIGUATION:-"$AV_FMT_DISAMBIGUATION"}"
|
||||
export HEADER_ARTIST HEADER_ARTIST_FMT HEADER_ARTIST_FMT_CNT \
|
||||
HEADER_ARTIST_FMT_RIGHTALIGN HEADER_ARTIST_FMT_FLAG_LOCAL \
|
||||
HEADER_ARTIST_FMT_FLAG_NO_LOCAL HEADER_ARTIST_FMT_TYPE_PERSON \
|
||||
HEADER_ARTIST_FMT_TYPE_GROUP HEADER_ARTIST_FMT_NAME \
|
||||
HEADER_ARTIST_FMT_DISAMBIGUATION
|
||||
export HEADER_ARTIST_FMT HEADER_ARTIST_FMT_CNT HEADER_ARTIST_FMT_RIGHTALIGN \
|
||||
HEADER_ARTIST_FMT_FLAG_LOCAL HEADER_ARTIST_FMT_FLAG_NO_LOCAL \
|
||||
HEADER_ARTIST_FMT_TYPE_PERSON HEADER_ARTIST_FMT_TYPE_GROUP \
|
||||
HEADER_ARTIST_FMT_NAME HEADER_ARTIST_FMT_DISAMBIGUATION
|
||||
|
||||
# Header that displays the release-group (based on release-group view)
|
||||
HEADER_RG_FMT="${HEADER_RG_FMT:-"🎤\t<<artist>> 》<<title>> 〉"}"
|
||||
@@ -251,7 +249,7 @@ if [ ! "${THEME_LOADED:-}" ]; then
|
||||
HEADER_RG_FMT_SECONDARY_DEMO="${HEADER_RG_FMT_SECONDARY_DEMO:-"$RGV_FMT_SECONDARY_DEMO"}"
|
||||
HEADER_RG_FMT_SECONDARY_FIELDREC="${HEADER_RG_FMT_SECONDARY_FIELDREC:-"$RGV_FMT_SECONDARY_FIELDREC"}"
|
||||
HEADER_RG_FMT_TITLE="${HEADER_RG_FMT_TITLE:-"$RGV_FMT_TITLE"}"
|
||||
HEADER_RG_FMT_ARTIST="${HEADER_RG_FMT_ARTIST:-"${CARTIST}%s$OFF"}"
|
||||
HEADER_RG_FMT_ARTIST="${HEADER_RG_FMT_ARTIST:-"${CARTIST}%s${OFF}"}"
|
||||
HEADER_RG_FMT_YEAR="${HEADER_RG_FMT_YEAR:-"$RGV_FMT_YEAR"}"
|
||||
export HEADER_RG_FMT HEADER_RG_FMT_CNT HEADER_RG_FMT_RIGHTALIGN \
|
||||
HEADER_RG_FMT_FLAG_LOCAL HEADER_RG_FMT_FLAG_NO_LOCAL \
|
||||
@@ -268,8 +266,6 @@ if [ ! "${THEME_LOADED:-}" ]; then
|
||||
HEADER_RG_FMT_YEAR
|
||||
|
||||
# Header that displays the release (based on release view)
|
||||
#HEADER_RELEASE="${HEADER_RELEASE:-" ${CARTIST}%s$OFF 》${CTITLE}%s$OFF 〉%s"}"
|
||||
#HEADER_RELEASE_FORMAT="${HEADER_RELEASE_FORMAT:-"${CRELINFO}<<tracks>> tx <<media>> $OFF|$CRELINFO <<label>> <<country>> <<year>>$OFF"}"
|
||||
HEADER_R_FMT="${HEADER_R_FMT:-"🎤\t<<artist>> 》<<title>> 〉<<tracks>> ${CRELINFO}tx${OFF} <<media>> | <<label>> <<country>> <<year>>"}"
|
||||
HEADER_R_FMT_CNT=$(($(printf "$HEADER_R_FMT" | tr -cd '\t' | wc -c) + 1))
|
||||
HEADER_R_FMT_RIGHTALIGN="${HEADER_R_FMT_RIGHTALIGN:-"1"}"
|
||||
@@ -283,13 +279,13 @@ if [ ! "${THEME_LOADED:-}" ]; then
|
||||
HEADER_R_FMT_STATUS_EXPUNGED="${HEADER_R_FMT_STATUS_EXPUNGED:-"$RV_FMT_STATUS_EXPUNGED"}"
|
||||
HEADER_R_FMT_STATUS_CANCELLED="${HEADER_R_FMT_STATUS_CANCELLED:-"$RV_FMT_STATUS_CANCELLED"}"
|
||||
HEADER_R_FMT_STATUS_UNKNOWN="${HEADER_R_FMT_STATUS_UNKNOWN:-"$RV_FMT_STATUS_UNKNOWN"}"
|
||||
HEADER_R_FMT_TRACKS="${HEADER_R_FMT_TRACKS:-"${CRELINFO}%s$OFF"}"
|
||||
HEADER_R_FMT_MEDIA="${HEADER_R_FMT_MEDIA:-"${CRELINFO}%s$OFF"}"
|
||||
HEADER_R_FMT_YEAR="${HEADER_R_FMT_YEAR:-"${CRELINFO}%s$OFF"}"
|
||||
HEADER_R_FMT_COUNTRY="${HEADER_R_FMT_COUNTRY:-"${CRELINFO}%s$OFF"}"
|
||||
HEADER_R_FMT_LABEL="${HEADER_R_FMT_LABEL:-"${CRELINFO}%s$OFF"}"
|
||||
HEADER_R_FMT_TITLE="${HEADER_R_FMT_TITLE:-"${CTITLE}%s$OFF"}"
|
||||
HEADER_R_FMT_ARTIST="${HEADER_R_FMT_ARTIST:-"${CARTIST}%s$OFF"}"
|
||||
HEADER_R_FMT_TRACKS="${HEADER_R_FMT_TRACKS:-"${CRELINFO}%s${OFF}"}"
|
||||
HEADER_R_FMT_MEDIA="${HEADER_R_FMT_MEDIA:-"${CRELINFO}%s${OFF}"}"
|
||||
HEADER_R_FMT_YEAR="${HEADER_R_FMT_YEAR:-"${CRELINFO}%s${OFF}"}"
|
||||
HEADER_R_FMT_COUNTRY="${HEADER_R_FMT_COUNTRY:-"${CRELINFO}%s${OFF}"}"
|
||||
HEADER_R_FMT_LABEL="${HEADER_R_FMT_LABEL:-"${CRELINFO}%s${OFF}"}"
|
||||
HEADER_R_FMT_TITLE="${HEADER_R_FMT_TITLE:-"${CTITLE}%s${OFF}"}"
|
||||
HEADER_R_FMT_ARTIST="${HEADER_R_FMT_ARTIST:-"${CARTIST}%s${OFF}"}"
|
||||
export HEADER_R_FMT HEADER_R_FMT_CNT HEADER_R_FMT_RIGHTALIGN \
|
||||
HEADER_R_FMT_FLAG_LOCAL HEADER_R_FMT_FLAG_NO_LOCAL \
|
||||
HEADER_R_FMT_STATUS_OFFICIAL HEADER_R_FMT_STATUS_PROMO \
|
||||
@@ -302,6 +298,9 @@ if [ ! "${THEME_LOADED:-}" ]; then
|
||||
|
||||
# Artist Preview
|
||||
# ==============
|
||||
# Lines that contain the pattern defined in PREVIEW_NO_WRAP (see
|
||||
# `src/sh/preview.sh`) will not be wrapped.
|
||||
#
|
||||
# We distinguish between single-person and group artists.
|
||||
#
|
||||
# <<name>> | string | Artist name
|
||||
@@ -312,12 +311,12 @@ if [ ! "${THEME_LOADED:-}" ]; then
|
||||
# <<start> | higher-order placeholder | Placeholder for start string
|
||||
# <<end>> | higher-order placeholder | Placeholder for end string
|
||||
# <<url>> | higher-order placeholder | Placeholder for links
|
||||
PREVIEW_ARTIST_PERSON_FMT="${PREVIEW_ARTIST_PERSON_FMT:-"<<bio>><<alias>><<start>><<end>>\n<<url>>"}"
|
||||
PREVIEW_ARTIST_PERSON_FMT="${PREVIEW_ARTIST_PERSON_FMT:-"\n\n<<bio>><<alias>><<start>><<end>>\n<<url>>"}"
|
||||
PREVIEW_ARTIST_PERSON_NAME="${PREVIEW_ARTIST_PERSON_NAME:-"%s"}"
|
||||
PREVIEW_ARTIST_PERSON_SORTNAME="${PREVIEW_ARTIST_PERSON_SORTNAME:-"%s"}"
|
||||
PREVIEW_ARTIST_PERSON_BIO="${PREVIEW_ARTIST_PERSON_BIO:-"${CDESC}%s$OFF\n\n"}"
|
||||
PREVIEW_ARTIST_PERSON_BIO="${PREVIEW_ARTIST_PERSON_BIO:-"${CDESC}%s${OFF}\n\n"}"
|
||||
PREVIEW_ARTIST_PERSON_DISAMB="${PREVIEW_ARTIST_PERSON_DISAMB:-"%s"}"
|
||||
PREVIEW_ARTIST_PERSON_ALIAS="${PREVIEW_ARTIST_PERSON_ALIAS:-"${FAINT}Also known as ${ITALIC}%s$OFF\n\n"}"
|
||||
PREVIEW_ARTIST_PERSON_ALIAS="${PREVIEW_ARTIST_PERSON_ALIAS:-"${FAINT}Also known as ${ITALIC}%s${OFF}\n\n"}"
|
||||
PREVIEW_ARTIST_PERSON_ALIAS_JOIN="${PREVIEW_ARTIST_PERSON_ALIAS_JOIN:-"%s, %s"}"
|
||||
PREVIEW_ARTIST_PERSON_START="${PREVIEW_ARTIST_PERSON_START:-"🍼 Born: %s\n"}"
|
||||
PREVIEW_ARTIST_PERSON_START_FMT="${PREVIEW_ARTIST_PERSON_START_FMT:-"<<startdate>> <<startplace>>"}"
|
||||
@@ -327,12 +326,12 @@ if [ ! "${THEME_LOADED:-}" ]; then
|
||||
PREVIEW_ARTIST_PERSON_END_FMT="${PREVIEW_ARTIST_PERSON_END_FMT:-"<<enddate>> <<endplace>>"}"
|
||||
PREVIEW_ARTIST_PERSON_END_ENDDATE="${PREVIEW_ARTIST_PERSON_END_ENDDATE:-"%s"}"
|
||||
PREVIEW_ARTIST_PERSON_END_ENDPLACE="${PREVIEW_ARTIST_PERSON_END_ENDPLACE:-"in %s"}"
|
||||
PREVIEW_ARTIST_PERSON_URL="${PREVIEW_ARTIST_PERSON_URL:-"\n${UNDERLINE}Links:$OFF%s\n"}"
|
||||
PREVIEW_ARTIST_PERSON_URL="${PREVIEW_ARTIST_PERSON_URL:-"\n%s\n"}"
|
||||
PREVIEW_ARTIST_PERSON_URL_JOIN="${PREVIEW_ARTIST_PERSON_URL_JOIN:-"%s\n%s"}"
|
||||
PREVIEW_ARTIST_PERSON_URL_FMT="${PREVIEW_ARTIST_PERSON_URL_FMT:-"<<urlindex>>:\n<<urlname>>\n<<urllink>>\n"}"
|
||||
PREVIEW_ARTIST_PERSON_URL_URLINDEX="${PREVIEW_ARTIST_PERSON_URL_URLINDEX:-"${CDISAMB}%3d$OFF"}"
|
||||
PREVIEW_ARTIST_PERSON_URL_URLNAME="${PREVIEW_ARTIST_PERSON_URL_URLNAME:-"${CDESC}%s$OFF"}"
|
||||
PREVIEW_ARTIST_PERSON_URL_URLLINK="${PREVIEW_ARTIST_PERSON_URL_URLLINK:-"${FAINT}%s$OFF"}"
|
||||
PREVIEW_ARTIST_PERSON_URL_FMT="${PREVIEW_ARTIST_PERSON_URL_FMT:-"${PREVIEW_NO_WRAP}<<urlindex>>: <<urlname>> <<urllink>>\n"}"
|
||||
PREVIEW_ARTIST_PERSON_URL_URLINDEX="${PREVIEW_ARTIST_PERSON_URL_URLINDEX:-"${CDISAMB}%3d${OFF}"}"
|
||||
PREVIEW_ARTIST_PERSON_URL_URLNAME="${PREVIEW_ARTIST_PERSON_URL_URLNAME:-"${CDESC}%s${OFF}"}"
|
||||
PREVIEW_ARTIST_PERSON_URL_URLLINK="${PREVIEW_ARTIST_PERSON_URL_URLLINK:-"${FAINT}%s${OFF}"}"
|
||||
export PREVIEW_ARTIST_PERSON_FMT PREVIEW_ARTIST_PERSON_NAME \
|
||||
PREVIEW_ARTIST_PERSON_SORTNAME PREVIEW_ARTIST_PERSON_BIO \
|
||||
PREVIEW_ARTIST_PERSON_DISAMB PREVIEW_ARTIST_PERSON_ALIAS \
|
||||
@@ -381,11 +380,11 @@ if [ ! "${THEME_LOADED:-}" ]; then
|
||||
# Keybinding themes
|
||||
# =================
|
||||
# Format keybinding group
|
||||
KBF_GROUP="${KBF_GROUP:-"${UNDERLINE}${CKB}%s$OFF"}"
|
||||
KBF_GROUP="${KBF_GROUP:-"${UNDERLINE}${CKB}%s${OFF}"}"
|
||||
# Format key
|
||||
KBF_KEY="${KBF_KEY:-"${BOLD}${CKB}%s$OFF"}"
|
||||
KBF_KEY="${KBF_KEY:-"${BOLD}${CKB}%s${OFF}"}"
|
||||
# Format description
|
||||
KBF_DESC="${KBF_DESC:-"${CKB}%s$OFF"}"
|
||||
KBF_DESC="${KBF_DESC:-"${CKB}%s${OFF}"}"
|
||||
export KBF_GROUP KBF_KEY KBF_DESC
|
||||
|
||||
export THEME_LOADED=1
|
||||
|
||||
Reference in New Issue
Block a user