From ae11e0c3e8566c1c0690cc4fca3f3280e0bf2bbc Mon Sep 17 00:00:00 2001 From: Andre Ramnitz Date: Fri, 23 Aug 2024 00:24:09 +0200 Subject: [PATCH] lf: update config --- config/lf/lfrc | 111 ++++++++++++++++++++++++++++++++--------- config/lf/previewer.sh | 2 +- 2 files changed, 88 insertions(+), 25 deletions(-) diff --git a/config/lf/lfrc b/config/lf/lfrc index c90c1c38..9017966e 100644 --- a/config/lf/lfrc +++ b/config/lf/lfrc @@ -6,6 +6,7 @@ set ignorecase set icons set info size +set sortby name set previewer ~/.config/lf/previewer.sh set cleaner ~/.config/lf/clear_img.sh @@ -47,10 +48,10 @@ set scrolloff 3 # map a :push %mkdir # make sure trash folder exists -# %mkdir -p ~/.trash +%mkdir -p ~/.trash # use '' key for either 'trash' or 'delete' command -# map trash +map trash # map delete cmd touchdir ${{ @@ -65,6 +66,7 @@ cmd touchfile ${{ touch $ans }} + # extract the current file with the right command # (xkcd link: https://xkcd.com/1168/) cmd extract ${{ @@ -175,7 +177,7 @@ cmd bulk-rename ${{ }} cmd on-select &{{ - lf -remote "send $id set statfmt \"$(eza -ld --color=always "$f")\"" + lf -remote "send $id set statfmt \"$(eza -ld --color=always -o --no-permissions "$f")\"" }} cmd fzf_jump ${{ @@ -210,9 +212,9 @@ cmd edit-config ${{ cmd toggle_preview %{{ if [ "$lf_preview" = "true" ]; then - lf -remote "send $id :set preview false; set ratios 1:5" + lf -remote "send $id :set preview false; set ratios 1; set info size:time" else - lf -remote "send $id :set preview true; set ratios 1:2:3" + lf -remote "send $id :set preview true; set ratios 1:2:3; set info """ fi }} @@ -294,11 +296,61 @@ cmd select-all &{{ lf -remote "send $id :unselect; toggle $(get_files) $(get_dirs)" }} + +# create symlinks +cmd link %{{ + set -- $(cat ~/.local/share/lf/files) + mode="$1" + shift + if [ "$#" -lt 1 ]; then + lf -remote "send $id echo no files to link" + exit + fi + case "$mode" in + # symbolically copy mode is indicating a soft link + copy) ln -sr -t . -- "$@";; + # while a move mode is indicating a hard link + move) ln -t . -- "$@";; + esac + rm ~/.local/share/lf/files + lf -remote "send clear" +}} + +# follow symlinks +cmd follow-link %{{ + lf -remote "send $id select \"$(readlink -- "$f" | sed 's/\\/\\\\/g;s/"/\\"/g')\"" +}} + +# a function similar to macOS finder app +cmd selected-to-new-folder ${{ + set -f + printf 'Directory name: ' + read -r newd + mkdir -- "$newd" + mv -- $fx "$newd" +}} + +# ------------------------------------ commands: +# helpers +cmd open-with-gui &$@ $fx # opens asynchronously, intended for GUI applications +cmd open-with-cli $$@ $fx # opens synchronously, intended for CLI/TUI applications + +# options per location +setlocal ~ sortby name +setlocal ~/Bilder/Screenshots sortby ctime +setlocal ~/dotfiles sortby name +setlocal /m sortby name +setlocal /media sortby name +setlocal /mnt sortby name + # unmap keys +map c map d map m +map p map t map x +# map u is unselect # one-shot commands map R bulk-rename @@ -306,45 +358,56 @@ map J move-parent down map K move-parent up map \= select-dirs map \+ select-files -map \% select-all +map A select-all map \| shell-pipe +map ~ # m = mark map mm mark-save map mr mark-remove -# mark-load is gm +map ml mark-load # t = touch map td touchdir map tt touchfile +# c = change +map cw : rename +map cm selected-to-new-folder +map cy yank-file $printf '%s' "$f" | wl-copy -p -n + # d = delete map dd cut -map dz trash -map dD trash +map dt trash map dr trash-restore - -# o = order -map oc : set sortby ctime; set reverse false; set info ctime -map oe : set sortby ext; set reverse false; set info size -map on : set sortby name; set reverse false; set info size -map os : set sortby size; set reverse false; set info size -map om : set sortby time; set reverse false; set info time -map oC : set sortby ctime; set reverse true; set info ctime -map oE : set sortby ext; set reverse true; set info size -map oN : set sortby name; set reverse true; set info size -map oS : set sortby size; set reverse true; set info size -map oM : set sortby time; set reverse true; set info time +map dZ delete #zap # g = goto map gc cd ~/.config -map gm mark-load +map gd cd ~/dotfiles +map gf :fzf_search +map gL follow-link +map gm cd /media map gM cd /mnt map ge bottom +map gs cd ~/Bilder/Screenshots map go :fzf_jump -map gs :fzf_search + +# o = open +map oo push :open-with-cli +map oO push :open-with-gui + +# s = sort +map sA : set sortby ctime; set reverse true; set info ctime +map sC : set sortby ctime; set reverse true; set info ctime +map sE : set sortby ext; set reverse true; set info size +map sN : set sortby name; set reverse true; set info size +map sS : set sortby size; set reverse true; set info size +map sT : set sortby time; set reverse true; set info time # various commands -map zp toggle_preview +map ~ toggle_preview map C edit-config +map pp :paste; clear +map pP :link; clear diff --git a/config/lf/previewer.sh b/config/lf/previewer.sh index 8759fdee..46741ab2 100755 --- a/config/lf/previewer.sh +++ b/config/lf/previewer.sh @@ -1,7 +1,7 @@ #!/bin/sh draw() { - ~/.config/lf/draw_img.sh "$@" + ~/dotfiles/config/lf/draw_img.sh "$@" exit 1 } -- 2.51.2