From a66ef574bcb5601a101c2afe9b57de1cf3a52a63 Mon Sep 17 00:00:00 2001
From: Luca Bilke <luca@gmail.com>
Date: Sat, 6 Aug 2022 13:12:51 +0200
Subject: [PATCH] add some required scripts

---
 .local/bin/.keep     |  0
 .local/bin/shortcuts | 33 +++++++++++++++++++++++++++++++++
 .local/bin/vidthumb  | 38 ++++++++++++++++++++++++++++++++++++++
 3 files changed, 71 insertions(+)
 delete mode 100644 .local/bin/.keep
 create mode 100755 .local/bin/shortcuts
 create mode 100755 .local/bin/vidthumb

diff --git a/.local/bin/.keep b/.local/bin/.keep
deleted file mode 100644
index e69de29..0000000
diff --git a/.local/bin/shortcuts b/.local/bin/shortcuts
new file mode 100755
index 0000000..032388e
--- /dev/null
+++ b/.local/bin/shortcuts
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+bmdirs="${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs"
+bmfiles="${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-files"
+
+# Output locations. Unactivated progs should go to /dev/null.
+shell_shortcuts="${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc"
+zsh_named_dirs="${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc"
+lf_shortcuts="${XDG_CONFIG_HOME:-$HOME/.config}/lf/shortcutrc"
+ranger_shortcuts="/dev/null"
+qute_shortcuts="/dev/null"
+fish_shortcuts="/dev/null"
+vifm_shortcuts="/dev/null"
+
+# Remove, prepare files
+rm -f "$lf_shortcuts" "$ranger_shortcuts" "$qute_shortcuts" "$zsh_named_dirs" 2>/dev/null
+printf "# vim: filetype=sh\\n" > "$fish_shortcuts"
+printf "# vim: filetype=sh\\nalias " > "$shell_shortcuts"
+printf "\" vim: filetype=vim\\n" > "$vifm_shortcuts"
+
+# Format the `directories` file in the correct syntax and sent it to all three configs.
+eval "echo \"$(cat "$bmdirs")\"" | \
+awk "!/^\s*#/ && !/^\s*\$/ {gsub(\"\\\s*#.*$\",\"\");
+	printf(\"%s=\42cd %s && tput cuu1;tput el\42 \\\\\n\",\$1,\$2)             >> \"$shell_shortcuts\" ;
+	printf(\"hash -d %s=%s \n\",\$1,\$2)                  >> \"$zsh_named_dirs\"  ;
+	printf(\"map C%s cd \42%s\42 \n\",\$1,\$2)            >> \"$lf_shortcuts\" }"
+
+# Format the `files` file in the correct syntax and sent it to both configs.
+eval "echo \"$(cat "$bmfiles")\"" | \
+awk "!/^\s*#/ && !/^\s*\$/ {gsub(\"\\\s*#.*$\",\"\");
+	printf(\"%s=\42\$EDITOR %s\42 \\\\\n\",\$1,\$2)       >> \"$shell_shortcuts\" ;
+	printf(\"hash -d %s=%s \n\",\$1,\$2)                  >> \"$zsh_named_dirs\"  ;
+	printf(\"map E%s \$\$EDITOR \42%s\42 \n\",\$1,\$2)    >> \"$lf_shortcuts\" }"
diff --git a/.local/bin/vidthumb b/.local/bin/vidthumb
new file mode 100755
index 0000000..72143d0
--- /dev/null
+++ b/.local/bin/vidthumb
@@ -0,0 +1,38 @@
+#!/usr/bin/env bash
+# Script to generate thumbnails for lf
+
+if ! [ -f "$1" ]; then
+	exit 1
+fi
+
+cache="${XDG_CACHE_HOME:-$HOME/.cache}/lf"
+index="$cache/index.json"
+movie="$(realpath "$1")"
+
+mkdir -p "$cache"
+
+if [ -f "$index" ]; then
+	thumbnail="$(jq -r ". \"$movie\"" <"$index")"
+	if [[ "$thumbnail" != "null" ]]; then
+		if [[ ! -f "$cache/$thumbnail" ]]; then
+			exit 1
+		fi
+		echo "$cache/$thumbnail"
+		exit 0
+	fi
+fi
+
+thumbnail="$(uuidgen).jpg"
+
+if ! ffmpegthumbnailer -i "$movie" -o "$cache/$thumbnail" -s 0 2>/dev/null; then
+	exit 1
+fi
+
+if [[ ! -f "$index" ]]; then
+	echo "{\"$movie\": \"$thumbnail\"}" >"$index"
+fi
+json="$(jq -r --arg "$movie" "$thumbnail" ". + {\"$movie\": \"$thumbnail\"}" <"$index")"
+echo "$json" >"$index"
+
+echo "$cache/$thumbnail"
+