summaryrefslogtreecommitdiffstats
path: root/clerk_fzf
diff options
context:
space:
mode:
Diffstat (limited to 'clerk_fzf')
-rw-r--r--clerk_fzf/Makefile9
-rwxr-xr-xclerk_fzf/clerk_fzf381
-rw-r--r--clerk_fzf/clerk_fzf.conf35
-rw-r--r--clerk_fzf/tmux.clerk54
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