dotfiles

Yes, my $HOME has a git repo now :(

git clone git://git.shimmy1996.com/dotfiles.git

lfrc (3785B)

    1 # interpreter for shell commands (needs to be POSIX compatible)
    2 set shell sh
    3 
    4 # set '-eu' options for shell commands
    5 # These options are used to have safer shell commands. Option '-e' is used to
    6 # exit on error and option '-u' is used to give error for unset variables.
    7 # Option '-f' disables pathname expansion which can be useful when $f, $fs, and
    8 # $fx variables contain names with '*' or '?' characters. However, this option
    9 # is used selectively within individual commands as it can be limiting at
   10 # times.
   11 set shellopts '-eu'
   12 
   13 # set internal field separator (IFS) to "\n" for shell commands
   14 # This is useful to automatically split file names in $fs and $fx properly
   15 # since default file separator used in these variables (i.e. 'filesep' option)
   16 # is newline. You need to consider the values of these options and create your
   17 # commands accordingly.
   18 set ifs "\n"
   19 
   20 # leave some space at the top and the bottom of the screen
   21 set scrolloff 10
   22 
   23 # enable ANSI 256 color escape code support
   24 set color256 on
   25 
   26 # panel ratios
   27 cmd recol &{{
   28     w=$(tput cols)
   29     if [ $w -le 80 ]; then
   30         lf -remote "send $id set ratios 1:2"
   31     elif [ $w -le 160 ]; then
   32         lf -remote "send $id set ratios 1:2:3"
   33     else
   34         lf -remote "send $id set ratios 1:2:3:5"
   35     fi
   36 }}
   37 map <c-g> recol
   38 recol
   39 
   40 # use enter for shell commands
   41 map <enter> shell
   42 
   43 # execute current file (must be executable)
   44 map x $$f
   45 map X !$f
   46 
   47 # dedicated keys for file opener actions
   48 map o &mimeopen $f
   49 map O $mimeopen --ask $f
   50 
   51 # Emacs style copy-paste
   52 map <c-w> cut
   53 map <a-w> copy
   54 map <c-y> paste
   55 
   56 # Fuzzy search for current directory and below.
   57 # Only search non-hidden directories.
   58 map <c-s> $lf -remote "send $id select '$(fd --no-ignore-vcs -t d | fzf)'"
   59 # Include hidden ones.
   60 map <a-s> $lf -remote "send $id select '$(fd --no-ignore-vcs -H -t d | fzf)'"
   61 
   62 # define a custom 'open' command
   63 # This command is called when current file is not a directory. You may want to
   64 # use either file extensions and/or mime types here. Below uses an editor for
   65 # text files and a file opener for the rest.
   66 cmd open ${{
   67     case $(xdg-mime query filetype $f) in
   68         application/epub*|application/pdf|application/postscript|application/vnd.comicbook*|image/vnd.djvu*) nohup zathura $fx > /dev/null 2> /dev/null &;;
   69         image/*) nohup imv $fx $(fd --no-ignore-vcs -t f -d 1 . ./) > /dev/null 2> /dev/null &;;
   70         text/*) nohup emacsclient -c -a emacs $fx > /dev/null 2> /dev/null &;;
   71         *) for f in $fx; do $OPENER $f > /dev/null 2> /dev/null & done;;
   72     esac
   73 }}
   74 
   75 # rename current file without overwrite
   76 cmd rename %[ -e $1 ] && printf "file exists" || mv $f $1
   77 map r push :rename<space>
   78 
   79 # make sure trash folder exists
   80 %mkdir -p ~/.trash
   81 
   82 # move current file or selected files to trash folder
   83 # (also see 'man mv' for backup/overwrite options)
   84 cmd trash %set -f; mv $fx ~/.trash
   85 
   86 # delete current file or selected files (prompting)
   87 cmd delete ${{
   88     set -f
   89     printf "$fx\n"
   90     printf "delete?[y/n]"
   91     read ans
   92     [ $ans = "y" ] && rm -rf $fx
   93 }}
   94 
   95 # extract the current file with the right command
   96 # (xkcd link: https://xkcd.com/1168/)
   97 cmd extract ${{
   98     set -f
   99     case $f in
  100         *.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf $f;;
  101         *.tar.gz|*.tgz) tar xzvf $f;;
  102         *.tar.xz|*.txz) tar xJvf $f;;
  103         *.zip) unzip $f;;
  104         *.rar) unrar x $f;;
  105         *.7z) 7z x $f;;
  106     esac
  107 }}
  108 
  109 # compress current file or selected files with tar and gunzip
  110 cmd tar ${{
  111     set -f
  112     mkdir $1
  113     cp -r $fx $1
  114     tar czf $1.tar.gz $1
  115     rm -rf $1
  116 }}
  117 
  118 # compress current file or selected files with zip
  119 cmd zip ${{
  120     set -f
  121     mkdir $1
  122     cp -r $fx $1
  123     zip -r $1.zip $1
  124     rm -rf $1
  125 }}
  126 
  127 # preview command
  128 set previewer ~/.local/bin/lf/previewer
  129 map i $~/.local/bin/lf/previewer $f | less -R