Fix LF previewer

This commit is contained in:
Filippo Berto 2023-09-18 11:56:57 +02:00
parent b56563cf07
commit 0c9bdf42ec
No known key found for this signature in database
GPG key ID: FE98AE5EC52B1056

View file

@ -1,13 +1,9 @@
{ pkgs, ... }: { pkgs, ... }:
let let
cleaner = pkgs.writeShellScript "cleaner" '' cleaner = pkgs.writeShellScript "cleaner" ''
file=$1 kitty +kitten icat --clear --stdin no --silent --transfer-mode file < /dev/null > /dev/tty
case $TERM in
xterm-kitty ) kitty +icat --clear --silent --transfer-mode $file; ;;
* ) exit 0 ;;
esac
''; '';
previewer = pkgs.writeShellScript "previewer" '' previewer = pkgs.writeShellScript "previewer" ''
file=$1 file=$1
w=$2 w=$2
@ -15,10 +11,44 @@ let
x=$4 x=$4
y=$5 y=$5
case $TERM in preview() {
xterm-kitty ) kitty +icat --silent --transfer-mode file --place "''${w}x''${h}@''${x}x''${y}" "$file"; ;; kitty +kitten icat --silent --stdin no --transfer-mode file --place "''${w}x''${h}@''${x}x''${y}" "$1" < /dev/null > /dev/tty
* ) ${pkgs.pistol}/bin/pistol "$file"; ;; }
TEMPDIR=~/.cache/lf
file="$1"; shift
case "$(basename "$file" | tr '[A-Z]' '[a-z]')" in
*.tar*) tar tf "$file" ;;
*.zip) unzip -l "$file" ;;
*.rar) unrar l "$file" ;;
*.7z) 7z l "$file" ;;
*.avi|*.mp4|*.mkv)
thumbnail="$TEMPDIR/thumbnail.png"
ffmpeg -y -i "$file" -vframes 1 "$thumbnail"
preview "$thumbnail"
;;
*.pdf)
thumbnail="$TEMPDIR/thumbnail.png"
gs -o "$thumbnail" -sDEVICE=pngalpha -dLastPage=1 "$file" >/dev/null
preview "$thumbnail"
;;
*.jpg|*.jpeg|*.png|*.bmp)
preview "$file"
;;
*.ttf|*.otf|*.woff)
thumbnail="$TEMPDIR/thumbnail.png"
fontpreview -i "$file" -o "$thumbnail"
preview "$thumbnail"
;;
*.svg)
thumbnail="$TEMPDIR/thumbnail.png"
convert "$file" "$thumbnail"
preview "$thumbnail"
;;
*) lf_bat_preview "$file" ;;
esac esac
return 127 # nonzero retcode required for lf previews to reload
''; '';
in in
{ {
@ -31,6 +61,7 @@ in
number = true; number = true;
# scrollof = 3; # scrollof = 3;
hidden = true; hidden = true;
ignorecase = true;
tabstop = 2; tabstop = 2;
}; };
previewer = { previewer = {
@ -39,28 +70,53 @@ in
}; };
keybindings = { "<c-f>" = "$EDITOR $(fzf)"; }; keybindings = { "<c-f>" = "$EDITOR $(fzf)"; };
commands = { commands = {
"z" = '' mkdir = ''''${{
''${{ printf "Directory name: "
result="$(zoxide query --exclude "$PWD" -- "$@")" read ans
lf -remote "send $id cd '$result'" mkdir $ans
}}''; }}'';
"zi" = '' mkfile = ''''${{
''${{ printf "File name: "
result="$(zoxide query -i -- "$@")" read ans
lf -remote "send $id cd '$result'" $VISUAL $ans
}}''; }}'';
"extract" = ''
''${{ trash = ''''${{
set -f files=$(printf "$fx" | tr '\n' ';')
case $f in while [ "$files" ]; do
*.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf $f;; file=''${files%%;*}
*.tar.gz|*.tgz) tar xzvf $f;;
*.tar.xz|*.txz) tar xJvf $f;; ${pkgs.trash-cli}/bin/trash-put "$(basename "$file")"
*.zip) unzip $f;; if [ "$files" = "$file" ]; then
*.rar) unrar x $f;; files=""
*.7z) 7z x $f;; else
esac files="''${files#*;}"
}}''; fi
done
}}'';
restore_trash = ''''${{
trash-restore
}}'';
z = ''''${{
result="$(zoxide query --exclude "$PWD" -- "$@")"
lf -remote "send $id cd '$result'"
}}'';
zi = ''''${{
result="$(zoxide query -i -- "$@")"
lf -remote "send $id cd '$result'"
}}'';
extract = ''''${{
set -f
case $f in
*.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf $f;;
*.tar.gz|*.tgz) tar xzvf $f;;
*.tar.xz|*.txz) tar xJvf $f;;
*.zip) unzip $f;;
*.rar) unrar x $f;;
*.7z) 7z x $f;;
esac
}}'';
"tar" = '' "tar" = ''
''${{ ''${{
set -f set -f