Ez egy ilyen időszak, és persze ismétlés a dudás anyja, vagy valami ilyesmi...
Szóval a második kedvenc fájlkezelőmnél (Vifm ruleZZZ!), az lf-nél is újragondolás van! A legfőbb ok, hogy a (egyébként zseni) ctpv előnézeti eszközhöz a fejlesztője évek óta nem igazán nyúl, és kezd meggyűlni a baja az újkori protokollokkal (pl. Wayland), így sajnos el kellett engednem...
Innentől igazi lf mókerré kellett válnom, és az egész koncepciót manuálisan összeütött konfigurációra építeni; vége a kényelmes Nikita majd megoldja helyettünk korszaknak...
Nyilván innentől kompromisszumos a dolog, pl. hogy ne keljen az összes terminál típusra külön képelőnézeti szkriptet kiagyalni, maradt öreg barátunk a chafa, kicsit darabos, kicsit kockás, de legalább a mienk, és mindegy neki milyen terminál van alatta (és a cleaner szkript nélkül is jól elvan).

De az eltelt időt nem töltöttem tétlenül, pár dologban kiokosodtam, van fejlődés is! Barátunk a denevér, vagyis a bat (mindnképpen telepítsük), a szöveges előnézeteket felturbóztam vele, az fzf integráció is fejlődött, mint ahogy a másoláskor felülírást végző rész apróbb problémái is javításra kerültek (köszi Skynet), és került bele egy tömeges átnevezést végző szakasz is (szerkesztőben megnyíló módszer, Vim, Kakoune használata erősen javasolt). Természetesen a konfig is tisztogatáson, csinosítgatáson esett át.
Fontos (!), mivel lusta vagyok felsorolni (és nem biztos hogy mindenki ezeket szereti, de bat, fd, chafa és trash-cli kell!), alaposan nézzétek át a konfigot és a preview szkriptet, és telepítsétek a hivatkozott alkalmazásokat, vagy az általatok kedvelt alternatívákat!

A konfigurációs állomány (~/.config/lf/lfrc):
# =========================
# ALAP BEÁLLÍTÁSOK
# =========================
set shell sh
set shellopts '-eu'
set hidden true
set number true
#set relativenumber true
set cursorpreviewfmt "\033[7m"
set icons true
set drawbox true
set ignorecase true
set smartcase true
set incsearch true
set preview true
set info size:time
set ratios 1:2:3
set mouse true
# =========================
# ELŐNÉZETI SZKRIPT
# =========================
#set cleaner ~/.config/lf/cleaner
set previewer ~/.config/lf/preview
# =========================
# BILLENTYŰK
# =========================
# funkció törlés
map y
map d
map m
map gh cd ~
map gp cd ~/Adatok/Pontfájlok/
map gc cd ~/.config/
map <c-u> half-up
map <c-d> half-down
map zh set hidden!
map <f-4> $kak $f
map <f-3> $most $f
# =========================
# FÁJL MŰVELETEK
# =========================
# mkdir
map <f-7> push %mkdir<space>
map md push %mkdir<space>
# MC szerű
map <f-5> copy
map yy copy
map <f-6> cut
map dd cut
map <f-9> paste
map <f-8> delete
map DD delete
map <delete> delete
map <f-2> rename
# =========================
# ARCHÍVUMOK
# =========================
cmd extract ${{
case "$f" in
*.tar.bz2) tar xjf "$f" ;;
*.tar.gz) tar xzf "$f" ;;
*.bz2) bunzip2 "$f" ;;
*.rar) unrar x "$f" ;;
*.gz) gunzip "$f" ;;
*.tar) tar xf "$f" ;;
*.tbz2) tar xjf "$f" ;;
*.tgz) tar xzf "$f" ;;
*.zip) unzip "$f" ;;
*.7z) 7z x "$f" ;;
esac
}}
map E extract
# =========================
# FZF INTEGRÁCIÓ
# =========================
cmd fzf ${{
file="$(
fd --hidden --exclude .git |
fzf --preview 'bat --color=always {}'
)"
if [ -n "$file" ]; then
lf -remote "send $id cd \"$(dirname "$file")\""
lf -remote "send $id select \"$(basename "$file")\""
fi
}}
map F fzf
# =========================
# GYORS ELŐNÉZET
# =========================
map zp set preview!
# =========================
# RENDEZÉS
# =========================
map sn set sortby natural
map ss set sortby size
map st set sortby time
# =========================
# VÁGÓLAP WAYLAND
# =========================
map Y %printf "%s" "$f" | wl-copy
# =========================
# KUKA
# =========================
cmd trash %trash-put "$fx"
map T trash
# =========================
# ZIP
# =========================
cmd zip ${{
printf "archive name: "
read ans
zip -r "$ans.zip" $fx
}}
map Z zip
# =========================
# KONFIG BETÖLTÉS
# =========================
map C source ~/.config/lf/lfrc
# =========================
# KILÉPÉS
# =========================
map Q quit
# =========================
# TÖMEGES ÁTNEVEZÉS
# =========================
cmd bulkrename ${{
old="$(mktemp)"
new="$(mktemp)"
if [ -n "$fs" ]; then
printf '%s\n' "$fs" | while IFS= read -r f; do
basename "$f"
done > "$old"
else
find . -maxdepth 1 -mindepth 1 -printf '%P\n' > "$old"
fi
cp "$old" "$new"
kak "$new"
[ "$(wc -l < "$old")" -ne "$(wc -l < "$new")" ] && {
rm -f "$old" "$new"
exit 1
}
paste "$old" "$new" |
while IFS="$(printf '\t')" read -r src dst; do
[ "$src" = "$dst" ] && continue
[ -e "$dst" ] && continue
mv -- "$src" "$dst"
done
rm -f "$old" "$new"
lf -remote "send $id reload"
}}
# =========================
# FELÜLÍRÁS
# =========================
cmd overwrite ${{
mode="$(head -1 ~/.local/share/lf/files)"
tail -n +2 ~/.local/share/lf/files | while IFS= read -r file; do
case "$mode" in
copy)
rsync -a "$file" ./
;;
move)
rsync -a --remove-source-files "$file" ./
;;
esac
done
lf -remote "send $id load"
lf -remote "send $id echo done"
}}
map P overwrite
# =========================
# KÜLSŐ PROGRAMOK
# =========================
cmd open ${{
mime="$(file --mime-type -Lb "$f")"
case "$(basename "$f")" in
# markdown
*.md)
marker "$f" >/dev/null 2>&1 &
;;
# media
*.png|*.jpg|*.jpeg|*.gif|*.webp)
imv "$f" >/dev/null 2>&1 &
;;
*.mp4|*.mkv|*.webm|*.avi)
mpv "$f" >/dev/null 2>&1 &
;;
*.mp3|*.flac|*.ogg)
mpv "$f" >/dev/null 2>&1 &
;;
*.pdf)
zathura "$f" >/dev/null 2>&1 &
;;
*.html)
firefox "$f" >/dev/null 2>&1 &
;;
# dotfiles
.*)
kak "$f"
;;
*)
case "$mime" in
text/*|*/xml|application/json)
kak "$f"
;;
*)
xdg-open "$f" >/dev/null 2>&1 &
;;
esac
;;
esac
}}
map o open
map <enter> openAz előnézeti szkript (~/.config/lf/preview):
#!/bin/sh
file="$1"
w="$2"
h="$3"
mime=$(file --mime-type -Lb "$file")
# thumbnail cache
cache="/tmp/lf-preview"
mkdir -p "$cache"
preview_image() {
chafa \
--format symbols \
--symbols block+border \
--fill block \
--size "${w}x${h}" \
"$1"
}
case "$mime" in
image/*)
preview_image "$file"
;;
application/pdf)
pdftotext \
-l 10 \
"$file" - 2>/dev/null | \
bat \
--language=txt \
--style=plain \
--color=always
;;
video/*)
thumb="$cache/$(basename "$file").jpg"
if [ ! -f "$thumb" ]; then
ffmpegthumbnailer \
-i "$file" \
-o "$thumb" \
-s 0 >/dev/null 2>&1
fi
preview_image "$thumb"
;;
text/*)
bat --color=always "$file"
;;
*)
file "$file"
;;
esacAz lf nagy kedvenc, úgy alakítgatod ahogy csak akarod, tényleg nincs lehetetlen, csak idő és türelem legyen hozzá elég!
Első felvonás: https://linuxmint.hu/blog/2025/10/lf-fajlkezelo-kedvcsinalo
Berus
