# klevstul # -------------------- # set # -------------------- # set '-eu' options for shell commands # These options are used to have safer shell commands. Option '-e' is used to # exit on error and option '-u' is used to give error for unset variables. # Option '-f' disables pathname expansion which can be useful when $f, $fs, and # $fx variables contain names with '*' or '?' characters. However, this option # is used selectively within individual commands as it can be limiting at # times. set shellopts '-eu' # set internal field separator (IFS) to "\n" for shell commands # This is useful to automatically split file names in $fs and $fx properly # since default file separator used in these variables (i.e. 'filesep' option) # is newline. You need to consider the values of these options and create your # commands accordingly. set ifs "\n" # leave some space at the top and the bottom of the screen set scrolloff 10 # Use the `dim` attribute instead of underline for the cursor in the preview pane set cursorpreviewfmt "\033[7;2m" # ctpv # https://github.com/NikitaIvanovV/ctpv set previewer ctpv set cleaner ctpvclear &ctpv -s $id &ctpvquit $id # -------------------- # map # -------------------- map trash # use '' key for 'trash' map shell # use enter for shell commands map :unselect; clear # clear all selected map ` !true # show the result of execution of previous commands map a :push %mkdir # mkdir command. See wiki if you want it to select created dir map b dragon map e edit map o &xdg-open $f # dedicated keys for file opener actions map x $$f # execute current file (must be executable) map X !$f # -------------------- # cmd # -------------------- # define a custom 'open' command # This command is called when current file is not a directory. You may want to # use either file extensions and/or mime types here. Below uses an editor for # text files and a file opener for the rest. #cmd open &{{ # case $(file --mime-type -Lb $f) in # text/*) lf -remote "send $id \$$EDITOR \$fx";; # *) for f in $fx; do $OPENER $f > /dev/null 2> /dev/null & done;; # esac #}} cmd open ${{ case "$f" in *.[Pp][Dd][Ff]*) mupdf $fx &;; *.[Rr][Pp][Pp]*) reaper $fx;; *.[Dd][Oo][Cc][Xx]*) onlyoffice-desktopeditor $fx;; *) case $(file --mime-type -Lb $f) in text/*) helix $fx;; *) for f in $fx; do xdg-open $f > /dev/null 2> /dev/null & done;; esac esac }} #cmd open ${{ # test -L $f && f=$(readlink -f $f) # case $(file --mime-type $f -b) in # text/*) geany $fx;; # *) for f in $fx; do xdg-open $f > /dev/null 2> /dev/null & done;; # esac # }} # define a custom 'rename' command without prompt for overwrite # cmd rename %[ -e $1 ] && printf "file exists" || mv $f $1 # map r push :rename # move current file or selected files to trash folder # (also see 'man mv' for backup/overwrite options) #cmd trash %set -f; mv $fx ~/.trash # $f: single file, $fx: multiple files cmd trash %tp.sh "$fx" # extract the current file with the right command (https://xkcd.com/1168/) cmd extract %extract.sh "$f" # compress current file or selected files with tar and gunzip cmd tar ''${{ set -f mkdir $1 cp -r $fx $1 tar czf $1.tar.gz $1 rm -rf $1 }} # compress current file or selected files with zip cmd zip ''${{ set -f mkdir $1 cp -r $fx $1 zip -r $1.zip $1 rm -rf $1 }} # dragon cmd dragon %dragon-drop --all --and-exit "$fx" cmd dragon-stay %dragon-drop --all "$fx" cmd dragon-individual %dragon-drop "$fx" cmd dragin %dragin.sh # change dir cmd cda :cd /home/poq/syncDir/antijantepodden cmd cdd :cd /home/poq/syncDir/0_downloads cmd cdg :cd /home/poq/syncDir/gitRepos cmd cdh :cd /home/poq cmd cdi :cd /home/poq/syncDir/0_inProgress cmd cdp :cd /home/poq/pCloudDrive cmd cds :cd /home/poq/syncDir # yanks cmd yank-dirname $dirname -- "$f" | head -c-1 | xclip -i -selection clipboard cmd yank-path $printf '%s' "$fx" | xclip -i -selection clipboard cmd yank-basename $basename -a -- $fx | head -c-1 | xclip -i -selection clipboard # misc cmd edit $helix "$fx"