33
44# shellcheck source=lib/text_roll.sh
55source " ${TMUX_POWERLINE_DIR_LIB} /text_roll.sh"
6+ # shellcheck source=lib/util.sh
7+ source " ${TMUX_POWERLINE_DIR_LIB} /util.sh"
68
79TMUX_POWERLINE_SEG_NOW_PLAYING_MAX_LEN_DEFAULT=" 40"
810TMUX_POWERLINE_SEG_NOW_PLAYING_TRIM_METHOD_DEFAULT=" trim"
911TMUX_POWERLINE_SEG_NOW_PLAYING_ROLL_SPEED_DEFAULT=" 2"
1012TMUX_POWERLINE_SEG_NOW_PLAYING_ROLL_MODE=" ${TMUX_POWERLINE_SEG_NOW_PLAYING_ROLL_MODE:- repeat} "
1113TMUX_POWERLINE_SEG_NOW_PLAYING_ROLL_SEPARATOR=" ${TMUX_POWERLINE_SEG_NOW_PLAYING_ROLL_SEPARATOR:- } "
14+ TMUX_POWERLINE_SEG_NOW_PLAYING_TRACK_LOG_ENABLE=" ${TMUX_POWERLINE_SEG_NOW_PLAYING_TRACK_LOG_ENABLE:- false} "
15+ TMUX_POWERLINE_SEG_NOW_PLAYING_TRACK_LOG_FILEPATH=" ${TMUX_POWERLINE_SEG_NOW_PLAYING_TRACK_LOG_FILEPATH:- ${HOME} / .now_playing.log} "
16+ TMUX_POWERLINE_SEG_NOW_PLAYING_TRACK_LOG_MAX_ENTRIES=" ${TMUX_POWERLINE_SEG_NOW_PLAYING_TRACK_LOG_MAX_ENTRIES:- 100} "
1217TMUX_POWERLINE_SEG_NOW_PLAYING_MPD_HOST_DEFAULT=" localhost"
1318TMUX_POWERLINE_SEG_NOW_PLAYING_MPD_PORT_DEFAULT=" 6600"
1419TMUX_POWERLINE_SEG_NOW_PLAYING_LASTFM_UPDATE_PERIOD_DEFAULT=" 30"
@@ -35,6 +40,12 @@ export TMUX_POWERLINE_SEG_NOW_PLAYING_ROLL_SPEED="${TMUX_POWERLINE_SEG_NOW_PLAYI
3540# export TMUX_POWERLINE_SEG_NOW_PLAYING_ROLL_MODE="${TMUX_POWERLINE_SEG_NOW_PLAYING_ROLL_MODE} "
3641# Separator for "repeat" roll mode
3742# export TMUX_POWERLINE_SEG_NOW_PLAYING_ROLL_SEPARATOR="${TMUX_POWERLINE_SEG_NOW_PLAYING_ROLL_SEPARATOR} "
43+ # If set to 'true', 'yes', 'on' or '1', played tracks will be logged to a file.
44+ # export TMUX_POWERLINE_SEG_NOW_PLAYING_TRACK_LOG_ENABLE="${TMUX_POWERLINE_SEG_NOW_PLAYING_TRACK_LOG_ENABLE} "
45+ # If enabled, log played tracks to the following file:
46+ # export TMUX_POWERLINE_SEG_NOW_PLAYING_TRACK_LOG_FILEPATH="${TMUX_POWERLINE_SEG_NOW_PLAYING_TRACK_LOG_FILEPATH} "
47+ # Maximum number of logged song entries. Set to "unlimited" for unlimited entries.
48+ # export TMUX_POWERLINE_SEG_NOW_PLAYING_TRACK_LOG_MAX_ENTRIES="${TMUX_POWERLINE_SEG_NOW_PLAYING_TRACK_LOG_MAX_ENTRIES} "
3849
3950# Hostname for MPD server in the format "[password@]host"
4051export TMUX_POWERLINE_SEG_NOW_PLAYING_MPD_HOST="${TMUX_POWERLINE_SEG_NOW_PLAYING_MPD_HOST_DEFAULT} "
@@ -120,6 +131,33 @@ run_segment() {
120131 return ${exitcode}
121132 fi
122133 if [ -n " $np " ]; then
134+ if is_flag_enabled " ${TMUX_POWERLINE_SEG_NOW_PLAYING_TRACK_LOG_ENABLE} " ; then
135+ local last_track
136+ last_track=$(
137+ awk -F' : ' ' END { for (i = 2; i <= NF; ++i) printf("%s%s", $i, (i < NF) ? FS : "") }' \
138+ < " $TMUX_POWERLINE_SEG_NOW_PLAYING_TRACK_LOG_FILEPATH " 2> /dev/null
139+ )
140+ if [[ " $np " != " $last_track " ]]; then
141+ local next_entry
142+ next_entry=" $( date +" %Y-%m-%d %H:%M:%S" ) : ${np} "
143+ if [[ " ${TMUX_POWERLINE_SEG_NOW_PLAYING_TRACK_LOG_MAX_ENTRIES} " == " unlimited" ]]; then
144+ echo " $next_entry " >> " $TMUX_POWERLINE_SEG_NOW_PLAYING_TRACK_LOG_FILEPATH "
145+ else
146+ local tmp_log_file
147+ tmp_log_file=" $( mktemp) " &&
148+ {
149+ tail -n $(( TMUX_POWERLINE_SEG_NOW_PLAYING_TRACK_LOG_MAX_ENTRIES - 1 )) \
150+ " $TMUX_POWERLINE_SEG_NOW_PLAYING_TRACK_LOG_FILEPATH " 2> /dev/null
151+ echo " $next_entry "
152+ } > " $tmp_log_file " &&
153+ if [[ -f " $tmp_log_file " ]]; then
154+ # Use `cat` to preserve destination file attributes rather than source file attributes
155+ cat " $tmp_log_file " > " $TMUX_POWERLINE_SEG_NOW_PLAYING_TRACK_LOG_FILEPATH "
156+ rm " $tmp_log_file "
157+ fi
158+ fi
159+ fi
160+ fi
123161 case " $TMUX_POWERLINE_SEG_NOW_PLAYING_TRIM_METHOD " in
124162 " roll" )
125163 np=$( roll_text " ${np} " " ${TMUX_POWERLINE_SEG_NOW_PLAYING_MAX_LEN} " " ${TMUX_POWERLINE_SEG_NOW_PLAYING_ROLL_SPEED_DEFAULT} " " ${TMUX_POWERLINE_SEG_NOW_PLAYING_ROLL_MODE} " " ${TMUX_POWERLINE_SEG_NOW_PLAYING_ROLL_SEPARATOR} " )
0 commit comments