Recent lf stuff

This commit is contained in:
agryphus 2024-01-08 23:04:12 -05:00
parent 8a562d9452
commit 7bb1b1b533
4 changed files with 425 additions and 111 deletions

View file

@ -1,79 +1,358 @@
# Some of these icons contain a [] character after the emoji, since in my font, some are # vim:ft=conf
# one-wide while others are two-wide. There's probably a better solution to this somewhere
di 📁 # These examples require Nerd Fonts or a compatible font to be used.
fi 📃 # See https://www.nerdfonts.com for more information.
tw 🤝
ow 📂 # default values from lf (with matching order)
ln ⛓⠀ # ln l # LINK
or ❌ # or l # ORPHAN
ex 🎯 # tw t # STICKY_OTHER_WRITABLE
*.txt ✍⠀ # ow d # OTHER_WRITABLE
*.mom ✍⠀ # st t # STICKY
*.me ✍⠀ # di d # DIR
*.ms ✍⠀ # pi p # FIFO
*.avif 🖼⠀ # so s # SOCK
*.png 🖼⠀ # bd b # BLK
*.webp 🖼⠀ # cd c # CHR
*.ico 🖼⠀ # su u # SETUID
*.jpg 📸 # sg g # SETGID
*.jpe 📸 # ex x # EXEC
*.jpeg 📸 # fi - # FILE
*.gif 🖼⠀
*.svg 🗺⠀ # file types (with matching order)
*.tif 🖼⠀ ln  # LINK
*.tiff 🖼⠀ or  # ORPHAN
*.xcf 🖌⠀ tw t # STICKY_OTHER_WRITABLE
*.html 🌎 st t # STICKY
*.xml 📰 ow  # OTHER_WRITABLE
*.gpg 🔒 di  # DIR
*.css 🎨 # ow  # OTHER_WRITABLE
*.pdf 📚 # di  # DIR
*.djvu 📚 # ow 󰝰 # OTHER_WRITABLE
*.epub 📚 # di 󰝰 # DIR
*.csv 📓 pi p # FIFO
*.xlsx 📓 so 󰡂 # SOCK
*.tex 📜 bd b # BLK
*.md 📘 cd c # CHR
*.r 📊 su u # SETUID
*.R 📊 sg g # SETGID
*.rmd 📊 ex  # EXEC
*.Rmd 📊 fi  # FILE
*.m 📊
*.mp3 🎵 # file extensions (vim-devicons)
*.opus 🎵 *.styl 
*.ogg 🎵 *.sass 
*.m4a 🎵 *.scss 
*.flac 🎼 *.htm 
*.wav 🎼 *.html 
*.mkv 🎥 *.slim 
*.mp4 🎥 *.haml 
*.webm 🎥 *.ejs 
*.mpeg 🎥 *.css 
*.avi 🎥 *.less 
*.mov 🎥 *.md 
*.mpg 🎥 *.mdx 
*.wmv 🎥 *.markdown 
*.m4b 🎥 *.rmd 
*.flv 🎥 *.json 
*.zip 📦 *.webmanifest 
*.rar 📦 *.js 
*.7z 📦 *.mjs 
*.tar 📦 *.jsx 
*.z64 🎮 *.rb 
*.v64 🎮 *.gemspec 
*.n64 🎮 *.rake 
*.gba 🎮 *.php 
*.nes 🎮 *.py 
*.gdi 🎮 *.pyc 
*.1 *.pyo 
*.nfo *.pyd 
*.info *.coffee 
*.log 📙 *.mustache 
*.iso 📀 *.hbs 
*.img 📀 *.conf 
*.bib 🎓 *.ini 
*.ged 👪 *.yml 
*.part 💔 *.yaml 
*.torrent 🔽 *.toml 
*.jar ♨⠀ *.bat 
*.java ♨⠀ *.mk 
*.twig 
*.cpp 
*.c++ 
*.cxx 
*.cc 
*.cp 
*.c 
*.cs 󰌛
*.h 
*.hh 
*.hpp 
*.hxx 
*.hs 
*.lhs 
*.nix 
*.lua 
*.java 
*.sh 
*.fish 
*.bash 
*.zsh 
*.ksh 
*.csh 
*.awk 
*.ps1 
*.ml λ
*.mli λ
*.diff 
*.db 
*.sql 
*.dump 
*.clj 
*.cljc 
*.cljs 
*.edn 
*.scala 
*.go 
*.dart 
*.xul 
*.sln 
*.suo 
*.pl 
*.pm 
*.t 
*.rss 
'*.f#' 
*.fsscript 
*.fsx 
*.fs 
*.fsi 
*.rs 
*.rlib 
*.d 
*.erl 
*.hrl 
*.ex 
*.exs 
*.eex 
*.leex 
*.heex 
*.vim 
*.ai 
*.psd 
*.psb 
*.ts 
*.tsx 
*.jl 
*.pp 
*.vue 
*.elm 
*.swift 
*.xcplayground 
*.tex 󰙩
*.r 󰟔
*.rproj 󰗆
*.sol 󰡪
# file names (vim-devicons) (case-insensitive not supported in lf)
*gruntfile.coffee 
*gruntfile.js 
*gruntfile.ls 
*gulpfile.coffee 
*gulpfile.js 
*gulpfile.ls 
*mix.lock 
*dropbox 
*.ds_store 
*.gitconfig 
*.gitignore 
*.gitattributes 
*.gitlab-ci.yml 
*.bashrc 
*.zshrc 
*.zshenv 
*.zprofile 
*.vimrc 
*.gvimrc 
*_vimrc 
*_gvimrc 
*.bashprofile 
*favicon.ico 
*license 
*node_modules 
*react.jsx 
*procfile 
*dockerfile 
*docker-compose.yml 
*rakefile 
*config.ru 
*gemfile 
*makefile 
*cmakelists.txt 
*robots.txt 󰚩
# file names (case-sensitive adaptations)
*Gruntfile.coffee 
*Gruntfile.js 
*Gruntfile.ls 
*Gulpfile.coffee 
*Gulpfile.js 
*Gulpfile.ls 
*Dropbox 
*.DS_Store 
*LICENSE 
*React.jsx 
*Procfile 
*Dockerfile 
*Docker-compose.yml 
*Rakefile 
*Gemfile 
*Makefile 
*CMakeLists.txt 
# file patterns (vim-devicons) (patterns not supported in lf)
# .*jquery.*\.js$ 
# .*angular.*\.js$ 
# .*backbone.*\.js$ 
# .*require.*\.js$ 
# .*materialize.*\.js$ 
# .*materialize.*\.css$ 
# .*mootools.*\.js$ 
# .*vimrc.* 
# Vagrantfile$ 
# file patterns (file name adaptations)
*jquery.min.js 
*angular.min.js 
*backbone.min.js 
*require.min.js 
*materialize.min.js 
*materialize.min.css 
*mootools.min.js 
*vimrc 
Vagrantfile 
# archives or compressed (extensions from dircolors defaults)
*.tar 
*.tgz 
*.arc 
*.arj 
*.taz 
*.lha 
*.lz4 
*.lzh 
*.lzma 
*.tlz 
*.txz 
*.tzo 
*.t7z 
*.zip 
*.z 
*.dz 
*.gz 
*.lrz 
*.lz 
*.lzo 
*.xz 
*.zst 
*.tzst 
*.bz2 
*.bz 
*.tbz 
*.tbz2 
*.tz 
*.deb 
*.rpm 
*.jar 
*.war 
*.ear 
*.sar 
*.rar 
*.alz 
*.ace 
*.zoo 
*.cpio 
*.7z 
*.rz 
*.cab 
*.wim 
*.swm 
*.dwm 
*.esd 
# image formats (extensions from dircolors defaults)
*.gif  # Lossless
*.bmp 
*.png 
*.tiff 
*.webp 
*.jpg  # Lossy
*.jpeg 
*.mjpg 
*.mjpeg 
*.pbm 
*.pgm 
*.ppm 
*.tga 
*.xbm 
*.xpm 
*.tif 
*.svg 
*.svgz 
*.mng 
*.pcx 
# Video formats
*.mov 
*.mpg 
*.mpeg 
*.m2v 
*.mkv 
*.webm 
*.ogm 
*.mp4 
*.m4v 
*.mp4v 
*.vob 
*.qt 
*.nuv 
*.wmv 
*.asf 
*.rm 
*.rmvb 
*.flc 
*.avi 
*.fli 
*.flv 
*.gl 
*.dl 
*.xcf 
*.xwd 
*.yuv 
*.cgm 
*.emf 
*.ogv 
*.ogx 
# audio formats (extensions from dircolors defaults)
*.aac 
*.au 
*.flac 
*.m4a 
*.mid 
*.midi 
*.mka 
*.mp3 
*.mpc 
*.ogg 
*.ra 
*.wav 
*.oga 
*.opus 
*.spx 
*.xspf 
# other formats
*.pdf 
*.iso 
*.org 

View file

@ -1,6 +1,4 @@
#!/usr/bin/env fish #!/usr/bin/env zsh
# Not meant to actually be executable in fish, but it looks like lf config
# uses fish syntax, so the shebang helps treesitter highlighting properly
## LF VARS ## LF VARS
@ -14,6 +12,9 @@ set hiddenfiles ".*:*.aux:*.log:*.bbl:*.bcf:*.blg:*.run.xml"
set cleaner '~/.config/lf/cleaner' # Clear preview set cleaner '~/.config/lf/cleaner' # Clear preview
set previewer '~/.config/lf/previewer' # Make preview set previewer '~/.config/lf/previewer' # Make preview
set autoquit true set autoquit true
set cursorpreviewfmt "" # No cursor in the directory preview pane
# set cursoractivefmt "\033[1m"
set drawbox true
## MAPPINGS ## MAPPINGS
@ -41,11 +42,14 @@ map c push A<c-u> # new rename
map i :rename # before extension map i :rename # before extension
map I :rename; cmd-home # at the very beginning map I :rename; cmd-home # at the very beginning
map r drag-and-drop
# Fuzzy finding # Fuzzy finding
map <c-f> $lf -remote "send $id select \"$(fzf)\"" map <c-f> $lf -remote "send $id select \"$(fzf)\""
map F broot_jump map F broot_jump
map b set_bg map b set_bg one
map B set_bg all
## COMMAND DEFINITIONS ## COMMAND DEFINITIONS
@ -63,14 +67,22 @@ cmd delete ${{
}} }}
cmd set_bg ${{ cmd set_bg ${{
rm -f ~/.config/wallpaper
cp "$fx" ~/.config/wallpaper
if [ -z "$(pidof Hyprland)" ]; then if [ -z "$(pidof Hyprland)" ]; then
rm -f ~/.config/wallpaper
cp "$fx" ~/.config/wallpaper
feh --bg-fill --no-fehbg "$HOME/.config/wallpaper" feh --bg-fill --no-fehbg "$HOME/.config/wallpaper"
else exit
swww img "$HOME/.config/wallpaper"
fi fi
if [ "$1" = "all" ]; then
swww img "$fx"
else
output="$(slurp -o -f "%o")"
swww img "$fx" --outputs "$output"
fi
}}
cmd drag-and-drop ${{
GKD_BACKEND=11 setsid -f dragon "$fx" >/dev/null 2>&1
}} }}
cmd extract ${{ cmd extract ${{
@ -107,6 +119,18 @@ cmd open ${{
# Set $new_window based on arguments # Set $new_window based on arguments
[ ! -z $@ ] && [ "$@" = "new_window" ] && new_window=1 [ ! -z $@ ] && [ "$@" = "new_window" ] && new_window=1
function launch {
swallower="gobble"
[ -z "$WAYLAND_DISPLAY" ] && swallower="devour"
swallower="devour"
if [ ! -v new_window ]; then
$swallower "$@" >/dev/null 2>&1
else
setsid -f "$@" >/dev/null 2>&1
fi
}
case $(file --mime-type "$(readlink -f $f)" -b) in case $(file --mime-type "$(readlink -f $f)" -b) in
application/json|\ application/json|\
application/x-subrip|\ application/x-subrip|\
@ -118,23 +142,25 @@ cmd open ${{
|| ($EDITOR "$fx") || ($EDITOR "$fx")
;; ;;
audio/*|video/x-ms-asf) audio/*|video/x-ms-asf)
mpv --audio-display=no $f ;; launch mpv --audio-display=no "$f"
;;
video/*) video/*)
setsid -f mpv $f -quiet >/dev/null 2>&1 ;; launch mpv -quiet "$f"
;;
application/epub*|\ application/epub*|\
application/octet-stream|\ application/octet-stream|\
application/pdf|\ application/pdf|\
application/postscript|\ application/postscript|\
application/vnd.djvu|\ application/vnd.djvu|\
image/vnd.djvu) image/vnd.djvu)
setsid -f $([ ! -v new_window ] && echo devour) zathura $fx >/dev/null 2>&1 launch zathura "$fx"
;; ;;
image/*) image/*)
find . -maxdepth 1 -type f -exec file -i {} \; | find . -maxdepth 1 -type f -exec file -i {} \; |
grep -E 'image/.*' | grep -E 'image/.*' |
awk -F: '{ print substr($0, 1, length($0) - length($NF) - 1) }' | awk -F: '{ print substr($0, 1, length($0) - length($NF) - 1) }' |
rotdir $f | rotdir $f |
setsid -f $([ ! -v new_window ] && echo devour) nsxiv -aio 2>/dev/null | launch nsxiv -aio |
while read -r file; do while read -r file; do
[ -z "$file" ] && continue [ -z "$file" ] && continue
lf -remote "send select \"$file\"" lf -remote "send select \"$file\""
@ -156,12 +182,9 @@ cmd open ${{
application/vnd.openxmlformats-officedocument.presentationml.presentation|\ application/vnd.openxmlformats-officedocument.presentationml.presentation|\
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet|\ application/vnd.openxmlformats-officedocument.spreadsheetml.sheet|\
application/vnd.openxmlformats-officedocument.wordprocessingml.document) application/vnd.openxmlformats-officedocument.wordprocessingml.document)
setsid -f $([ ! -v new_window ] && echo devour) libreoffice $fx >/dev/null 2>&1 launch libreoffice "$fx"
;; ;;
*) *)
# test -v new_window \
# && () \
# || ()
;; ;;
esac esac
}} }}

View file

@ -1,42 +1,53 @@
#!/usr/bin/env sh #!/usr/bin/env sh
function sixel_compat() {
case "$TERM" in
"st-256color")
echo "y"
;;
*)
echo ""
;;
esac
}
image() { image() {
chafa -f sixel -s "$2x$3" --animate false "$1" chafa $([ -z "$(sixel_compat)" ] || echo "-f sixel") -s "$2x$3" --animate false "$1"
exit 1 exit 1
} }
CACHE="$HOME/.cache/lf/thumbnail.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | awk '{print $1}'))" CACHE="$HOME/.cache/lf/thumbnail.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | awk '{print $1}'))"
case "$(file --dereference --brief --mime-type -- "$1")" in case "$(file --dereference --brief --mime-type -- "$1")" in
image/*) image/*)
image "$1" "$2" "$3" "$4" "$5" "$1" image "$1" "$2" "$3" "$4" "$5" "$1"
;; ;;
application/json|\ application/json|\
text/*|\ text/*|\
*/xml) */xml)
bat -p --terminal-width "$(($4-2))" -f "$1" bat -p --terminal-width "$(($4-2))" -f "$1"
;; ;;
audio/*|\ audio/*|\
application/octet-stream) application/octet-stream)
mediainfo "$1" || exit 1 mediainfo "$1" || exit 1
;; ;;
video/* ) video/* )
CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)" CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
[ ! -f "$CACHE" ] && ffmpegthumbnailer -i "$1" -o "$CACHE" -s 0 [ ! -f "$CACHE" ] && ffmpegthumbnailer -i "$1" -o "$CACHE" -s 0
image "$CACHE" "$2" "$3" "$4" "$5" "$1" image "$CACHE" "$2" "$3" "$4" "$5" "$1"
;; ;;
*/pdf) */pdf)
CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)" CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
[ ! -f "$CACHE.jpg" ] && pdftoppm -jpeg -f 1 -singlefile "$1" "$CACHE" && convert "$CACHE.jpg" -negate "$CACHE.jpg" [ ! -f "$CACHE.jpg" ] && pdftoppm -jpeg -f 1 -singlefile "$1" "$CACHE" && convert "$CACHE.jpg" -negate "$CACHE.jpg"
image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1" image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1"
;; ;;
application/*zip) application/*zip)
atool --list -- "$1" atool --list -- "$1"
;; ;;
*opendocument*) *opendocument*)
odt2txt "$1" odt2txt "$1"
;; ;;
application/pgp-encrypted) gpg -d -- "$1" ;; application/pgp-encrypted) gpg -d -- "$1" ;;
*) *)
file -ibL "$1" | grep -q text && cat "$1" || file -Lb "$1" file -ibL "$1" | grep -q text && cat "$1" || file -Lb "$1"
;; ;;

View file

@ -20,6 +20,7 @@
poppler_utils # Provides pdftoppm, to turn pdfs into images poppler_utils # Provides pdftoppm, to turn pdfs into images
unrar-wrapper # Extract .rar files unrar-wrapper # Extract .rar files
xclip # Copy file name to clip xclip # Copy file name to clip
xdragon # Drag and drop utility
zathura # PDF viewer zathura # PDF viewer
]; ];
} }