diff --git a/.config/lf/icons b/.config/lf/icons index 74588f4..edbe36c 100644 --- a/.config/lf/icons +++ b/.config/lf/icons @@ -1,79 +1,358 @@ -# Some of these icons contain a [โ €] character after the emoji, since in my font, some are -# one-wide while others are two-wide. There's probably a better solution to this somewhere -di ๐Ÿ“ -fi ๐Ÿ“ƒ -tw ๐Ÿค -ow ๐Ÿ“‚ -ln โ›“โ € -or โŒ -ex ๐ŸŽฏ -*.txt โœโ € -*.mom โœโ € -*.me โœโ € -*.ms โœโ € -*.avif ๐Ÿ–ผโ € -*.png ๐Ÿ–ผโ € -*.webp ๐Ÿ–ผโ € -*.ico ๐Ÿ–ผโ € -*.jpg ๐Ÿ“ธ -*.jpe ๐Ÿ“ธ -*.jpeg ๐Ÿ“ธ -*.gif ๐Ÿ–ผโ € -*.svg ๐Ÿ—บโ € -*.tif ๐Ÿ–ผโ € -*.tiff ๐Ÿ–ผโ € -*.xcf ๐Ÿ–Œโ € -*.html ๐ŸŒŽ -*.xml ๐Ÿ“ฐ -*.gpg ๐Ÿ”’ -*.css ๐ŸŽจ -*.pdf ๐Ÿ“š -*.djvu ๐Ÿ“š -*.epub ๐Ÿ“š -*.csv ๐Ÿ““ -*.xlsx ๐Ÿ““ -*.tex ๐Ÿ“œ -*.md ๐Ÿ“˜ -*.r ๐Ÿ“Š -*.R ๐Ÿ“Š -*.rmd ๐Ÿ“Š -*.Rmd ๐Ÿ“Š -*.m ๐Ÿ“Š -*.mp3 ๐ŸŽต -*.opus ๐ŸŽต -*.ogg ๐ŸŽต -*.m4a ๐ŸŽต -*.flac ๐ŸŽผ -*.wav ๐ŸŽผ -*.mkv ๐ŸŽฅ -*.mp4 ๐ŸŽฅ -*.webm ๐ŸŽฅ -*.mpeg ๐ŸŽฅ -*.avi ๐ŸŽฅ -*.mov ๐ŸŽฅ -*.mpg ๐ŸŽฅ -*.wmv ๐ŸŽฅ -*.m4b ๐ŸŽฅ -*.flv ๐ŸŽฅ -*.zip ๐Ÿ“ฆ -*.rar ๐Ÿ“ฆ -*.7z ๐Ÿ“ฆ -*.tar ๐Ÿ“ฆ -*.z64 ๐ŸŽฎ -*.v64 ๐ŸŽฎ -*.n64 ๐ŸŽฎ -*.gba ๐ŸŽฎ -*.nes ๐ŸŽฎ -*.gdi ๐ŸŽฎ -*.1 โ„นโ € -*.nfo โ„นโ € -*.info โ„นโ € -*.log ๐Ÿ“™ -*.iso ๐Ÿ“€ -*.img ๐Ÿ“€ -*.bib ๐ŸŽ“ -*.ged ๐Ÿ‘ช -*.part ๐Ÿ’” -*.torrent ๐Ÿ”ฝ -*.jar โ™จโ € -*.java โ™จโ € +# vim:ft=conf + +# These examples require Nerd Fonts or a compatible font to be used. +# See https://www.nerdfonts.com for more information. + +# default values from lf (with matching order) +# ln l # LINK +# or l # ORPHAN +# tw t # STICKY_OTHER_WRITABLE +# ow d # OTHER_WRITABLE +# st t # STICKY +# di d # DIR +# pi p # FIFO +# so s # SOCK +# bd b # BLK +# cd c # CHR +# su u # SETUID +# sg g # SETGID +# ex x # EXEC +# fi - # FILE + +# file types (with matching order) +ln ๏’‚ # LINK +or ๏’‚ # ORPHAN +tw t # STICKY_OTHER_WRITABLE +st t # STICKY +ow ๏“” # OTHER_WRITABLE +di ๏“” # DIR +# ow ๏ป # OTHER_WRITABLE +# di ๏ป # DIR +# ow ๓ฐฐ # OTHER_WRITABLE +# di ๓ฐฐ # DIR +pi p # FIFO +so ๓ฐก‚ # SOCK +bd b # BLK +cd c # CHR +su u # SETUID +sg g # SETGID +ex ๎ฏ† # EXEC +fi ๏€– # FILE + +# file extensions (vim-devicons) +*.styl ๎˜€ +*.sass ๎˜ƒ +*.scss ๎˜ƒ +*.htm ๎˜Ž +*.html ๎˜Ž +*.slim ๎˜Ž +*.haml ๎˜Ž +*.ejs ๎˜Ž +*.css ๎˜‹ +*.less ๎˜” +*.md ๎˜‰ +*.mdx ๎˜‰ +*.markdown ๎˜‰ +*.rmd ๎˜‰ +*.json ๎˜‹ +*.webmanifest ๎˜‹ +*.js ๎˜Œ +*.mjs ๎˜Œ +*.jsx ๎žบ +*.rb ๎ž‘ +*.gemspec ๎ž‘ +*.rake ๎ž‘ +*.php ๎˜ˆ +*.py ๎˜† +*.pyc ๎˜† +*.pyo ๎˜† +*.pyd ๎˜† +*.coffee ๎˜› +*.mustache ๎˜ +*.hbs ๎˜ +*.conf ๎˜• +*.ini ๎˜• +*.yml ๎˜• +*.yaml ๎˜• +*.toml ๎˜• +*.bat ๎˜• +*.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 ๎˜ฒ diff --git a/.config/lf/lfrc b/.config/lf/lfrc index 7c87da8..5572479 100644 --- a/.config/lf/lfrc +++ b/.config/lf/lfrc @@ -1,6 +1,4 @@ -#!/usr/bin/env fish -# Not meant to actually be executable in fish, but it looks like lf config -# uses fish syntax, so the shebang helps treesitter highlighting properly +#!/usr/bin/env zsh ## LF VARS @@ -14,6 +12,9 @@ set hiddenfiles ".*:*.aux:*.log:*.bbl:*.bcf:*.blg:*.run.xml" set cleaner '~/.config/lf/cleaner' # Clear preview set previewer '~/.config/lf/previewer' # Make preview set autoquit true +set cursorpreviewfmt "" # No cursor in the directory preview pane +# set cursoractivefmt "\033[1m" +set drawbox true ## MAPPINGS @@ -41,11 +42,14 @@ map c push A # new rename map i :rename # before extension map I :rename; cmd-home # at the very beginning +map r drag-and-drop + # Fuzzy finding map $lf -remote "send $id select \"$(fzf)\"" map F broot_jump -map b set_bg +map b set_bg one +map B set_bg all ## COMMAND DEFINITIONS @@ -63,14 +67,22 @@ cmd delete ${{ }} cmd set_bg ${{ - rm -f ~/.config/wallpaper - cp "$fx" ~/.config/wallpaper if [ -z "$(pidof Hyprland)" ]; then + rm -f ~/.config/wallpaper + cp "$fx" ~/.config/wallpaper feh --bg-fill --no-fehbg "$HOME/.config/wallpaper" + exit + fi + if [ "$1" = "all" ]; then + swww img "$fx" else - swww img "$HOME/.config/wallpaper" + 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 ${{ @@ -107,6 +119,18 @@ cmd open ${{ # Set $new_window based on arguments [ ! -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 application/json|\ application/x-subrip|\ @@ -118,23 +142,25 @@ cmd open ${{ || ($EDITOR "$fx") ;; audio/*|video/x-ms-asf) - mpv --audio-display=no $f ;; + launch mpv --audio-display=no "$f" + ;; video/*) - setsid -f mpv $f -quiet >/dev/null 2>&1 ;; + launch mpv -quiet "$f" + ;; application/epub*|\ application/octet-stream|\ application/pdf|\ application/postscript|\ application/vnd.djvu|\ image/vnd.djvu) - setsid -f $([ ! -v new_window ] && echo devour) zathura $fx >/dev/null 2>&1 + launch zathura "$fx" ;; image/*) find . -maxdepth 1 -type f -exec file -i {} \; | grep -E 'image/.*' | awk -F: '{ print substr($0, 1, length($0) - length($NF) - 1) }' | rotdir $f | - setsid -f $([ ! -v new_window ] && echo devour) nsxiv -aio 2>/dev/null | + launch nsxiv -aio | while read -r file; do [ -z "$file" ] && continue lf -remote "send select \"$file\"" @@ -156,12 +182,9 @@ cmd open ${{ application/vnd.openxmlformats-officedocument.presentationml.presentation|\ application/vnd.openxmlformats-officedocument.spreadsheetml.sheet|\ 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 }} diff --git a/.config/lf/previewer b/.config/lf/previewer index d61bf45..758b838 100755 --- a/.config/lf/previewer +++ b/.config/lf/previewer @@ -1,42 +1,53 @@ #!/usr/bin/env sh +function sixel_compat() { + case "$TERM" in + "st-256color") + echo "y" + ;; + *) + echo "" + ;; + esac +} + 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 } 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 - image/*) + image/*) image "$1" "$2" "$3" "$4" "$5" "$1" ;; application/json|\ - text/*|\ + text/*|\ */xml) bat -p --terminal-width "$(($4-2))" -f "$1" ;; - audio/*|\ + audio/*|\ application/octet-stream) mediainfo "$1" || exit 1 ;; - 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)" - [ ! -f "$CACHE" ] && ffmpegthumbnailer -i "$1" -o "$CACHE" -s 0 - image "$CACHE" "$2" "$3" "$4" "$5" "$1" - ;; - */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)" - [ ! -f "$CACHE.jpg" ] && pdftoppm -jpeg -f 1 -singlefile "$1" "$CACHE" && convert "$CACHE.jpg" -negate "$CACHE.jpg" - image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1" - ;; - application/*zip) + 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)" + [ ! -f "$CACHE" ] && ffmpegthumbnailer -i "$1" -o "$CACHE" -s 0 + image "$CACHE" "$2" "$3" "$4" "$5" "$1" + ;; + */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)" + [ ! -f "$CACHE.jpg" ] && pdftoppm -jpeg -f 1 -singlefile "$1" "$CACHE" && convert "$CACHE.jpg" -negate "$CACHE.jpg" + image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1" + ;; + application/*zip) atool --list -- "$1" ;; - *opendocument*) + *opendocument*) 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" ;; diff --git a/.config/nixos/profiles/lf.nix b/.config/nixos/profiles/lf.nix index 133a674..2205764 100644 --- a/.config/nixos/profiles/lf.nix +++ b/.config/nixos/profiles/lf.nix @@ -20,6 +20,7 @@ poppler_utils # Provides pdftoppm, to turn pdfs into images unrar-wrapper # Extract .rar files xclip # Copy file name to clip + xdragon # Drag and drop utility zathura # PDF viewer ]; }