From 71ca28742ac4f93ab2401eaee8e78471c023cd4b Mon Sep 17 00:00:00 2001 From: Hsieh Chin Fan Date: Thu, 7 Nov 2024 11:32:27 +0800 Subject: Update --- mpd/ncmpcpp/scripts/album-art | 248 ---------------------------------------- mpd/ncmpcpp/scripts/music.png | Bin 113344 -> 0 bytes mpd/ncmpcpp/scripts/ncmpcpp-art | 22 ---- 3 files changed, 270 deletions(-) delete mode 100755 mpd/ncmpcpp/scripts/album-art delete mode 100644 mpd/ncmpcpp/scripts/music.png delete mode 100755 mpd/ncmpcpp/scripts/ncmpcpp-art (limited to 'mpd/ncmpcpp/scripts') diff --git a/mpd/ncmpcpp/scripts/album-art b/mpd/ncmpcpp/scripts/album-art deleted file mode 100755 index d852f34..0000000 --- a/mpd/ncmpcpp/scripts/album-art +++ /dev/null @@ -1,248 +0,0 @@ -#!/usr/bin/env bash - -## Copyright (C) 2020-2021 Aditya Shakya -## Everyone is permitted to copy and distribute copies of this file under GNU-GPL3 - -## Cover art script for ncmpcpp - -# SETTINGS -music_library="$HOME/Music" -padding_top=3 -padding_bottom=0 -padding_right=0 -max_width=40 -reserved_playlist_cols=31 -reserved_cols_in_percent="false" -force_square="true" -square_alignment="top" -left_aligned="true" -padding_left=0 - -# Only set this if the geometries are wrong or ncmpcpp shouts at you to do it. -# Visually select/highlight a character on your terminal, zoom in an image -# editor and count how many pixels a character's width and height are. -font_height= -font_width= - -main() { - kill_previous_instances >/dev/null 2>&1 - find_cover_image >/dev/null 2>&1 - display_cover_image 2>/dev/null - dunstify -u low --replace=69 -i "$cover_path" "$(mpc current)" - detect_window_resizes >/dev/null 2>&1 -} - -# ==== Main functions ========================================================= - -kill_previous_instances() { - script_name=$(basename "$0") - for pid in $(pidof -x "$script_name"); do - if [ "$pid" != $$ ]; then - kill -15 "$pid" - fi - done -} - -find_cover_image() { - - # First we check if the audio file has an embedded album art - ext="$(mpc --format %file% current | sed 's/^.*\.//')" - if [ "$ext" = "flac" ]; then - # since FFMPEG cannot export embedded FLAC art we use metaflac - metaflac --export-picture-to=/tmp/mpd_cover.jpg \ - "$(mpc --format "$music_library"/%file% current)" && - cover_path="/tmp/mpd_cover.jpg" && return - else - ffmpeg -y -i "$(mpc --format "$music_library"/%file% | head -n 1)" \ - /tmp/mpd_cover.jpg && - cover_path="/tmp/mpd_cover.jpg" && return - fi - - # If no embedded art was found we look inside the music file's directory - album="$(mpc --format %album% current)" - file="$(mpc --format %file% current)" - album_dir="${file%/*}" - album_dir="$music_library/$album_dir" - found_covers="$(find "$album_dir" -type d -exec find {} -maxdepth 1 -type f \ - -iregex ".*/.*\(${album}\|cover\|folder\|artwork\|front\).*[.]\\(jpe?g\|png\|gif\|bmp\)" \; )" - cover_path="$(echo "$found_covers" | head -n1)" - if [ -n "$cover_path" ]; then - return - fi - - # If we still failed to find a cover image, we use the fallback - if [ -z "$cover_path" ]; then - cover_path="$HOME/.ncmpcpp/scripts/music.png" - fi -} - -display_cover_image() { - compute_geometry - - send_to_ueberzug \ - action "add" \ - identifier "mpd_cover" \ - path "$cover_path" \ - x "$ueber_left" \ - y "$padding_top" \ - height "$ueber_height" \ - width "$ueber_width" \ - synchronously_draw "True" \ - scaler "forced_cover" \ - scaling_position_x "0.5" -} - -detect_window_resizes() { - { - trap 'display_cover_image' WINCH - while :; do sleep .1; done - } & -} - - -# ==== Helper functions ========================================================= - -compute_geometry() { - unset LINES COLUMNS # Required in order for tput to work in a script - term_lines=$(tput lines) - term_cols=$(tput cols) - if [ -z "$font_height" ] || [ -z "$font_height" ]; then - guess_font_size - fi - - ueber_height=$(( term_lines - padding_top - padding_bottom )) - # Because Ueberzug uses characters as a unit we must multiply - # the line count (height) by the font size ratio in order to - # obtain an equivalent width in column count - ueber_width=$(( ueber_height * font_height / font_width )) - ueber_left=$(( term_cols - ueber_width - padding_right )) - - if [ "$left_aligned" = "true" ]; then - compute_geometry_left_aligned - else - compute_geometry_right_aligned - fi - - apply_force_square_setting -} - -compute_geometry_left_aligned() { - ueber_left=$padding_left - max_width_chars=$(( term_cols * max_width / 100 )) - if [ "$max_width" != 0 ] && - [ $(( ueber_width + padding_right + padding_left )) -gt "$max_width_chars" ]; then - ueber_width=$(( max_width_chars - padding_left - padding_right )) - fi -} - -compute_geometry_right_aligned() { - if [ "$reserved_cols_in_percent" = "true" ]; then - ueber_left_percent=$(printf "%.0f\n" $(calc "$ueber_left" / "$term_cols" '*' 100)) - if [ "$ueber_left_percent" -lt "$reserved_playlist_cols" ]; then - ueber_left=$(( term_cols * reserved_playlist_cols / 100 )) - ueber_width=$(( term_cols - ueber_left - padding_right )) - fi - else - if [ "$ueber_left" -lt "$reserved_playlist_cols" ]; then - ueber_left=$reserved_playlist_cols - ueber_width=$(( term_cols - ueber_left - padding_right )) - fi - - fi - - if [ "$max_width" != 0 ] && [ "$ueber_width" -gt "$max_width" ]; then - ueber_width=$max_width - ueber_left=$(( term_cols - ueber_width - padding_right )) - fi -} - -apply_force_square_setting() { - if [ $force_square = "true" ]; then - ueber_height=$(( ueber_width * font_width / font_height )) - case "$square_alignment" in - center) - area=$(( term_lines - padding_top - padding_bottom )) - padding_top=$(( padding_top + area / 2 - ueber_height / 2 )) - ;; - bottom) - padding_top=$(( term_lines - padding_bottom - ueber_height )) - ;; - *) ;; - esac - fi -} - -guess_font_size() { - # A font width and height estimate is required to - # properly compute the cover width (in columns). - # We are reproducing the arithmetic used by Ueberzug - # to guess font size. - # https://github.com/seebye/ueberzug/blob/master/ueberzug/terminal.py#L24 - - guess_terminal_pixelsize - - approx_font_width=$(( term_width / term_cols )) - approx_font_height=$(( term_height / term_lines )) - - term_xpadding=$(( ( - approx_font_width * term_cols + term_width ) / 2 )) - term_ypadding=$(( ( - approx_font_height * term_lines + term_height ) / 2 )) - - font_width=$(( (term_width - 2 * term_xpadding) / term_cols )) - font_height=$(( (term_height - 2 * term_ypadding) / term_lines )) -} - -guess_terminal_pixelsize() { - # We are re-using the same Python snippet that - # Ueberzug utilizes to retrieve terminal window size. - # https://github.com/seebye/ueberzug/blob/master/ueberzug/terminal.py#L10 - - python < "$FIFO_UEBERZUG" - - IFS=${old_IFS} -} - -main diff --git a/mpd/ncmpcpp/scripts/music.png b/mpd/ncmpcpp/scripts/music.png deleted file mode 100644 index 3ded333..0000000 Binary files a/mpd/ncmpcpp/scripts/music.png and /dev/null differ diff --git a/mpd/ncmpcpp/scripts/ncmpcpp-art b/mpd/ncmpcpp/scripts/ncmpcpp-art deleted file mode 100755 index 38d34c1..0000000 --- a/mpd/ncmpcpp/scripts/ncmpcpp-art +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bash - -## Copyright (C) 2020-2021 Aditya Shakya -## Everyone is permitted to copy and distribute copies of this file under GNU-GPL3 - -export FIFO_UEBERZUG="/tmp/mpd-ueberzug-${PPID}" - -cleanup() { - rm "$FIFO_UEBERZUG" 2>/dev/null - rm /tmp/mpd_cover.jpg 2>/dev/null - pkill -P $$ 2>/dev/null - pkill album-art -} - -pkill -P $$ 2>/dev/null -rm "$FIFO_UEBERZUG" 2>/dev/null -mkfifo "$FIFO_UEBERZUG" >/dev/null -trap cleanup EXIT 2>/dev/null -tail --follow "$FIFO_UEBERZUG" | ueberzug layer --silent --parser simple >/dev/null 2>&1 & - -ncmpcpp -c ~/.ncmpcpp/config-art -cleanup -- cgit v1.2.3-70-g09d2