config/lf: add lf config from BrodieRobertson
https://github.com/BrodieRobertson/dotfiles/tree/master/config/lf
This commit is contained in:
parent
bf40cdda9f
commit
ef80431997
|
@ -0,0 +1,67 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
clear_screen() {
|
||||||
|
printf '\e[%sH\e[9999C\e[1J%b\e[1;%sr' \
|
||||||
|
"$((LINES-2))" "${TMUX:+\e[2J}" "$max_items"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Get a file's mime_type.
|
||||||
|
mime_type=$(file -bi "$1")
|
||||||
|
|
||||||
|
# File isn't an image file, give warning.
|
||||||
|
if [[ $mime_type != image/* ]]; then
|
||||||
|
lf -remote "send $id echoerr 'Not an image'"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
w3m_paths=(/usr/{local/,}{lib,libexec,lib64,libexec64}/w3m/w3mi*)
|
||||||
|
read -r w3m _ < <(type -p w3mimgdisplay "${w3m_paths[@]}")
|
||||||
|
read -r LINES COLUMNS < <(stty size)
|
||||||
|
|
||||||
|
# Get terminal window size in pixels and set it to WIDTH and HEIGHT.
|
||||||
|
export $(xdotool getactivewindow getwindowgeometry --shell)
|
||||||
|
|
||||||
|
# Get the image size in pixels.
|
||||||
|
read -r img_width img_height < <("$w3m" <<< "5;${CACHE:-$1}")
|
||||||
|
|
||||||
|
((img_width > WIDTH)) && {
|
||||||
|
((img_height=img_height*WIDTH/img_width))
|
||||||
|
((img_width=WIDTH))
|
||||||
|
}
|
||||||
|
|
||||||
|
((img_height > HEIGHT)) && {
|
||||||
|
((img_width=img_width*HEIGHT/img_height))
|
||||||
|
((img_height=HEIGHT))
|
||||||
|
}
|
||||||
|
|
||||||
|
# Variable needed for centering image.
|
||||||
|
HALF_HEIGHT=$(expr $HEIGHT / 2)
|
||||||
|
HALF_WIDTH=$(expr $WIDTH / 2)
|
||||||
|
HALF_IMG_HEIGHT=$(expr $img_height / 2)
|
||||||
|
HALF_IMG_WIDTH=$(expr $img_width / 2)
|
||||||
|
X_POS=$(expr $HALF_WIDTH - $HALF_IMG_WIDTH)
|
||||||
|
Y_POS=$(expr $HALF_HEIGHT - $HALF_IMG_HEIGHT)
|
||||||
|
|
||||||
|
clear_screen
|
||||||
|
# Hide the cursor.
|
||||||
|
printf '\e[?25l'
|
||||||
|
|
||||||
|
# Display the image.
|
||||||
|
printf '0;1;%s;%s;%s;%s;;;;;%s\n3;\n4\n' \
|
||||||
|
${X_POS:-0} \
|
||||||
|
${Y_POS:-0} \
|
||||||
|
"$img_width" \
|
||||||
|
"$img_height" \
|
||||||
|
"${CACHE:-$1}" | "$w3m" &>/dev/null
|
||||||
|
|
||||||
|
# Wait for user input.
|
||||||
|
read -ern 1
|
||||||
|
|
||||||
|
# Clear the image.
|
||||||
|
printf '6;%s;%s;%s;%s\n3;' \
|
||||||
|
"${X_POS:-0}" \
|
||||||
|
"${Y_POS:-0}" \
|
||||||
|
"$WIDTH" \
|
||||||
|
"$HEIGHT" | "$w3m" &>/dev/null
|
||||||
|
|
||||||
|
clear_screen
|
|
@ -0,0 +1,18 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
readonly ID_PREVIEW="preview"
|
||||||
|
main() {
|
||||||
|
case "$1" in
|
||||||
|
"clear")
|
||||||
|
declare -p -A cmd=([action]=remove [identifier]="$ID_PREVIEW") \
|
||||||
|
> "$FIFO_UEBERZUG"
|
||||||
|
;;
|
||||||
|
"draw")
|
||||||
|
declare -p -A cmd=([action]=add [identifier]="$ID_PREVIEW" \
|
||||||
|
[x]="$3" [y]="$4" [max_width]="$5" [max_height]="$6" \
|
||||||
|
[path]="$2") > "$FIFO_UEBERZUG"
|
||||||
|
;;
|
||||||
|
"*") echo "Unknown command: '$1', '$2'" ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
main "$@"
|
||||||
|
|
|
@ -0,0 +1,254 @@
|
||||||
|
set previewer ~/.config/lf/preview
|
||||||
|
# Basic Settings
|
||||||
|
set preview true
|
||||||
|
set hidden true
|
||||||
|
set color256 true
|
||||||
|
set drawbox true
|
||||||
|
set icons true
|
||||||
|
set ignorecase true
|
||||||
|
|
||||||
|
# Custom Functions
|
||||||
|
cmd open ${{
|
||||||
|
case $(file --mime-type "$f" -bL) in
|
||||||
|
text/*|application/json) editright "$f";;
|
||||||
|
video/*|image/*/application/pdf) xdg-open "$f";;
|
||||||
|
*) xdg-open "$f" ;;
|
||||||
|
esac
|
||||||
|
}}
|
||||||
|
|
||||||
|
cmd mkdir ${{
|
||||||
|
printf "Directory Name: "
|
||||||
|
read ans
|
||||||
|
mkdir -p $ans
|
||||||
|
}}
|
||||||
|
|
||||||
|
cmd mkfile ${{
|
||||||
|
printf "File Name: "
|
||||||
|
read ans
|
||||||
|
%editright $ans
|
||||||
|
}}
|
||||||
|
|
||||||
|
cmd chmod ${{
|
||||||
|
printf "Mode Bits: "
|
||||||
|
read ans
|
||||||
|
|
||||||
|
for file in "$fx"
|
||||||
|
do
|
||||||
|
chmod $ans $file
|
||||||
|
done
|
||||||
|
|
||||||
|
lf -remote 'send reload'
|
||||||
|
}}
|
||||||
|
|
||||||
|
cmd setwallpaper %cp "$f" ~/.config/wall.png && xwallpaper --zoom "$f"
|
||||||
|
|
||||||
|
cmd fzf_jump ${{
|
||||||
|
res="$(find . -maxdepth 3 | fzf --reverse --header='Jump to location')"
|
||||||
|
if [ -f "$res" ]; then
|
||||||
|
cmd="select"
|
||||||
|
elif [ -d "$res" ]; then
|
||||||
|
cmd="cd"
|
||||||
|
fi
|
||||||
|
lf -remote "send $id $cmd \"$res\""
|
||||||
|
}}
|
||||||
|
|
||||||
|
cmd broot_jump ${{
|
||||||
|
f=$(mktemp)
|
||||||
|
res="$(broot --outcmd $f && cat $f | sed 's/cd //')"
|
||||||
|
rm -f "$f"
|
||||||
|
if [ -f "$res" ]; then
|
||||||
|
cmd="select"
|
||||||
|
elif [ -d "$res" ]; then
|
||||||
|
cmd="cd"
|
||||||
|
fi
|
||||||
|
lf -remote "send $id $cmd \"$res\""
|
||||||
|
}}
|
||||||
|
|
||||||
|
cmd open_config ${{
|
||||||
|
$EDITOR $(bookmenu -b ~/.config/bookmenu/configs -f fzf -o)
|
||||||
|
}}
|
||||||
|
|
||||||
|
cmd dragon %dragon-drag-and-drop -a -x $fx
|
||||||
|
cmd dragon-stay %dragon-drag-and-drop -a $fx
|
||||||
|
cmd dragon-individual %dragon-drag-and-drop $fx
|
||||||
|
cmd dlfile %dlfile
|
||||||
|
|
||||||
|
# Archive bindings
|
||||||
|
cmd unarchive ${{
|
||||||
|
case "$f" in
|
||||||
|
*.zip) unzip "$f" ;;
|
||||||
|
*.tar.gz) tar -xzvf "$f" ;;
|
||||||
|
*.tar.bz2) tar -xjvf "$f" ;;
|
||||||
|
*.tar) tar -xvf "$f" ;;
|
||||||
|
*) echo "Unsupported format" ;;
|
||||||
|
esac
|
||||||
|
}}
|
||||||
|
|
||||||
|
cmd zip %zip -r "$f" "$f"
|
||||||
|
cmd tar %tar cvf "$f.tar" "$f"
|
||||||
|
cmd targz %tar cvzf "$f.tar.gz" "$f"
|
||||||
|
cmd tarbz2 %tar cjvf "$f.tar.bz2" "$f"
|
||||||
|
|
||||||
|
# Trash cli bindings
|
||||||
|
cmd trash ${{
|
||||||
|
files=$(printf "$fx" | tr '\n' ';')
|
||||||
|
while [ "$files" ]; do
|
||||||
|
# extract the substring from start of string up to delimiter.
|
||||||
|
# this is the first "element" of the string.
|
||||||
|
file=${files%%;*}
|
||||||
|
|
||||||
|
trash-put "$(basename "$file")"
|
||||||
|
# if there's only one element left, set `files` to an empty string.
|
||||||
|
# this causes us to exit this `while` loop.
|
||||||
|
# else, we delete the first "element" of the string from files, and move onto the next.
|
||||||
|
if [ "$files" = "$file" ]; then
|
||||||
|
files=''
|
||||||
|
else
|
||||||
|
files="${files#*;}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}}
|
||||||
|
|
||||||
|
cmd clear_trash %trash-empty
|
||||||
|
|
||||||
|
cmd restore_trash ${{
|
||||||
|
trash-restore
|
||||||
|
}}
|
||||||
|
|
||||||
|
cmd stripspace %stripspace "$f"
|
||||||
|
|
||||||
|
# Bindings
|
||||||
|
# Remove some defaults
|
||||||
|
map m
|
||||||
|
map o
|
||||||
|
map n
|
||||||
|
map "'"
|
||||||
|
map '"'
|
||||||
|
map d
|
||||||
|
map c
|
||||||
|
map e
|
||||||
|
map f
|
||||||
|
|
||||||
|
# Not really image preview
|
||||||
|
map - $~/.config/lf/draw_img "$f"
|
||||||
|
|
||||||
|
cmd video_preview ${{
|
||||||
|
CACHE=$(mktemp /tmp/thumb_cache.XXXXX)
|
||||||
|
ffmpegthumbnailer -i "$f" -o $CACHE -s 0
|
||||||
|
~/.config/lf/draw_img $CACHE && rm $CACHE
|
||||||
|
}}
|
||||||
|
map + :video_preview
|
||||||
|
|
||||||
|
# File Openers
|
||||||
|
map ee $$EDITOR "$f"
|
||||||
|
map u $view "$f"
|
||||||
|
|
||||||
|
# Archive Mappings
|
||||||
|
map az zip
|
||||||
|
map at tar
|
||||||
|
map ag targz
|
||||||
|
map ab targz
|
||||||
|
map au unarchive
|
||||||
|
|
||||||
|
# Trash Mappings
|
||||||
|
map dd trash
|
||||||
|
map tc clear_trash
|
||||||
|
map tr restore_trash
|
||||||
|
|
||||||
|
# Broot Mapping
|
||||||
|
map f broot_jump
|
||||||
|
|
||||||
|
# Dragon Mapping
|
||||||
|
map dr dragon
|
||||||
|
map ds dragon-stay
|
||||||
|
map di dragon-individual
|
||||||
|
|
||||||
|
map ss stripspace
|
||||||
|
|
||||||
|
# Basic Functions
|
||||||
|
map . set hidden!
|
||||||
|
map DD delete
|
||||||
|
map p paste
|
||||||
|
map x cut
|
||||||
|
map y copy
|
||||||
|
map <enter> open
|
||||||
|
map mf mkfile
|
||||||
|
map mr sudomkfile
|
||||||
|
map md mkdir
|
||||||
|
map ms $mkscript
|
||||||
|
map ch chmod
|
||||||
|
map bg setwallpaper
|
||||||
|
map o open_config
|
||||||
|
map br $vimv $fx
|
||||||
|
map r rename
|
||||||
|
map H top
|
||||||
|
map L bottom
|
||||||
|
map R reload
|
||||||
|
map C clear
|
||||||
|
map U unselect
|
||||||
|
|
||||||
|
# Movement
|
||||||
|
map gtr cd ~/.local/share/Trash/files
|
||||||
|
map gus cd /run/media/brodie
|
||||||
|
|
||||||
|
map gv. cd ~/videos
|
||||||
|
map gva cd ~/videos/anime
|
||||||
|
|
||||||
|
map gy. cd ~/videos/youtube
|
||||||
|
map gyt cd ~/videos/youtube/ToUpload
|
||||||
|
map gyu cd ~/videos/youtube/Uploaded
|
||||||
|
map gya cd ~/videos/youtube/asset
|
||||||
|
map go. cd ~/videos/podcast
|
||||||
|
map got cd ~/videos/podcast/ToUpload
|
||||||
|
map gou cd ~/videos/podcast/Uploaded
|
||||||
|
|
||||||
|
map gp. cd ~/pictures
|
||||||
|
map gpm cd ~/pictures/mpvscreenshots
|
||||||
|
map gpa cd ~/pictures/Anime
|
||||||
|
map gps cd ~/pictures/screenshots
|
||||||
|
|
||||||
|
map gw. cd ~/pictures/Wallpapers
|
||||||
|
map gww cd ~/pictures/Wallpapers/Wallpapers
|
||||||
|
map gwm cd ~/pictures/Wallpapers/MobileWallpapers
|
||||||
|
|
||||||
|
map gt. cd ~/documents/Textbooks
|
||||||
|
map gt1 cd ~/documents/Textbooks/1stYear
|
||||||
|
map gt2 cd ~/documents/Textbooks/2ndYear
|
||||||
|
map gt3 cd ~/documents/Textbooks/3rdYear
|
||||||
|
map gu3 cd ~/documents/Uni/3rdYear
|
||||||
|
map gd cd ~/documents
|
||||||
|
|
||||||
|
map gD cd ~/downloads
|
||||||
|
map ge cd ~/desktop
|
||||||
|
|
||||||
|
map gs. cd ~/scripts
|
||||||
|
map gsl cd ~/scripts/lf
|
||||||
|
map gsa cd ~/scripts/alsa
|
||||||
|
map gsi cd ~/scripts/i3
|
||||||
|
map gse cd ~/scripts/lemonbar
|
||||||
|
map gsp cd ~/scripts/polybar
|
||||||
|
map gsb cd ~/scripts/bspwm
|
||||||
|
map gsu cd ~/scripts/pulse
|
||||||
|
map gdt cd ~/scripts/transmission
|
||||||
|
|
||||||
|
map gr. cd ~/repos
|
||||||
|
map grb cd ~/repos/bookmenu
|
||||||
|
map grf cd ~/repos/cleanfullscreen
|
||||||
|
map grm cd ~/repos/dmenu
|
||||||
|
map grd cd ~/repos/dotfiles
|
||||||
|
map gri cd ~/repos/init
|
||||||
|
map grk cd ~/repos/kanban-board
|
||||||
|
map grl cd ~/repos/lbryurlconvert
|
||||||
|
map grP cd ~/repos/PerlProjects
|
||||||
|
map grr cd ~/repos/reading-list
|
||||||
|
map grs cd ~/repos/st
|
||||||
|
map grw cd ~/repos/website
|
||||||
|
|
||||||
|
map gc cd ~/.config
|
||||||
|
map gC cd ~/.local/share/cell
|
||||||
|
map gl cd ~/.local
|
||||||
|
map gE cd /etc
|
||||||
|
map gU. cd /usr
|
||||||
|
map gUs cd /usr/share
|
||||||
|
map md kdir
|
||||||
|
map br $vimv $fx
|
|
@ -0,0 +1,48 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Clear the last preview (if any)
|
||||||
|
$HOME/.config/lf/image clear
|
||||||
|
|
||||||
|
# Calculate where the image should be placed on the screen.
|
||||||
|
num=$(printf "%0.f\n" "`echo "$(tput cols) / 2" | bc`")
|
||||||
|
numb=$(printf "%0.f\n" "`echo "$(tput cols) - $num - 1" | bc`")
|
||||||
|
numc=$(printf "%0.f\n" "`echo "$(tput lines) - 2" | bc`")
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
*.tgz|*.tar.gz) tar tzf "$1";;
|
||||||
|
*.tar.bz2|*.tbz2) tar tjf "$1";;
|
||||||
|
*.tar.txz|*.txz) xz --list "$1";;
|
||||||
|
*.tar) tar tf "$1";;
|
||||||
|
*.zip|*.jar|*.war|*.ear|*.oxt) unzip -l "$1";;
|
||||||
|
*.rar) unrar l "$1";;
|
||||||
|
*.7z) 7z l "$1";;
|
||||||
|
*.[1-8]) man "$1" | col -b ;;
|
||||||
|
*.o) nm "$1" | less ;;
|
||||||
|
*.torrent) transmission-show "$1";;
|
||||||
|
*.iso) iso-info --no-header -l "$1";;
|
||||||
|
*odt,*.ods,*.odp,*.sxw) odt2txt "$1";;
|
||||||
|
*.doc) catdoc "$1" ;;
|
||||||
|
*.docx) docx2txt "$1" - ;;
|
||||||
|
*.csv) cat "$1" | sed s/,/\\n/g ;;
|
||||||
|
*.pdf)
|
||||||
|
CACHE=$(mktemp /tmp/thumbcache.XXXXX)
|
||||||
|
pdftoppm -png -f 1 -singlefile "$1" "$CACHE"
|
||||||
|
$HOME/.config/lf/image draw "$CACHE.png" $num 1 $numb $numc
|
||||||
|
;;
|
||||||
|
*.epub)
|
||||||
|
CACHE=$(mktemp /tmp/thumbcache.XXXXX)
|
||||||
|
epub-thumbnailer "$1" "$CACHE" 1024
|
||||||
|
$HOME/.config/lf/image draw "$CACHE" $num 1 $numb $numc
|
||||||
|
;;
|
||||||
|
*.bmp|*.jpg|*.jpeg|*.png|*.xpm)
|
||||||
|
$HOME/.config/lf/image draw "$1" $num 1 $numb $numc
|
||||||
|
;;
|
||||||
|
*.wav|*.mp3|*.flac|*.m4a|*.wma|*.ape|*.ac3|*.og[agx]|*.spx|*.opus|*.as[fx]|*.flac) exiftool "$1";;
|
||||||
|
*.avi|*.mp4|*.wmv|*.dat|*.3gp|*.ogv|*.mkv|*.mpg|*.mpeg|*.vob|*.fl[icv]|*.m2v|*.mov|*.webm|*.ts|*.mts|*.m4v|*.r[am]|*.qt|*.divx)
|
||||||
|
CACHE=$(mktemp /tmp/thumbcache.XXXXX)
|
||||||
|
ffmpegthumbnailer -i "$1" -o "$CACHE" -s 0
|
||||||
|
$HOME/.config/lf/image draw "$CACHE" $num 1 $numb $numc
|
||||||
|
;;
|
||||||
|
*) highlight --out-format ansi "$1" || cat "$1";;
|
||||||
|
esac
|
||||||
|
|
Loading…
Reference in New Issue