diff options
Diffstat (limited to 'clerk_fzf')
-rw-r--r-- | clerk_fzf/Makefile | 9 | ||||
-rwxr-xr-x | clerk_fzf/clerk_fzf | 381 | ||||
-rw-r--r-- | clerk_fzf/clerk_fzf.conf | 35 | ||||
-rw-r--r-- | clerk_fzf/tmux.clerk | 54 |
4 files changed, 0 insertions, 479 deletions
diff --git a/clerk_fzf/Makefile b/clerk_fzf/Makefile deleted file mode 100644 index f2f7abc..0000000 --- a/clerk_fzf/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -ifndef PREFIX - PREFIX=/usr/local -endif - -install: - install -Dm755 clerk_fzf $(DESTDIR)$(PREFIX)/bin/clerk_fzf - install -Dm644 tmux.clerk $(DESTDIR)/etc/clerk/tmux.conf - install -Dm644 clerk_fzf.conf $(DESTDIR)/etc/clerk_fzf.conf - diff --git a/clerk_fzf/clerk_fzf b/clerk_fzf/clerk_fzf deleted file mode 100755 index 81f53c7..0000000 --- a/clerk_fzf/clerk_fzf +++ /dev/null @@ -1,381 +0,0 @@ -#!/usr/bin/env bash - -TMUX_TMPDIR="/tmp/clerk/tmux" - -# default tmux config -tmux_config="/etc/clerk/tmux.conf" - -# set default settings -script="$0 $1" -random_artist="albumartist" -shuf=$([[ "$OSTYPE" == "darwin"* ]] && echo 'gshuf' || echo 'shuf') -value=20 -# table customization -track_width="2" -title_width="40" -artist_width="50" -date_width="6" -# album is much longer in order to keep filename off screen -album_width="200" -pl_title_width="110" - -# read global config -if [[ -f "/etc/clerk_fzf.conf" ]]; then - source /etc/clerk_fzf.conf -fi - -# create config dir, if needed -if [[ ! -d $HOME/.config/clerk ]]; then - mkdir $HOME/.config/clerk -fi - -# read user config -if [[ -f "$HOME/.config/clerk/clerk_fzf.conf" ]]; then - source $HOME/.config/clerk/clerk_fzf.conf -fi - -if [[ -n $mpd_host ]]; then - if [[ -n $mpd_password ]]; then - export MPD_HOST="${mpd_password}@${mpd_host}" - else - export MPD_HOST="${mpd_host}" - fi -fi - -if [[ -n $mpd_port ]]; then - ┆ export MPD_PORT="${mpd_port}" -fi - - -date=$(mpc stats | grep 'DB Updated: ') -file="$HOME/.config/clerk/.lastupdate" -if [ "$(< $file)" = "$date" ] && [ -f "$file" ] ; then - : -else - updateCache - date=$(mpc stats | grep 'DB Updated: ') - echo "${date}" > "${file}" -fi - -albums () { - script="$0 --albums" - tracklist="$(cat ~/.config/clerk/albums.cache | fzf --no-sort -m -e --reverse -i --with-nth=1,2,3 -d '\t' --tabstop=4 +s --ansi --bind "ctrl-a:select-all,ctrl-n:deselect-all")" - val=$? - if [[ $val -eq 130 ]]; then - albums - fi - track="$(echo "${tracklist}" | gawk -F "\t" '{print $NF}')" - actions -} - -latest () { - script="$0 --latest" - tracklist=$(cat ~/.config/clerk/latest.cache | fzf --no-sort -m -e --reverse -i --with-nth=1,2,3 -d '\t' --tabstop=4 +s --ansi --bind "ctrl-a:select-all,ctrl-n:deselect-all") - val=$? - if [[ $val -eq 130 ]]; then - latest - fi - track="$(echo "${tracklist}" | gawk -F "\t" '{print $NF}')" - actions -} - -tracks () { - script="$0 --tracks" - tracklist=$(cat ~/.config/clerk/tracks.cache | fzf -m --reverse -i -e --with-nth=1,2,3,4,5 -d '\t' --tabstop=4 +s --ansi --bind "ctrl-a:select-all,ctrl-n:deselect-all") - val=$? - if [[ $val -eq 130 ]]; then - tracks - fi - if [[ $tracklist == "< Go to Albumlist"* ]]; then - latest - fi - track="$(echo "${tracklist}" | gawk -F "\t" '{print $NF}')" - actions -} - -actions () { - action=$(echo -e "1. Replace\n2. Add\n3. Insert" | fzf --reverse -i --header="Choose Action or quit with ESC" --inline-info) - - if [[ $action == "1. Replace" ]]; then - mpc clear > /dev/null - echo "${track}" | while read line; do - mpc add "${line}" > /dev/null - done - mpc play > /dev/null - elif [[ $action == "2. Add" ]]; then - echo "${track}" | while read line; do - mpc add "${line}" > /dev/null - done - elif [[ $action == "3. Insert" ]]; then - echo "${track}" | while read line; do - mpc insert "${line}" > /dev/null - done - elif [[ $action -eq 130 ]]; then - exit - fi - tmux findw -t music queue - $(${script}) -} - -playRandomAlbum () { - mpc clear > /dev/null - artist="$(mpc list "albumartist" | $shuf -n 1)" - album="$(mpc list album "albumartist" "$artist" | $shuf -n 1)" - mpc findadd album "$album" "albumartist" "$artist" > /dev/null; - mpc play > /dev/null - tmux findw -t music queue -} - -# same for tracks, no artist should be preferred because it has more tracks. -playRandomTracks () { - mpc clear > /dev/null - artist="$(mpc list "$random_artist" | $shuf -n 1)" - album="$(mpc list album "$random_artist" "$artist" | $shuf -n 1)" - title="$(mpc list title album "$album" "$random_artist" "$artist" | $shuf -n 1)" - mpc findadd album "$album" "$random_artist" "$artist" title "$title" > /dev/null - mpc play > /dev/null - - n=0; while (( n++ < $value -1 )); do - artist="$(mpc list "$random_artist" | $shuf -n 1)" - album="$(mpc list album "$random_artist" "$artist" | $shuf -n 1)" - title="$(mpc list title album "$album" "$random_artist" "$artist" | $shuf -n 1)" - mpc findadd album "$album" "$random_artist" "$artist" title "$title" > /dev/null - done - mpc play > /dev/null - tmux findw -t music queue -} - -fix_date_format() { - # provided by Thorsten Wißmann: - # https://github.com/t-wissmann/dotfiles/blob/master/menu/rofi-mpd.sh - # reformats the date given in column $1 from format %c of locale LC_TIME=C - # (see man strftime) to the format specified in argument $2 column indices - # start with 1 - column_index="$1" - gawk -F $'\t' ' - # parse a date which was formated using %c to unix time - BEGIN { - # generated by the following bash one-liner: - # for i in {1..12} ; do LC_TIME=C date -d "1972-$i-01" +month2num[\"%b\"]\ =\ %_m ; done - month2num["Jan"] = 1 - month2num["Feb"] = 2 - month2num["Mar"] = 3 - month2num["Apr"] = 4 - month2num["May"] = 5 - month2num["Jun"] = 6 - month2num["Jul"] = 7 - month2num["Aug"] = 8 - month2num["Sep"] = 9 - month2num["Oct"] = 10 - month2num["Nov"] = 11 - month2num["Dec"] = 12 - } - function reformat_c_date(str) { - monthname = gensub(/^([^ ]*)[ ]+([^ ]*)[ ]+([^ ]*)[ ]+([^ ]*)[ ]+([^ ]*)$/, "\\2", "g", str) - monthnum = month2num[monthname] - nicedate = gensub(/^([^ ]*)[ ]+([^ ]*)[ ]+([^ ]*)[ ]+([^ ]*)[ ]+([^ ]*)$/, "\\5 " monthnum " \\3 \\4", "g", str) - nicedate = gensub(/:/, " ", "g", nicedate) - return nicedate - } - { - # modify the $column_index-th field - $'"$1"' = strftime("'"$2"'", mktime(reformat_c_date($'"$1"'))) - print $0 - } - ' -} - -updateCache () { - notify-send "clerk" "updating cache files" - cd $HOME/.config/clerk - rm -f *.cache - - mpc --format '%mtime%\t[%albumartist%|%artist%] ○ (%date%) ○ %album% [(CD %disc%)] ○ %file%' \ - search filename '' \ - | fix_date_format 1 '%Y-%m-%d-%H:%M:%S' \ - | sort -nr \ - | gawk '{for (i=2; i<NF; i++) printf $i " "; print $NF }' \ - | perl -ne 'print unless $seen{$_}++' \ - | sed 's:/[^/]*$::' | awk -F ' ○ ' '!seen[$1 $2 $3 $4]++' \ - | uniq \ - | gawk -F ' ○ ' '{ printf "%-"'${artist_width}'"."'${artist_width}'"s\t%-"'${date_width}'"."'${date_width}'"s\t%-"'${album_width}'"."'${album_width}'"s\t%.300s\n", $1, $2, $3, $4 }' \ - > $HOME/.config/clerk/latest.cache - mpc --format '[%albumartist%|%artist%]\t(%date%)\t%album% [(CD %disc%)]\t%file%' \ - search filename '' \ - | sed 's:/[^/]*$::' \ - | awk -F '\t' '!seen[$1 $2 $3 $4]++' \ - | sort \ - | gawk -F '\t' '{ printf "%-"'${artist_width}'"."'${artist_width}'"s\t%-"'${date_width}'"."'${date_width}'"s\t%-"'${album_width}'"."'${album_width}'"s\t%.300s\n", $1, $2, $3, $4 }' \ - > $HOME/.config/clerk/albums.cache - mpc --format '%track%\t%title%\t%artist%\t(%date%)\t%album%\t%file%' \ - search filename '' \ - | gawk -F '\t' '{ printf "%-"'${track_width}'"."'${track_width}'"s\t%-"'${title_width}'"."'${title_width}'"s\t%-"'${artist_width}'"."'${artist_width}'"s\t%-"'${date_width}'"."'${date_width}'"s\t%-"'${album_width}'"."'${album_width}'"s\t%.500s\n", $1, $2, $3, $4, $5, $6 }' \ - > $HOME/.config/clerk/tracks.cache - notify-send "clerk" "finished updating cache files" - date=$(mpc stats | grep 'DB Updated: ') - file="$HOME/.config/clerk/.lastupdate" - echo "${date}" > "${file}" -# | gawk -F '\t' '{ printf "%.2s\t%.40s\t%.40s\t%.200s\t%.500s\n", $1, $2, $3, $4, $5, $6 }' \ - if [[ $forceupdate == "true" ]]; then - exit - fi -} - -clerk_update () { -screen=$(tmux list-panes -F "#W") - -if [[ $1 == "--create-caches" ]]; then - if [[ $animation == "1" ]]; then - tmux new-session -s notify -n 'Updating Cache Files. Please wait a moment' -d 'sl' - else - tmux new-session -s notify -n 'Updating Cache Files. Please wait a moment' -d 'sh' - fi - tmux switchc -t notify - clerk_fzf --caches & - pid=$! - wait $pid -fi - -tmux new-session -s music2 -n albums -d 'clerk_fzf --albums' -tmux new-window -t music2 -n tracks 'clerk_fzf --tracks' -tmux new-window -t music2 -n latest 'clerk_fzf --latest' -tmux new-window -t music2 -n playlists 'clerk_fzf --playlists' -tmux new-window -t music2 -n queue "${player}" - -tmux rename-session -t music music_old -tmux rename-session -t music2 music -tmux switchc -t music -tmux findw -t music ${screen} -tmux kill-session -t music_old - -if [[ $1 == "--create-caches" ]]; then - tmux kill-session -t notify -fi -} - -playlists () { - pls=( - "$(mpc lsplaylists)" - "---" - "Save current Queue as Playlist") - - - plsmenu="$(printf '%s\n' "${pls[@]}" | fzf --no-sort -m -e --reverse -i --ansi --bind "ctrl-a:select-all,ctrl-n:deselect-all")" - val=$? - if [[ $val -eq 130 ]]; then - playlists - fi - if [[ $plsmenu == "Save current Queue as Playlist" ]]; then - mpc save "$(date +'%Y-%m-%d_%H:%M:%S')" - tmux findw -t music queue - $(${script}) - else - playlistactions - fi -} - -playlistactions () { - menu_content=("Load Playlist" - "Append Playlist" - "Delete Playlist" - "Cancel") - - plmenu="$(printf '%s\n' "${menu_content[@]}" | fzf -m -e --reverse -i --ansi)" - - if [[ $val -eq 130 ]] - then - tmux findw -t playlists - fi - - case $plmenu in - "Load Playlist") - mpc clear > /dev/null; mpc load "${plsmenu}" > /dev/null; mpc play > /dev/null - tmux findw -t music queue - $(${script}) - ;; - "Add Playlist") - mpc load "${plsmenu}" > /dev/null - tmux findw -t music queue - $(${script}) - ;; - "Delete Playlist") - del_content=("Yes" - "No") - - delmenu="$(printf '%s\n' "${del_content[@]}" | fzf --reverse -i --ansi --header="Delete Playlist ${plsmenu}?")" - - case $delmenu in - "Yes") - mpc rm "${plsmenu}" - playlists - ;; - "No") - playlists - ;; - esac - ;; - "Cancel") - playlists - ;; - esac -} - -clerk_help () { - grep -A14 '^## Key Bindings' "${tmux_config}" | awk -F '-n ' '{ print $2 }' | \ - sed 's/clerk_fzf --//g; s/run-shell//g; s/findw//g; s/\x27//g; s/--quiet//g; s/mpc //g; s/clerk_update --create-caches/create caches/; s/_/ /g; s/kill-session -t music/ kill session/g; s/ /\t/g' | \ - sed 's/clerk update/update views/' | column -t -s $'\t' -} - - - -tmux_config="/etc/clerk/tmux.conf" - -# read global config -if [[ -f "/etc/clerk_fzf.conf" ]]; then - source /etc/clerk_fzf.conf -fi - -clerk_start () { -export TMUX_TMPDIR="/tmp/clerk/tmux" - -if [[ ! -d "${TMUX_TMPDIR}" ]]; then - mkdir -p "${TMUX_TMPDIR}" -fi -main -} - -main() { - tmux has-session -t music - if [ $? != 0 ]; then - tmux -f "${tmux_config}" new-session -s music -n albums -d 'clerk_fzf --albums' - tmux new-window -t music -n tracks 'clerk_fzf --tracks' - tmux new-window -t music -n latest 'clerk_fzf --latest' - tmux new-window -t music -n playlists 'clerk_fzf --playlists' - tmux new-window -t music -n queue "${player}" - fi - tmux attach -t music -} - -helpCmd () { - cat <<'EOF' -clerk: MPD Interface using fzf and tmux -Copyright © 2016 Rasmus Steinke - ---help, -h this help message ---kill kill running clerk sessions -EOF -} - -case $1 in - "--help | -h") helpCmd;; - "--kill") tmux kill-session -t music;; - "--albums") albums;; - "--tracks") tracks;; - "--latest") latest;; - "--random_album") playRandomAlbum;; - "--random_tracks") playRandomTracks;; - "--help") clerk_help;; - "--caches") updateCache;; - "--playlists") playlists;; - *) clerk_start -esac diff --git a/clerk_fzf/clerk_fzf.conf b/clerk_fzf/clerk_fzf.conf deleted file mode 100644 index 8188721..0000000 --- a/clerk_fzf/clerk_fzf.conf +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env bash - -# always use the provided tmux config to change values -# especially make sure, the Bindings section is complete -# tmux config to use -tmux_config="/etc/clerk/tmux.conf" - -# custom mpd host -mpd_host= -mpd_port= -mpd_password= - - -script="$0 $1" -random_artist="albumartist" -shuf=$([[ "$OSTYPE" == "darwin"* ]] && echo 'gshuf' || echo 'shuf') - -# number of tracks to add for random songs -value=20 - -# table customization -track_width="2" -title_width="40" -artist_width="50" -date_width="6" -pl_title_width="110" - -# album is much longer in order to keep filename off screen -album_width="200" - -# player used for queue -player=ncmpcpp - -# animate updates -animation=1 diff --git a/clerk_fzf/tmux.clerk b/clerk_fzf/tmux.clerk deleted file mode 100644 index 9081e2a..0000000 --- a/clerk_fzf/tmux.clerk +++ /dev/null @@ -1,54 +0,0 @@ -# Status bar -set-option -g status-position top -set -g status-interval 30 -set -g status-justify centre -set -g status-left-length 40 -set -g status-left '' -set -g status-right '' - - -# Colors -set -g status-bg colour235 -set -g status-fg default -setw -g window-status-current-bg default -setw -g window-status-current-fg default -setw -g window-status-current-attr dim -setw -g window-status-bg default -setw -g window-status-fg white -setw -g window-status-attr bright -setw -g window-status-format ' #[fg=colour243,bold]#W ' -setw -g window-status-current-format ' #[fg=yellow,bold]#[bg=colour235]#W ' - -# !Dont remove this keybinding header! (used to generate help) -## Key Bindings -bind-key -n F1 findw albums -bind-key -n F2 findw tracks -bind-key -n F3 findw latest -bind-key -n F4 findw playlists -bind-key -n F5 findw queue -bind-key -n C-F5 run-shell 'mpc prev --quiet' -bind-key -n C-F6 run-shell 'mpc toggle --quiet' -bind-key -n C-F7 run-shell 'mpc stop > /dev/null' -bind-key -n C-F8 run-shell 'mpc next --quiet' -bind-key -n C-F12 run-shell 'forceupdate="true" clerk_fzf --update' -bind-key -n F12 run-shell 'clerk_fzf --update' -bind-key -n F9 run-shell 'clerk_fzf --random_album' -bind-key -n F10 run-shell 'clerk_fzf --random_tracks' -bind-key -n C-h run-shell 'clerk_fzf --help' -bind-key -n C-q kill-session -t music - - -# tmux options -set -g set-titles on -set -g set-titles-string '#T' -set -g default-terminal "screen-256color" -setw -g mode-keys vi -set -sg escape-time 1 -set -g repeat-time 1000 -set -g base-index 1 -setw -g pane-base-index 1 -set -g renumber-windows on -unbind C-b -set -g prefix C-a -unbind C-p -bind C-p paste-buffer |