mirror of
https://github.com/foo-dogsquared/dotfiles.git
synced 2025-01-31 04:57:57 +00:00
0681d1fd7c
It's been a while but I've been using NixOS (or anything styled like it like GuixSD, for example) and distro-hopped from Arch Linux. I think it's high noon for making the structure of this setup to be truer to one of the big objectives which is how easy to transfer this between different setups. Which means I removed some things such as the package lists, systemd config files, and package manager-specific configs. While the solution is easy (which is to simply ignore the system-specific files) but I'm not going with the pragmatic solution not because I'm a dumbass but because I'm so smart that I want to create a challenge for myself to solve a puzzle on figuring out a way on how to structure my dotfiles. :) Such a productive use of my time, that's for sure.
146 lines
3.5 KiB
Plaintext
Executable File
146 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"
|
|
|
|
# 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
|
|
|