dotfiles/lf/lfrc
Gabriel Arazas f450efa7f3 Restructure the interface with multiple manifests
With the added interface for multiple manifests, it is now possible to
set up this setup around it. In my case, I simply created an extra
folder in '.vtsm'.

Along with the restructuring, some configurations are changed such as
the customized Newsboat config and minor updates here and there.
2020-10-05 21:30:26 +08:00

149 lines
3.5 KiB
Plaintext
Executable File

# Configuration for lf (https://github.com/gokcehan/lf).
# Based on the given example configuration at https://github.com/gokcehan/lf/blob/master/etc/lfrc.example.
# https://godoc.org/github.com/gokcehan/lf for documentation.
####################
# BEHAVIOR TOGGLES #
####################
# interpreter for shell commands (needs to be POSIX compatible)
set shell sh
# 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"
# create the borders around the panels
set drawbox true
# toggle hidden files
set hidden
set color256
set timefmt "2006-01-02 15:04:05"
set dircounts
# leave some space at the top and the bottom of the screen
set scrolloff 10
############
# COMMANDS #
############
# 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 $f -b) in
image/svg+xml) inkscape $fx;;
image/*) sxiv $fx;;
text/*) $EDITOR $fx;;
video/*) mpv $fx;;
*) for f in $fx; do setsid $OPENER $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
# move current file or selected files to trash folder
# (also see 'man mv' for backup/overwrite options)
cmd trash %set -f; mv $fx ~/.trash
# define a custom 'delete' command
cmd delete ${{
set -f
printf "$fx\n"
printf "delete?[y/n]"
read ans
[ $ans = "y" ] && rm -rf $fx
}}
# extract the current file with the right command
# (xkcd link: https://xkcd.com/1168/)
cmd extract ${{
set -f
case $f in
*.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf $f;;
*.tar.gz|*.tgz) tar xzvf $f;;
*.tar.xz|*.txz) tar xJvf $f;;
*.zip) unzip $f;;
*.rar) unrar x $f;;
*.7z) 7z x $f;;
esac
}}
# 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
}}
############
# MAPPINGS #
############
# file operations
map D delete
map <delete> delete
map r push :rename<space>
# use enter for shell commands
map <enter> shell
# go to usual directories
map gr cd /run/media
map g/ cd /
# execute current file (must be executable)
map x $$f
map X !$f
# dedicated keys for file opener actions
map oo open $f
map oO open --ask $f
# dedicated keys for usual application suite
# feel free to replace this accordingly to your needs
map oz !nvim $f
map ox !code $f
map oc !inkscape $f
map ov !gimp $f
map ob !blender $f
map of !firefox $f