move lf configuration and use upstream

This commit is contained in:
Tristan 2024-01-05 22:02:50 +00:00
parent 67cb4995f9
commit f3685dcbf5
5 changed files with 156 additions and 165 deletions

View file

@ -0,0 +1,22 @@
old="$(mktemp)"
new="$(mktemp)"
if [ -n "$fs" ]; then
fs="$(basename -a $fs)"
else
fs="$(ls)"
fi
printf '%s\n' "$fs" >"$old"
printf '%s\n' "$fs" >"$new"
$EDITOR "$new"
[ "$(wc -l < "$new")" -ne "$(wc -l < "$old")" ] && exit
paste "$old" "$new" | while IFS= read -r names; do
src="$(printf '%s' "$names" | cut -f1)"
dst="$(printf '%s' "$names" | cut -f2)"
if [ "$src" = "$dst" ] || [ -e "$dst" ]; then
continue
fi
mv -- "$src" "$dst"
done
rm -- "$old" "$new"
lf -remote "send $id unselect"

View file

@ -0,0 +1,49 @@
{pkgs, ...}: let
readScript = path: '' ''${{
${builtins.readFile path}
}}'';
in {
home.packages = with pkgs; [
# previewer
chafa
exiftool
bat
ffmpegthumbnailer
trash-cli
imagemagick
gnumeric
poppler_utils
odt2txt
python311Packages.docx2txt
catdoc
libcdio
p7zip
file
gnome-epub-thumbnailer
];
programs.lf.enable = true;
programs.lf.keybindings = {
D = "trash";
R = "drag";
"<f-2>" = ":rename";
"<enter>" = "open-with";
};
programs.lf.extraConfig = ''
set sixel true
'';
programs.lf.commands = {
drag = "%${pkgs.ripdrag}/bin/ripdrag -x \"$fx\"";
trash = "%trash-put \"$fx\"";
open = "$set -f; ${pkgs.ranger}/bin/rifle -p 0 \"$fx\"";
open-with = '' ''${{
set -f
${pkgs.ranger}/bin/rifle -l "$fx"
read -p "Open with: " method
${pkgs.ranger}/bin/rifle -p "$method" "$fx"
}}'';
bulk-rename = readScript ./bulk-rename.sh;
};
programs.lf.previewer.source = ./preview.sh;
}

83
home/programs/lf/preview.sh Executable file
View file

@ -0,0 +1,83 @@
#!/bin/sh
HASH=$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | md5sum $1 | cut -f 1 -d " ")
CACHEDIR=/tmp/lf/thumbnail/
mkdir -p $CACHEDIR
CACHE=$CACHEDIR/$HASH
image () {
[ ! -f "$CACHE" ] && \
chafa -f sixel -s "$2x$3" --animate off --polite on "$1" > "$CACHE"
cat "$CACHE"
}
case "$(file -Lb --mime-type -- "$1")" in
image/*)
image $@
exit 1
;;
text/*)
bat "$1"
;;
application/pdf)
[ ! -f "$CACHE.jpeg" ] && \
pdftoppm -jpeg -f 1 -singlefile "$1" "$CACHE.jpeg"
image "$CACHE.jpeg" "$2" "$3" "$4" "$5"
;;
*)
exiftool "$1"
;;
esac
exit
case "$(printf "%s\n" "$(readlink -f "$1")" | awk '{print tolower($0)}')" in
*.tgz|*.tar.gz) tar tzf "$1" ;;
*.tar.bz2|*.tbz2) tar tjf "$1" ;;
*.tar.txz|*.txz) xz --list "$1" ;;
*.tar) tar tf "$1" ;;
*.zip|*.jar|*.war|*.ear|*.oxt) unzip -l "$1" ;;
*.md) glow -s dark "$1" ;;
*.7z) 7z l "$1" ;;
*.[1-8]) man "$1" | col -b ;;
*.o) nm "$1";;
*.torrent) transmission-show "$1" ;;
*.iso) iso-info --no-header -l "$1" ;;
*.odt|*.ods|*.odp|*.sxw) odt2txt "$1" ;;
*.doc) catdoc "$1" ;;
*.docx) docx2txt "$1" - ;;
*.xml|*.html) w3m -dump "$1";;
*.xls|*.xlsx)
ssconvert --export-type=Gnumeric_stf:stf_csv "$1" "fd://1"
;;
*.wav|*.mp3|*.flac|*.m4a|*.wma|*.ape|*.ac3|*.og[agx]|*.spx|*.opus|*.as[fx]|*.mka)
exiftool "$1"
;;
*.pdf)
[ ! -f "$CACHE.jpg" ] && \
pdftoppm -jpeg -f 1 -singlefile "$1" "$CACHE"
image "$CACHE.jpg" "$2" "$3" "$4" "$5"
;;
*.epub)
[ ! -f "$CACHE" ] && \
epub-thumbnailer "$1" "$CACHE" 1024
image "$CACHE" "$2" "$3" "$4" "$5"
;;
*.avi|*.mp4|*.wmv|*.dat|*.3gp|*.ogv|*.mkv|*.mpg|*.mpeg|*.vob|*.fl[icv]|*.m2v|*.mov|*.webm|*.ts|*.mts|*.m4v|*.r[am]|*.qt|*.divx)
[ ! -f "$CACHE.jpg" ] && \
ffmpegthumbnailer -i "$1" -o "$CACHE.jpg" -s 0 -q 5
image "$CACHE.jpg" "$2" "$3" "$4" "$5"
;;
*.bmp|*.jpg|*.jpeg|*.png|*.xpm|*.webp|*.jfif)
image "$1" "$2" "$3" "$4" "$5"
;;
*.svg)
[ ! -f "$CACHE.jpg" ] && \
convert "$1" "$CACHE.jpg"
image "$CACHE.jpg" "$2" "$3" "$4" "$5"
;;
*)
cat "$1"
;;
esac