From 837e0c857dacfc0578f7d0ec85dfb64375894df1 Mon Sep 17 00:00:00 2001 From: Wiktor Zykubek Date: Sat, 16 May 2020 17:49:43 +0200 Subject: [PATCH] Lots of changes in vifm and sxiv configs --- .config/nvim/bindings.vim | 1 + .config/shellrc | 3 +- .config/sxiv/exec/key-handler | 15 ++++++++- .config/vifm/colors/biual.vifm | 57 ++++++++++++++++++---------------- .config/vifm/vifmrc | 40 +++++++----------------- .local/bin/scripts/fm | 2 +- .local/bin/scripts/screenshot | 12 +++---- .local/bin/scripts/vifmimg | 56 +++++++++++++++++++++++++++++++++ .local/bin/scripts/vifmrun | 22 +++++++++++++ 9 files changed, 144 insertions(+), 64 deletions(-) create mode 100755 .local/bin/scripts/vifmimg create mode 100755 .local/bin/scripts/vifmrun diff --git a/.config/nvim/bindings.vim b/.config/nvim/bindings.vim index 1bcb68f..7f770e9 100644 --- a/.config/nvim/bindings.vim +++ b/.config/nvim/bindings.vim @@ -3,6 +3,7 @@ "============== " Leader key let mapleader = ' ' +let g:move_key_modifier = 'A' "~~~~~ " Git diff --git a/.config/shellrc b/.config/shellrc index d2dcc98..8e3be2f 100644 --- a/.config/shellrc +++ b/.config/shellrc @@ -7,7 +7,8 @@ alias \ v='nvim' \ vi='nvim' \ vim='nvim' \ - suvi='sudo -E nvim' + suvi='sudo -E nvim' \ + vifm='vifmrun' alias \ l='ls' \ diff --git a/.config/sxiv/exec/key-handler b/.config/sxiv/exec/key-handler index cad92a8..958e778 100755 --- a/.config/sxiv/exec/key-handler +++ b/.config/sxiv/exec/key-handler @@ -3,6 +3,19 @@ while read -r file do case "$1" in - "w") setwall "$file" &;; + "w") + setwall "$file" & ;; + "y") + readlink -f "$file" | xclip -selection clipboard && + notify-send "\"$file\" copied to clipboard" & ;; + "Y") + xclip -selection clipboard -t image/png < $(readlink -f "$file") && + notify-send -i "$(readlink -f "$file")" "copied to clipboard" & ;; + "d") + [ "$(printf "No\\nYes" | \ + rofi -dmenu -i -l 2 -p "Really delete $file?")" = "Yes" ] && + rm "$file" && notify-send "\"$file\" deleted." ;; + "g") + isinstalled gimp && pkill sxiv && gimp "$file" & ;; esac done diff --git a/.config/vifm/colors/biual.vifm b/.config/vifm/colors/biual.vifm index c850726..2297095 100644 --- a/.config/vifm/colors/biual.vifm +++ b/.config/vifm/colors/biual.vifm @@ -11,31 +11,34 @@ hi clear -hi Win ctermfg=white ctermbg=none cterm=none -hi Directory ctermfg=blue ctermbg=default cterm=bold -hi Link ctermfg=cyan ctermbg=default cterm=none -hi BrokenLink ctermfg=red ctermbg=default cterm=bold -hi Socket ctermfg=magenta ctermbg=default cterm=bold -hi Device ctermfg=red ctermbg=default cterm=bold -hi Fifo ctermfg=red ctermbg=default cterm=bold -hi Executable ctermfg=green ctermbg=default cterm=bold -hi Selected ctermfg=black ctermbg=8 cterm=bold -hi CurrLine ctermfg=8 ctermbg=white cterm=bold,reverse -hi TopLine ctermfg=none ctermbg=none cterm=none -hi OtherLine ctermfg=7 ctermbg=none -hi TopLineSel ctermfg=white ctermbg=none cterm=bold -hi StatusLine ctermfg=4 ctermbg=none cterm=none -hi WildMenu ctermfg=4 ctermbg=black cterm=reverse -hi CmdLine ctermfg=7 ctermbg=none cterm=none -hi ErrorMsg ctermfg=red ctermbg=233 cterm=none -hi Border ctermfg=black ctermbg=none cterm=none -hi JobLine ctermfg=black ctermbg=white cterm=none,reverse -hi SuggestBox ctermfg=8 ctermbg=233 cterm=none -hi CmpMismatch ctermfg=white ctermbg=red cterm=bold -hi AuxWin ctermfg=default ctermbg=default cterm=none,underline,reverse,standout,italic -hi TabLine ctermfg=9 ctermbg=0 cterm=none -hi TabLineSel ctermfg=default ctermbg=default cterm=none,reverse +hi Win ctermfg=white ctermbg=none cterm=none +hi Directory ctermfg=blue ctermbg=default cterm=bold +hi Link ctermfg=cyan ctermbg=default +hi BrokenLink ctermfg=red ctermbg=default cterm=bold +hi Socket ctermfg=magenta ctermbg=default cterm=bold +hi Device ctermfg=red ctermbg=default cterm=bold +hi Fifo ctermfg=red ctermbg=default cterm=bold +hi Executable ctermfg=green ctermbg=default cterm=bold +hi Selected ctermfg=192 ctermbg=234 cterm=italic +hi CurrLine ctermfg=8 ctermbg=191 cterm=bold,reverse +hi OtherLine ctermfg=191 ctermbg=none +hi TopLine ctermfg=none ctermbg=none cterm=none +hi TopLineSel ctermfg=white ctermbg=none cterm=bold +hi StatusLine ctermfg=4 ctermbg=none cterm=none +hi WildMenu ctermfg=4 ctermbg=black cterm=reverse +hi CmdLine ctermfg=7 ctermbg=none cterm=none +hi ErrorMsg ctermfg=red ctermbg=233 cterm=none +hi Border ctermfg=black ctermbg=none cterm=none +hi JobLine ctermfg=black ctermbg=white cterm=none,reverse +hi SuggestBox ctermfg=8 ctermbg=233 cterm=none +hi CmpMismatch ctermfg=white ctermbg=red cterm=bold +hi AuxWin ctermfg=default ctermbg=default cterm=none,underline,reverse,standout,italic +hi TabLine ctermfg=9 ctermbg=0 cterm=none +hi TabLineSel ctermfg=default ctermbg=default cterm=none,reverse -hi /^.*\.(mp3|ogg|oga|flac|m4a)$/ ctermfg=magenta -hi /^.*\.(jpg|jpeg|png|gif|tiff|webp|bmp|svg|svgz)$/ ctermfg=yellow -hi /^.*\.(zip|gz|bz2|xz|tar|tgz|tbz2|7z|rar|iso|rpm|deb)$/ ctermfg=red +hi /^.*\.(mp3|ogg|oga|flac|m4a)$/ ctermfg=13 +hi /^.*\.(flv|mp4|webm|mkv)$/ ctermfg=13 +hi /^.*\.(jpg|jpeg|png|gif|tiff|webp|bmp|svg|svgz)$/ ctermfg=11 +hi /^.*\.(zip|gz|bz2|lz4|xz|tar|tgz|tbz2|7z|rar|iso|rpm|deb)$/ ctermfg=167 cterm=bold +hi /^.*\.(docx|odt|pptx|odp)$/ ctermfg=60 +hi /^.*\.(pdf)$/ ctermfg=61 diff --git a/.config/vifm/vifmrc b/.config/vifm/vifmrc index eb0e0c8..e73124a 100644 --- a/.config/vifm/vifmrc +++ b/.config/vifm/vifmrc @@ -38,21 +38,20 @@ mark b ~/bin/ mark h ~/ " Sample mappings +unmap u nnoremap ` :cd ~ nnoremap ~ :cd ~ -nnoremap S :shell +nnoremap S :source ~/.config/vifm/vifmrc; source ~/.config/vifm/colors/biual.vifm nnoremap q :q nnoremap s :select +nnoremap u :unselect nnoremap w :view vnoremap w :viewgv nnoremap cc cw nnoremap I za - -nnoremap -nnoremap -nnoremap -nnoremap - +nnoremap x :!sxiv -btf * +unmap Y +nnoremap Y :!xclip -selection clipboard -t image/png < %c:echo expand('%"c:p') "is copied to clipboard" " ------------------------------------------------------------------------------ @@ -170,16 +169,8 @@ filetype *.[1-8] man ./%c fileviewer *.[1-8] man ./%c | col -b " Images -filextype *.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm - \ {View in feh} - \ sxiv -b -f -fileviewer *.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm - \ gimp %f - -" OpenRaster -filextype *.ora - \ {Edit in MyPaint} - \ mypaint %f, +fileviewer *.bmp,*.jpg,*.jpeg,*.png,*.ico,*.gif,*.xpm vifmimg draw %px %py %pw %ph %c %pc vifmimg clear +filextype *.bmp,*.jpg,*.jpeg,*.png,*.ico,*.gif,*.xpm sxiv -fb 2>/dev/null & " Mindmap filextype *.vym @@ -212,8 +203,7 @@ filetype *.asc \ !!gpg --verify %c, " Torrent -filetype *.torrent ktorrent %f & -fileviewer *.torrent dumptorrent -v %c +filetype *.torrent torradd %f & " FuseZipMount filetype *.zip,*.jar,*.war,*.ear,*.oxt,*.apkg @@ -262,22 +252,17 @@ filetype *.7z fileviewer *.7z 7z l %c " Office files -filextype *.odt,*.doc,*.docx,*.xls,*.xlsx,*.odp,*.pptx libreoffice %f & +filextype *.odt,*.doc,*.docx,*.xls,*.xlsx,*.odp,*.pptx, *.ppt libreoffice %f & fileviewer *.doc catdoc %c fileviewer *.docx docx2txt.pl %f - " TuDu files filetype *.tudu tudu -f %c -" Qt projects -filextype *.pro qtcreator %f & - -" Directories -filextype */ - \ {View in thunar} - \ Thunar %f &, filetype *.wav,*.mp3,*.flac,*.m4a,*.wma,*.ape,*.ac3,*.og[agx],*.spx,*.opus mpv --no-audio-display --input-ipc-server=/tmp/mpvsoc$(date +%%s) %c + " Syntax highlighting in preview +fileviewer * highlight -O ansi -s dante %c " " Explicitly set highlight type for some extensions " @@ -286,7 +271,6 @@ filetype *.wav,*.mp3,*.flac,*.m4a,*.wma,*.ape,*.ac3,*.og[agx],*.spx,*.opus mpv - " fileviewer Makefile,Makefile.* highlight -O xterm256 -s dante --syntax make %c " " 16-color terminal -" fileviewer *.c,*.h highlight -O ansi -s dante %c " " Or leave it for automatic detection " diff --git a/.local/bin/scripts/fm b/.local/bin/scripts/fm index 1bc097a..1557a76 100755 --- a/.local/bin/scripts/fm +++ b/.local/bin/scripts/fm @@ -2,4 +2,4 @@ # File manager. -"$TERMINAL" -e vifm +"$TERMINAL" -e vifmrun diff --git a/.local/bin/scripts/screenshot b/.local/bin/scripts/screenshot index 611b362..651a14a 100755 --- a/.local/bin/scripts/screenshot +++ b/.local/bin/scripts/screenshot @@ -8,17 +8,17 @@ mkdir -p ~/pix/Screenshots screen_path=~/pix/Screenshots/$(date +%G-%m-%d_%s).png screenshot() { - maim $type "$screen_path" && - notify-send -u low -t 1400 -i "$screen_path" "Screenshot created!" + maim $type "$screen_path" && + notify-send -u low -t 1400 -i "$screen_path" "Screenshot created!" } [ "$1" = "--force" ] && { screenshot && exit; } type="$(printf " Screen\n Area\n" | m 2 -p 'Screenshoter')" [ ! "$type" ] && exit -save="$(printf " No\n Yes" | m 2 -p 'Copy?')" +save="$(printf " No\n Yes" | m 2 -p 'Copy?')" [ ! "$save" ] && exit -time="$(printf "0.7\n5\n10\n15" | m 3 -p 'Delay')" +time="$(printf "0.7\n5\n10\n15" | m 3 -p 'Delay')" [ ! "$time" ] && exit [ "$type" = " Area" ] && type="-s -u" || type="" @@ -27,5 +27,5 @@ sleep "$time" screenshot [ "$save" = " Yes" ] && - xclip -sel clip /dev/null; sleep 0.5 - xclip -selection clipboard -t image/png "$screen_path" || exit + xclip -sel clip /dev/null; sleep 0.5 + xclip -selection clipboard -t image/png "$screen_path" || exit diff --git a/.local/bin/scripts/vifmimg b/.local/bin/scripts/vifmimg new file mode 100755 index 0000000..467608c --- /dev/null +++ b/.local/bin/scripts/vifmimg @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +# Preview images in vifm via ueberzug. + +readonly ID_PREVIEW="preview" + +#AUTO_REMOVE="yes" +# By enabling this option the script will remove the preview file after it is drawn +# and by doing so the preview will always be up-to-date with the file. +# This however, requires more CPU and therefore affects the overall performance. + +if [ -e "$FIFO_UEBERZUG" ]; then + if [[ "$1" == "draw" ]]; then + declare -p -A cmd=([action]=add [identifier]="$ID_PREVIEW" + [x]="$2" [y]="$3" [width]="$4" [height]="$5" \ + [path]="${PWD}/$6") \ + > "$FIFO_UEBERZUG" + + elif [[ "$1" == "videopreview" ]]; then + echo -e "Loading preview..\nFile: $6" + [[ ! -d "/tmp${PWD}/$6/" ]] && mkdir -p "/tmp${PWD}/$6/" + [[ ! -f "/tmp${PWD}/$6.png" ]] && ffmpegthumbnailer -i "${PWD}/$6" -o "/tmp${PWD}/$6.png" -s 0 -q 10 + declare -p -A cmd=([action]=add [identifier]="$ID_PREVIEW" + [x]="$2" [y]="$3" [width]="$4" [height]="$5" \ + [path]="/tmp${PWD}/$6.png") \ + > "$FIFO_UEBERZUG" + + elif [[ "$1" == "gifpreview" ]]; then + echo -e "Loading preview..\nFile: $6" + [[ ! -d "/tmp${PWD}/$6/" ]] && mkdir -p "/tmp${PWD}/$6/" && convert -coalesce "${PWD}/$6" "/tmp${PWD}/$6/$6.png" + for frame in $(ls -1 /tmp${PWD}/$6/$6*.png | sort -V); do + declare -p -A cmd=([action]=add [identifier]="$ID_PREVIEW" + [x]="$2" [y]="$3" [width]="$4" [height]="$5" \ + [path]="$frame") \ + > "$FIFO_UEBERZUG" + # Sleep between frames to make the animation smooth. + sleep .07 + done + + elif [[ "$1" == "pdfpreview" ]]; then + echo -e "Loading preview..\nFile: $6" + [[ ! -d "/tmp${PWD}/$6/" ]] && mkdir -p "/tmp${PWD}/$6/" + [[ ! -f "/tmp${PWD}/$6.png" ]] && pdftoppm -png -singlefile "$6" "/tmp${PWD}/$6" + declare -p -A cmd=([action]=add [identifier]="$ID_PREVIEW" + [x]="$2" [y]="$3" [width]="$4" [height]="$5" \ + [path]="/tmp${PWD}/$6.png") \ + > "$FIFO_UEBERZUG" + + elif [[ "$1" == "clear" ]]; then + declare -p -A cmd=([action]=remove [identifier]="$ID_PREVIEW") \ + > "$FIFO_UEBERZUG" + [[ ! -z $AUTO_REMOVE ]] && [[ -f "/tmp${PWD}/$6.png" ]] && rm -f "/tmp${PWD}/$6.png" + [[ ! -z $AUTO_REMOVE ]] && [[ -d "/tmp${PWD}/$6/" ]] && rm -rf "/tmp${PWD}/$6/" + + fi +fi diff --git a/.local/bin/scripts/vifmrun b/.local/bin/scripts/vifmrun new file mode 100755 index 0000000..5aebb9b --- /dev/null +++ b/.local/bin/scripts/vifmrun @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +# Run vifm with ueberzug support. + +export FIFO_UEBERZUG="/tmp/vifm-ueberzug-${PPID}" + +function cleanup { + rm "$FIFO_UEBERZUG" 2>/dev/null + pkill -P $$ 2>/dev/null +} + +rm "$FIFO_UEBERZUG" 2>/dev/null +mkfifo "$FIFO_UEBERZUG" +trap cleanup EXIT +tail --follow "$FIFO_UEBERZUG" | ueberzug layer --silent --parser bash & + +if [ -n "$1" ]; then + vifm $1 $2 +else + vifm $(pwd) $(pwd) +fi +cleanup