Lf második felvonás

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

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 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> open

Az 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"
        ;;
esac

Az lf nagy kedvenc, úgy alakítgatod ahogy csak akarod, tényleg nincs lehetetlen, csak idő és türelem legyen elég!

Első felvonás: https://linuxmint.hu/blog/2025/10/lf-fajlkezelo-kedvcsinalo

Berus