20250405.1743842637
This commit is contained in:
parent
9216ed84a5
commit
491c833040
6 changed files with 487 additions and 117 deletions
2
global/.config/ranger/rc.conf
Normal file
2
global/.config/ranger/rc.conf
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
set preview_images true
|
||||||
|
set preview_images_method ueberzug
|
366
global/.config/ranger/scope.sh
Executable file
366
global/.config/ranger/scope.sh
Executable file
|
@ -0,0 +1,366 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -o noclobber -o noglob -o nounset -o pipefail
|
||||||
|
IFS=$'\n'
|
||||||
|
|
||||||
|
## If the option `use_preview_script` is set to `true`,
|
||||||
|
## then this script will be called and its output will be displayed in ranger.
|
||||||
|
## ANSI color codes are supported.
|
||||||
|
## STDIN is disabled, so interactive scripts won't work properly
|
||||||
|
|
||||||
|
## This script is considered a configuration file and must be updated manually.
|
||||||
|
## It will be left untouched if you upgrade ranger.
|
||||||
|
|
||||||
|
## Because of some automated testing we do on the script #'s for comments need
|
||||||
|
## to be doubled up. Code that is commented out, because it's an alternative for
|
||||||
|
## example, gets only one #.
|
||||||
|
|
||||||
|
## Meanings of exit codes:
|
||||||
|
## code | meaning | action of ranger
|
||||||
|
## -----+------------+-------------------------------------------
|
||||||
|
## 0 | success | Display stdout as preview
|
||||||
|
## 1 | no preview | Display no preview at all
|
||||||
|
## 2 | plain text | Display the plain content of the file
|
||||||
|
## 3 | fix width | Don't reload when width changes
|
||||||
|
## 4 | fix height | Don't reload when height changes
|
||||||
|
## 5 | fix both | Don't ever reload
|
||||||
|
## 6 | image | Display the image `$IMAGE_CACHE_PATH` points to as an image preview
|
||||||
|
## 7 | image | Display the file directly as an image
|
||||||
|
|
||||||
|
## Script arguments
|
||||||
|
FILE_PATH="${1}" # Full path of the highlighted file
|
||||||
|
PV_WIDTH="${2}" # Width of the preview pane (number of fitting characters)
|
||||||
|
## shellcheck disable=SC2034 # PV_HEIGHT is provided for convenience and unused
|
||||||
|
PV_HEIGHT="${3}" # Height of the preview pane (number of fitting characters)
|
||||||
|
IMAGE_CACHE_PATH="${4}" # Full path that should be used to cache image preview
|
||||||
|
PV_IMAGE_ENABLED="${5}" # 'True' if image previews are enabled, 'False' otherwise.
|
||||||
|
|
||||||
|
FILE_EXTENSION="${FILE_PATH##*.}"
|
||||||
|
FILE_EXTENSION_LOWER="$(printf "%s" "${FILE_EXTENSION}" | tr '[:upper:]' '[:lower:]')"
|
||||||
|
|
||||||
|
## Settings
|
||||||
|
HIGHLIGHT_SIZE_MAX=262143 # 256KiB
|
||||||
|
HIGHLIGHT_TABWIDTH=${HIGHLIGHT_TABWIDTH:-8}
|
||||||
|
HIGHLIGHT_STYLE=${HIGHLIGHT_STYLE:-pablo}
|
||||||
|
HIGHLIGHT_OPTIONS="--replace-tabs=${HIGHLIGHT_TABWIDTH} --style=${HIGHLIGHT_STYLE} ${HIGHLIGHT_OPTIONS:-}"
|
||||||
|
PYGMENTIZE_STYLE=${PYGMENTIZE_STYLE:-autumn}
|
||||||
|
OPENSCAD_IMGSIZE=${RNGR_OPENSCAD_IMGSIZE:-1000,1000}
|
||||||
|
OPENSCAD_COLORSCHEME=${RNGR_OPENSCAD_COLORSCHEME:-Tomorrow Night}
|
||||||
|
|
||||||
|
handle_extension() {
|
||||||
|
case "${FILE_EXTENSION_LOWER}" in
|
||||||
|
## Archive
|
||||||
|
a | ace | alz | arc | arj | bz | bz2 | cab | cpio | deb | gz | jar | lha | lz | lzh | lzma | lzo | \
|
||||||
|
rpm | rz | t7z | tar | tbz | tbz2 | tgz | tlz | txz | tZ | tzo | war | xpi | xz | Z | zip)
|
||||||
|
atool --list -- "${FILE_PATH}" && exit 5
|
||||||
|
bsdtar --list --file "${FILE_PATH}" && exit 5
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
rar)
|
||||||
|
## Avoid password prompt by providing empty password
|
||||||
|
unrar lt -p- -- "${FILE_PATH}" && exit 5
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
7z)
|
||||||
|
## Avoid password prompt by providing empty password
|
||||||
|
7z l -p -- "${FILE_PATH}" && exit 5
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
## PDF
|
||||||
|
pdf)
|
||||||
|
## Preview as text conversion
|
||||||
|
pdftotext -l 10 -nopgbrk -q -- "${FILE_PATH}" - |
|
||||||
|
fmt -w "${PV_WIDTH}" && exit 5
|
||||||
|
mutool draw -F txt -i -- "${FILE_PATH}" 1-10 |
|
||||||
|
fmt -w "${PV_WIDTH}" && exit 5
|
||||||
|
exiftool "${FILE_PATH}" && exit 5
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
## BitTorrent
|
||||||
|
torrent)
|
||||||
|
transmission-show -- "${FILE_PATH}" && exit 5
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
## OpenDocument
|
||||||
|
odt | ods | odp | sxw)
|
||||||
|
## Preview as text conversion
|
||||||
|
odt2txt "${FILE_PATH}" && exit 5
|
||||||
|
## Preview as markdown conversion
|
||||||
|
pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
## XLSX
|
||||||
|
xlsx)
|
||||||
|
## Preview as csv conversion
|
||||||
|
## Uses: https://github.com/dilshod/xlsx2csv
|
||||||
|
xlsx2csv -- "${FILE_PATH}" && exit 5
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
## HTML
|
||||||
|
htm | html | xhtml)
|
||||||
|
## Preview as text conversion
|
||||||
|
w3m -dump "${FILE_PATH}" && exit 5
|
||||||
|
lynx -dump -- "${FILE_PATH}" && exit 5
|
||||||
|
elinks -dump "${FILE_PATH}" && exit 5
|
||||||
|
pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
|
||||||
|
;;
|
||||||
|
|
||||||
|
## JSON
|
||||||
|
json)
|
||||||
|
if [ -f "${FILE_PATH}" ] && [ "$(stat -c%s "${FILE_PATH}")" -gt 100000 ]; then
|
||||||
|
echo "File too large for preview"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
jq --color-output . "${FILE_PATH}" && exit 5
|
||||||
|
python -m json.tool -- "${FILE_PATH}" && exit 5
|
||||||
|
;;
|
||||||
|
|
||||||
|
## Direct Stream Digital/Transfer (DSDIFF) and wavpack aren't detected
|
||||||
|
## by file(1).
|
||||||
|
dff | dsf | wv | wvc)
|
||||||
|
mediainfo "${FILE_PATH}" && exit 5
|
||||||
|
exiftool "${FILE_PATH}" && exit 5
|
||||||
|
;; # Continue with next handler on failure
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
handle_image() {
|
||||||
|
## Size of the preview if there are multiple options or it has to be
|
||||||
|
## rendered from vector graphics. If the conversion program allows
|
||||||
|
## specifying only one dimension while keeping the aspect ratio, the width
|
||||||
|
## will be used.
|
||||||
|
local DEFAULT_SIZE="1920x1080"
|
||||||
|
|
||||||
|
local mimetype="${1}"
|
||||||
|
case "${mimetype}" in
|
||||||
|
## SVG
|
||||||
|
# image/svg+xml|image/svg)
|
||||||
|
# convert -- "${FILE_PATH}" "${IMAGE_CACHE_PATH}" && exit 6
|
||||||
|
# exit 1;;
|
||||||
|
|
||||||
|
## DjVu
|
||||||
|
# image/vnd.djvu)
|
||||||
|
# ddjvu -format=tiff -quality=90 -page=1 -size="${DEFAULT_SIZE}" \
|
||||||
|
# - "${IMAGE_CACHE_PATH}" < "${FILE_PATH}" \
|
||||||
|
# && exit 6 || exit 1;;
|
||||||
|
|
||||||
|
## Image
|
||||||
|
image/*)
|
||||||
|
local orientation
|
||||||
|
orientation="$(identify -format '%[EXIF:Orientation]\n' -- "${FILE_PATH}")"
|
||||||
|
## If orientation data is present and the image actually
|
||||||
|
## needs rotating ("1" means no rotation)...
|
||||||
|
if [[ -n "$orientation" && "$orientation" != 1 ]]; then
|
||||||
|
## ...auto-rotate the image according to the EXIF data.
|
||||||
|
convert -- "${FILE_PATH}" -auto-orient "${IMAGE_CACHE_PATH}" && exit 6
|
||||||
|
fi
|
||||||
|
|
||||||
|
## `w3mimgdisplay` will be called for all images (unless overriden
|
||||||
|
## as above), but might fail for unsupported types.
|
||||||
|
exit 7
|
||||||
|
;;
|
||||||
|
|
||||||
|
## Video
|
||||||
|
# video/*)
|
||||||
|
# # Thumbnail
|
||||||
|
# ffmpegthumbnailer -i "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}" -s 0 && exit 6
|
||||||
|
# exit 1;;
|
||||||
|
|
||||||
|
## PDF
|
||||||
|
# application/pdf)
|
||||||
|
# pdftoppm -f 1 -l 1 \
|
||||||
|
# -scale-to-x "${DEFAULT_SIZE%x*}" \
|
||||||
|
# -scale-to-y -1 \
|
||||||
|
# -singlefile \
|
||||||
|
# -jpeg -tiffcompression jpeg \
|
||||||
|
# -- "${FILE_PATH}" "${IMAGE_CACHE_PATH%.*}" \
|
||||||
|
# && exit 6 || exit 1;;
|
||||||
|
|
||||||
|
## ePub, MOBI, FB2 (using Calibre)
|
||||||
|
# application/epub+zip|application/x-mobipocket-ebook|\
|
||||||
|
# application/x-fictionbook+xml)
|
||||||
|
# # ePub (using https://github.com/marianosimone/epub-thumbnailer)
|
||||||
|
# epub-thumbnailer "${FILE_PATH}" "${IMAGE_CACHE_PATH}" \
|
||||||
|
# "${DEFAULT_SIZE%x*}" && exit 6
|
||||||
|
# ebook-meta --get-cover="${IMAGE_CACHE_PATH}" -- "${FILE_PATH}" \
|
||||||
|
# >/dev/null && exit 6
|
||||||
|
# exit 1;;
|
||||||
|
|
||||||
|
## Font
|
||||||
|
application/font* | application/*opentype)
|
||||||
|
preview_png="/tmp/$(basename "${IMAGE_CACHE_PATH%.*}").png"
|
||||||
|
if fontimage -o "${preview_png}" \
|
||||||
|
--pixelsize "120" \
|
||||||
|
--fontname \
|
||||||
|
--pixelsize "80" \
|
||||||
|
--text " ABCDEFGHIJKLMNOPQRSTUVWXYZ " \
|
||||||
|
--text " abcdefghijklmnopqrstuvwxyz " \
|
||||||
|
--text " 0123456789.:,;(*!?') ff fl fi ffi ffl " \
|
||||||
|
--text " The quick brown fox jumps over the lazy dog. " \
|
||||||
|
"${FILE_PATH}"; then
|
||||||
|
convert -- "${preview_png}" "${IMAGE_CACHE_PATH}" &&
|
||||||
|
rm "${preview_png}" &&
|
||||||
|
exit 6
|
||||||
|
else
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
## Preview archives using the first image inside.
|
||||||
|
## (Very useful for comic book collections for example.)
|
||||||
|
# application/zip|application/x-rar|application/x-7z-compressed|\
|
||||||
|
# application/x-xz|application/x-bzip2|application/x-gzip|application/x-tar)
|
||||||
|
# local fn=""; local fe=""
|
||||||
|
# local zip=""; local rar=""; local tar=""; local bsd=""
|
||||||
|
# case "${mimetype}" in
|
||||||
|
# application/zip) zip=1 ;;
|
||||||
|
# application/x-rar) rar=1 ;;
|
||||||
|
# application/x-7z-compressed) ;;
|
||||||
|
# *) tar=1 ;;
|
||||||
|
# esac
|
||||||
|
# { [ "$tar" ] && fn=$(tar --list --file "${FILE_PATH}"); } || \
|
||||||
|
# { fn=$(bsdtar --list --file "${FILE_PATH}") && bsd=1 && tar=""; } || \
|
||||||
|
# { [ "$rar" ] && fn=$(unrar lb -p- -- "${FILE_PATH}"); } || \
|
||||||
|
# { [ "$zip" ] && fn=$(zipinfo -1 -- "${FILE_PATH}"); } || return
|
||||||
|
#
|
||||||
|
# fn=$(echo "$fn" | python -c "import sys; import mimetypes as m; \
|
||||||
|
# [ print(l, end='') for l in sys.stdin if \
|
||||||
|
# (m.guess_type(l[:-1])[0] or '').startswith('image/') ]" |\
|
||||||
|
# sort -V | head -n 1)
|
||||||
|
# [ "$fn" = "" ] && return
|
||||||
|
# [ "$bsd" ] && fn=$(printf '%b' "$fn")
|
||||||
|
#
|
||||||
|
# [ "$tar" ] && tar --extract --to-stdout \
|
||||||
|
# --file "${FILE_PATH}" -- "$fn" > "${IMAGE_CACHE_PATH}" && exit 6
|
||||||
|
# fe=$(echo -n "$fn" | sed 's/[][*?\]/\\\0/g')
|
||||||
|
# [ "$bsd" ] && bsdtar --extract --to-stdout \
|
||||||
|
# --file "${FILE_PATH}" -- "$fe" > "${IMAGE_CACHE_PATH}" && exit 6
|
||||||
|
# [ "$bsd" ] || [ "$tar" ] && rm -- "${IMAGE_CACHE_PATH}"
|
||||||
|
# [ "$rar" ] && unrar p -p- -inul -- "${FILE_PATH}" "$fn" > \
|
||||||
|
# "${IMAGE_CACHE_PATH}" && exit 6
|
||||||
|
# [ "$zip" ] && unzip -pP "" -- "${FILE_PATH}" "$fe" > \
|
||||||
|
# "${IMAGE_CACHE_PATH}" && exit 6
|
||||||
|
# [ "$rar" ] || [ "$zip" ] && rm -- "${IMAGE_CACHE_PATH}"
|
||||||
|
# ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# openscad_image() {
|
||||||
|
# TMPPNG="$(mktemp -t XXXXXX.png)"
|
||||||
|
# openscad --colorscheme="${OPENSCAD_COLORSCHEME}" \
|
||||||
|
# --imgsize="${OPENSCAD_IMGSIZE/x/,}" \
|
||||||
|
# -o "${TMPPNG}" "${1}"
|
||||||
|
# mv "${TMPPNG}" "${IMAGE_CACHE_PATH}"
|
||||||
|
# }
|
||||||
|
|
||||||
|
# case "${FILE_EXTENSION_LOWER}" in
|
||||||
|
# ## 3D models
|
||||||
|
# ## OpenSCAD only supports png image output, and ${IMAGE_CACHE_PATH}
|
||||||
|
# ## is hardcoded as jpeg. So we make a tempfile.png and just
|
||||||
|
# ## move/rename it to jpg. This works because image libraries are
|
||||||
|
# ## smart enough to handle it.
|
||||||
|
# csg|scad)
|
||||||
|
# openscad_image "${FILE_PATH}" && exit 6
|
||||||
|
# ;;
|
||||||
|
# 3mf|amf|dxf|off|stl)
|
||||||
|
# openscad_image <(echo "import(\"${FILE_PATH}\");") && exit 6
|
||||||
|
# ;;
|
||||||
|
# esac
|
||||||
|
}
|
||||||
|
|
||||||
|
handle_mime() {
|
||||||
|
local mimetype="${1}"
|
||||||
|
case "${mimetype}" in
|
||||||
|
## RTF and DOC
|
||||||
|
text/rtf | *msword)
|
||||||
|
## Preview as text conversion
|
||||||
|
## note: catdoc does not always work for .doc files
|
||||||
|
## catdoc: http://www.wagner.pp.ru/~vitus/software/catdoc/
|
||||||
|
catdoc -- "${FILE_PATH}" && exit 5
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
## DOCX, ePub, FB2 (using markdown)
|
||||||
|
## You might want to remove "|epub" and/or "|fb2" below if you have
|
||||||
|
## uncommented other methods to preview those formats
|
||||||
|
*wordprocessingml.document | */epub+zip | */x-fictionbook+xml)
|
||||||
|
## Preview as markdown conversion
|
||||||
|
pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
## XLS
|
||||||
|
*ms-excel)
|
||||||
|
## Preview as csv conversion
|
||||||
|
## xls2csv comes with catdoc:
|
||||||
|
## http://www.wagner.pp.ru/~vitus/software/catdoc/
|
||||||
|
xls2csv -- "${FILE_PATH}" && exit 5
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
## Text
|
||||||
|
text/* | */xml)
|
||||||
|
## Syntax highlight
|
||||||
|
if [[ "$(stat --printf='%s' -- "${FILE_PATH}")" -gt "${HIGHLIGHT_SIZE_MAX}" ]]; then
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
if [[ "$(tput colors)" -ge 256 ]]; then
|
||||||
|
local pygmentize_format='terminal256'
|
||||||
|
local highlight_format='xterm256'
|
||||||
|
else
|
||||||
|
local pygmentize_format='terminal'
|
||||||
|
local highlight_format='ansi'
|
||||||
|
fi
|
||||||
|
env HIGHLIGHT_OPTIONS="${HIGHLIGHT_OPTIONS}" highlight \
|
||||||
|
--out-format="${highlight_format}" \
|
||||||
|
--force -- "${FILE_PATH}" && exit 5
|
||||||
|
env COLORTERM=8bit bat --color=always --style="plain" \
|
||||||
|
-- "${FILE_PATH}" && exit 5
|
||||||
|
pygmentize -f "${pygmentize_format}" -O "style=${PYGMENTIZE_STYLE}" \
|
||||||
|
-- "${FILE_PATH}" && exit 5
|
||||||
|
exit 2
|
||||||
|
;;
|
||||||
|
|
||||||
|
## DjVu
|
||||||
|
image/vnd.djvu)
|
||||||
|
## Preview as text conversion (requires djvulibre)
|
||||||
|
djvutxt "${FILE_PATH}" | fmt -w "${PV_WIDTH}" && exit 5
|
||||||
|
exiftool "${FILE_PATH}" && exit 5
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
## Image
|
||||||
|
image/*)
|
||||||
|
## Preview as text conversion
|
||||||
|
# img2txt --gamma=0.6 --width="${PV_WIDTH}" -- "${FILE_PATH}" && exit 4
|
||||||
|
exiftool "${FILE_PATH}" && exit 5
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
## Video and audio
|
||||||
|
video/* | audio/*)
|
||||||
|
mediainfo "${FILE_PATH}" && exit 5
|
||||||
|
exiftool "${FILE_PATH}" && exit 5
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
handle_fallback() {
|
||||||
|
echo '----- File Type Classification -----' && file --dereference --brief -- "${FILE_PATH}" && exit 5
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
MIMETYPE="$(file --dereference --brief --mime-type -- "${FILE_PATH}")"
|
||||||
|
if [[ "${PV_IMAGE_ENABLED}" == 'True' ]]; then
|
||||||
|
handle_image "${MIMETYPE}"
|
||||||
|
fi
|
||||||
|
handle_extension
|
||||||
|
handle_mime "${MIMETYPE}"
|
||||||
|
handle_fallback
|
||||||
|
|
||||||
|
exit 1
|
|
@ -1 +1 @@
|
||||||
{"gtabs":[{"panes":[{"ptabs":[{"history":[{"dir":"/home/cr33per/Downloads/Screenshots","file":"..","relpos":0,"ts":1742162618},{"dir":"/home/cr33per/Downloads","file":"Screenshots","relpos":1,"ts":1742163505},{"dir":"/home","file":"fz0x1","relpos":1,"ts":1742419561},{"dir":"/home/fz0x1","file":"Desktop","relpos":3,"ts":1742419561}],"filters":{"invert":true,"dot":true,"manual":"","auto":""},"last-location":"/home/fz0x1","sorting":[2],"preview":false}]},{"ptabs":[{"history":[{"dir":"/home/cr33per/Downloads/Screenshots","file":"..","relpos":0,"ts":1742162618},{"dir":"/home","file":"..","relpos":0,"ts":1742419561}],"filters":{"invert":true,"dot":true,"manual":"","auto":""},"last-location":"/home","sorting":[2],"preview":false}]}],"active-pane":0,"preview":false,"splitter":{"pos":-1,"ratio":0.5,"orientation":"v","expanded":false}}],"active-gtab":0,"marks":{"H":{"dir":"/home/cr33per/","file":"..","ts":1742162560},"b":{"dir":"/home/fz0x1/bin/","file":"..","ts":1742419555},"h":{"dir":"/home/fz0x1/","file":"..","ts":1742419555},"z":{"dir":"/home/cr33per/.config/vifm","file":"..","ts":1742162560}},"bmarks":{},"cmd-hist":[{"text":"h","ts":1742163342},{"text":"q","ts":1742163342}],"regs":{},"dir-stack":[],"use-term-multiplexer":false}
|
{"gtabs":[{"panes":[{"ptabs":[{"history":[{"dir":"/home/cr33per/Downloads/Screenshots","file":"..","relpos":0,"ts":1742162618},{"dir":"/home/cr33per/Downloads","file":"Screenshots","relpos":1,"ts":1742163505},{"dir":"/home","file":"fz0x1","relpos":1,"ts":1742419561},{"dir":"/home/fz0x1","file":"Downloads","relpos":4,"ts":1742419561},{"dir":"/home/fz0x1/Downloads","file":"plugins.zip","relpos":15,"ts":1743764709}],"filters":{"invert":true,"dot":true,"manual":"","auto":""},"last-location":"/home/fz0x1/Downloads","sorting":[2],"preview":false}]},{"ptabs":[{"history":[{"dir":"/home/cr33per/Downloads/Screenshots","file":"..","relpos":0,"ts":1742162618},{"dir":"/home","file":"..","relpos":0,"ts":1742419561}],"filters":{"invert":true,"dot":true,"manual":"","auto":""},"last-location":"/home","sorting":[2],"preview":false}]}],"active-pane":0,"preview":false,"splitter":{"pos":-1,"ratio":0.5,"orientation":"v","expanded":false}}],"active-gtab":0,"marks":{"H":{"dir":"/home/cr33per/","file":"..","ts":1742162560},"b":{"dir":"/home/fz0x1/bin/","file":"..","ts":1742419555},"h":{"dir":"/home/fz0x1/","file":"..","ts":1742419555},"z":{"dir":"/home/cr33per/.config/vifm","file":"..","ts":1742162560}},"bmarks":{},"cmd-hist":[{"text":"?","ts":1743764709},{"text":"h","ts":1743764709},{"text":"!ex %f","ts":1743764709},{"text":"!zsh -c \"ex %f\"","ts":1743764709},{"text":"!unzip %f","ts":1743764709},{"text":"q","ts":1743764709}],"regs":{},"dir-stack":[],"use-term-multiplexer":false}
|
232
global/.vimrc
232
global/.vimrc
|
@ -71,40 +71,40 @@ autocmd FileType css setlocal tabstop=2 shiftwidth=2 softtabstop=2
|
||||||
autocmd FileType javascript setlocal tabstop=2 shiftwidth=2 softtabstop=2
|
autocmd FileType javascript setlocal tabstop=2 shiftwidth=2 softtabstop=2
|
||||||
|
|
||||||
" plugings
|
" plugings
|
||||||
call plug#begin()
|
" call plug#begin()
|
||||||
|
"
|
||||||
Plug 'machakann/vim-highlightedyank'
|
" Plug 'machakann/vim-highlightedyank'
|
||||||
Plug 'tpope/vim-commentary'
|
" Plug 'tpope/vim-commentary'
|
||||||
Plug 'easymotion/vim-easymotion'
|
" Plug 'easymotion/vim-easymotion'
|
||||||
Plug 'preservim/nerdtree'
|
" Plug 'preservim/nerdtree'
|
||||||
" Plug 'tpope/vim-surround'
|
" " Plug 'tpope/vim-surround'
|
||||||
Plug 'terryma/vim-multiple-cursors'
|
" Plug 'terryma/vim-multiple-cursors'
|
||||||
" Plug 'tommcdo/vim-exchange'
|
" " Plug 'tommcdo/vim-exchange'
|
||||||
" Plug 'michaeljsmith/vim-indent-object'
|
" " Plug 'michaeljsmith/vim-indent-object'
|
||||||
Plug 'vimwiki/vimwiki'
|
" Plug 'vimwiki/vimwiki'
|
||||||
Plug 'mattn/calendar-vim'
|
" Plug 'mattn/calendar-vim'
|
||||||
Plug 'jamessan/vim-gnupg'
|
" Plug 'jamessan/vim-gnupg'
|
||||||
Plug 'ryanoasis/vim-devicons'
|
" Plug 'ryanoasis/vim-devicons'
|
||||||
" https://github.com/LunarWatcher/auto-pairs/blob/master/doc/AutoPairs.txt
|
" " https://github.com/LunarWatcher/auto-pairs/blob/master/doc/AutoPairs.txt
|
||||||
Plug 'LunarWatcher/auto-pairs'
|
" Plug 'LunarWatcher/auto-pairs'
|
||||||
" Plug 'vim-airline/vim-airline'
|
" " Plug 'vim-airline/vim-airline'
|
||||||
" Plug 'vim-airline/vim-airline-themes'
|
" " Plug 'vim-airline/vim-airline-themes'
|
||||||
Plug 'tiagofumo/vim-nerdtree-syntax-highlight'
|
" Plug 'tiagofumo/vim-nerdtree-syntax-highlight'
|
||||||
Plug 'morhetz/gruvbox'
|
" Plug 'morhetz/gruvbox'
|
||||||
Plug 'christoomey/vim-tmux-navigator'
|
" Plug 'christoomey/vim-tmux-navigator'
|
||||||
Plug 'sheerun/vim-polyglot'
|
" Plug 'sheerun/vim-polyglot'
|
||||||
" Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
|
" " Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
|
||||||
" Plug 'junegunn/fzf.vim'
|
" " Plug 'junegunn/fzf.vim'
|
||||||
Plug 'mhinz/vim-startify'
|
" Plug 'mhinz/vim-startify'
|
||||||
" Plug 'tpope/vim-fugitive'
|
" " Plug 'tpope/vim-fugitive'
|
||||||
Plug 'tpope/vim-obsession'
|
" Plug 'tpope/vim-obsession'
|
||||||
Plug 'ycm-core/YouCompleteMe'
|
" Plug 'ycm-core/YouCompleteMe'
|
||||||
Plug 'dense-analysis/ale'
|
" Plug 'dense-analysis/ale'
|
||||||
Plug 'SirVer/ultisnips'
|
" Plug 'SirVer/ultisnips'
|
||||||
Plug 'honza/vim-snippets'
|
" Plug 'honza/vim-snippets'
|
||||||
" Plug 'majutsushi/tagbar'
|
" " Plug 'majutsushi/tagbar'
|
||||||
|
"
|
||||||
call plug#end()
|
" call plug#end()
|
||||||
|
|
||||||
filetype on
|
filetype on
|
||||||
filetype plugin on
|
filetype plugin on
|
||||||
|
@ -116,18 +116,18 @@ filetype plugin indent on
|
||||||
" autocmd BufEnter *.py :call tagbar#autoopen(0)
|
" autocmd BufEnter *.py :call tagbar#autoopen(0)
|
||||||
|
|
||||||
" ultisnips
|
" ultisnips
|
||||||
let g:UltiSnipsExpandTrigger = '<C-j>'
|
" let g:UltiSnipsExpandTrigger = '<C-j>'
|
||||||
let g:UltiSnipsJumpForwardTrigger = '<C-j>'
|
" let g:UltiSnipsJumpForwardTrigger = '<C-j>'
|
||||||
let g:UltiSnipsJumpBackwardTrigger = '<C-k>'
|
" let g:UltiSnipsJumpBackwardTrigger = '<C-k>'
|
||||||
|
|
||||||
" easymotion
|
" easymotion
|
||||||
map <leader>F <Plug>(easymotion-s)
|
" map <leader>F <Plug>(easymotion-s)
|
||||||
map <leader>f <Plug>(easymotion-f)
|
" map <leader>f <Plug>(easymotion-f)
|
||||||
" nerdtree
|
" nerdtree
|
||||||
map <c-t> :NERDTree<CR>
|
" map <c-t> :NERDTree<CR>
|
||||||
nmap " :NERDTreeToggle<CR>
|
" nmap " :NERDTreeToggle<CR>
|
||||||
let NERDTreeIgnore=['\.pyc$', '\.pyo$', '__pycache__$'] " Ignore files in NERDTree
|
" let NERDTreeIgnore=['\.pyc$', '\.pyo$', '__pycache__$'] " Ignore files in NERDTree
|
||||||
let NERDTreeWinSize=40
|
" let NERDTreeWinSize=40
|
||||||
" autocmd VimEnter * if !argc() | NERDTree | endif " Load NERDTree only if vim is run without arguments
|
" autocmd VimEnter * if !argc() | NERDTree | endif " Load NERDTree only if vim is run without arguments
|
||||||
|
|
||||||
" fzf
|
" fzf
|
||||||
|
@ -135,8 +135,8 @@ let NERDTreeWinSize=40
|
||||||
" nmap <leader>bb :Buffers<CR>
|
" nmap <leader>bb :Buffers<CR>
|
||||||
|
|
||||||
" auto-pairs
|
" auto-pairs
|
||||||
let g:AutoPairsMapBS = 1
|
" let g:AutoPairsMapBS = 1
|
||||||
let g:AutoPairsBSAfter = 0
|
" let g:AutoPairsBSAfter = 0
|
||||||
|
|
||||||
" airline
|
" airline
|
||||||
" let g:airline#extensions#obsession#enable = 1
|
" let g:airline#extensions#obsession#enable = 1
|
||||||
|
@ -153,96 +153,96 @@ let g:AutoPairsBSAfter = 0
|
||||||
" let g:airline_symbols.maxlinenr = ''
|
" let g:airline_symbols.maxlinenr = ''
|
||||||
|
|
||||||
" theme
|
" theme
|
||||||
autocmd vimenter * ++nested colorscheme gruvbox
|
" autocmd vimenter * ++nested colorscheme gruvbox
|
||||||
set background=dark
|
" set background=dark
|
||||||
let g:gruvbox_contrast_dark='soft'
|
" let g:gruvbox_contrast_dark='soft'
|
||||||
|
|
||||||
" vim wiki
|
" vim wiki
|
||||||
let g:GPGFilePattern = '*.\(gpg\|asc\|pgp\)\(.wiki\|.md\)\='
|
" let g:GPGFilePattern = '*.\(gpg\|asc\|pgp\)\(.wiki\|.md\)\='
|
||||||
" toogle checklists
|
" toogle checklists
|
||||||
nnoremap <leader>cl :VimwikiToggleListItem<CR>
|
" nnoremap <leader>cl :VimwikiToggleListItem<CR>
|
||||||
" reset gpg-agent password cache after close or save the buffer (vimwiki diary)
|
" reset gpg-agent password cache after close or save the buffer (vimwiki diary)
|
||||||
autocmd BufWritePost *.asc.md !gpgconf --reload gpg-agent
|
" autocmd BufWritePost *.asc.md !gpgconf --reload gpg-agent
|
||||||
" https://github.com/WnP/vimwiki_markdown
|
" https://github.com/WnP/vimwiki_markdown
|
||||||
" ~/vimwiki/personal - private content
|
" ~/vimwiki/personal - private content
|
||||||
" ~/vimwiki/public_wiki - public wiki content
|
" ~/vimwiki/public_wiki - public wiki content
|
||||||
" ~/vimwiki/diary - private diary
|
" ~/vimwiki/diary - private diary
|
||||||
let default_wiki = '~/Productivity/vimwiki/personal'
|
" let default_wiki = '~/Productivity/vimwiki/personal'
|
||||||
let public_wiki = '~/Productivity/vimwiki/public_wiki'
|
" let public_wiki = '~/Productivity/vimwiki/public_wiki'
|
||||||
let g:diary = '~/Productivity/vimwiki/diary'
|
" let g:diary = '~/Productivity/vimwiki/diary'
|
||||||
let g:diary_index_name = 'diary'
|
" let g:diary_index_name = 'diary'
|
||||||
let g:diary_ext = '.asc.md'
|
" let g:diary_ext = '.asc.md'
|
||||||
let g:vimwiki_list = [{
|
" let g:vimwiki_list = [{
|
||||||
\ 'path': default_wiki,
|
" \ 'path': default_wiki,
|
||||||
\ 'diary_rel_path': '../diary',
|
" \ 'diary_rel_path': '../diary',
|
||||||
\ 'auto_diary_index': 1,
|
" \ 'auto_diary_index': 1,
|
||||||
\ 'auto_export': 0},
|
" \ 'auto_export': 0},
|
||||||
\ {'path': public_wiki,
|
" \ {'path': public_wiki,
|
||||||
\ 'auto_export': 0,
|
" \ 'auto_export': 0,
|
||||||
\ 'diary_rel_path': '../diary',
|
" \ 'diary_rel_path': '../diary',
|
||||||
\ 'template_path': public_wiki . '/templates/',
|
" \ 'template_path': public_wiki . '/templates/',
|
||||||
\ 'template_default': 'default',
|
" \ 'template_default': 'default',
|
||||||
\ 'syntax': 'markdown',
|
" \ 'syntax': 'markdown',
|
||||||
\ 'ext': '.md',
|
" \ 'ext': '.md',
|
||||||
\ 'path_html': public_wiki . '/site_html/',
|
" \ 'path_html': public_wiki . '/site_html/',
|
||||||
\ 'custom_wiki2html': 'vimwiki_markdown',
|
" \ 'custom_wiki2html': 'vimwiki_markdown',
|
||||||
\ 'template_ext': '.tpl'},
|
" \ 'template_ext': '.tpl'},
|
||||||
\ {'path': diary,
|
" \ {'path': diary,
|
||||||
\ 'index': diary_index_name,
|
" \ 'index': diary_index_name,
|
||||||
\ 'ext': diary_ext,
|
" \ 'ext': diary_ext,
|
||||||
\ 'diary_rel_path': './',
|
" \ 'diary_rel_path': './',
|
||||||
\ 'auto_diary_index': 1,
|
" \ 'auto_diary_index': 1,
|
||||||
\ 'auto_export': 0}]
|
" \ 'auto_export': 0}]
|
||||||
" fix - https://github.com/vimwiki/vimwiki/issues/1055
|
" fix - https://github.com/vimwiki/vimwiki/issues/1055
|
||||||
exe 'autocmd BufEnter ' . diary_index_name . diary_ext . ' :VimwikiDiaryGenerateLinks'
|
" exe 'autocmd BufEnter ' . diary_index_name . diary_ext . ' :VimwikiDiaryGenerateLinks'
|
||||||
" inserting default diary template
|
" inserting default diary template
|
||||||
function! AppendDiaryTemplate()
|
" function! AppendDiaryTemplate()
|
||||||
" detecting path of current buffer
|
" detecting path of current buffer
|
||||||
let current_dir = substitute(expand('%:p:h'), '^' . $HOME, '~', '')
|
" let current_dir = substitute(expand('%:p:h'), '^' . $HOME, '~', '')
|
||||||
if current_dir == g:diary
|
" if current_dir == g:diary
|
||||||
r! ~/scripts/vimwiki_diary_template
|
" r! ~/scripts/vimwiki_diary_template
|
||||||
execute '1,2d'
|
" execute '1,2d'
|
||||||
normal G
|
" normal G
|
||||||
normal o
|
" normal o
|
||||||
endif
|
" endif
|
||||||
endfunction
|
" endfunction
|
||||||
command! InsertDiaryTemplate call AppendDiaryTemplate()
|
" command! InsertDiaryTemplate call AppendDiaryTemplate()
|
||||||
nnoremap <leader>idr :InsertDiaryTemplate<CR>
|
" nnoremap <leader>idr :InsertDiaryTemplate<CR>
|
||||||
" inserting default GPG fingerprint for the diary
|
" inserting default GPG fingerprint for the diary
|
||||||
let g:diaryGPG = 'CE7EB8727486553012A04E284EE708165AA10C48'
|
" let g:diaryGPG = 'CE7EB8727486553012A04E284EE708165AA10C48'
|
||||||
command! InsertGPGAndExit call AppendGPGAndExit()
|
" command! InsertGPGAndExit call AppendGPGAndExit()
|
||||||
function! AppendGPGAndExit()
|
" function! AppendGPGAndExit()
|
||||||
" detecting vim-gnupg dialog
|
" detecting vim-gnupg dialog
|
||||||
if match(getline(2), '^GPG:') == 0
|
" if match(getline(2), '^GPG:') == 0
|
||||||
call append(line('.'), g:diaryGPG)
|
" call append(line('.'), g:diaryGPG)
|
||||||
wq
|
" wq
|
||||||
endif
|
" endif
|
||||||
endfunction
|
" endfunction
|
||||||
nnoremap <leader>igg :InsertGPGAndExit<CR>
|
" nnoremap <leader>igg :InsertGPGAndExit<CR>
|
||||||
|
|
||||||
" prettier
|
" prettier
|
||||||
nmap <leader>mm <Plug>(PrettierAsync)
|
" nmap <leader>mm <Plug>(PrettierAsync)
|
||||||
|
|
||||||
" ALE
|
" ALE
|
||||||
let g:ale_linters = {
|
" let g:ale_linters = {
|
||||||
\ 'python': ['ruff', 'mypy', 'pyright'],
|
" \ 'python': ['ruff', 'mypy', 'pyright'],
|
||||||
\}
|
" \}
|
||||||
let g:ale_fixers = {
|
" let g:ale_fixers = {
|
||||||
\ '*': ['remove_trailing_lines', 'trim_whitespace'],
|
" \ '*': ['remove_trailing_lines', 'trim_whitespace'],
|
||||||
\ 'python': ['ruff', 'ruff_format'],
|
" \ 'python': ['ruff', 'ruff_format'],
|
||||||
\ 'javascript': ['prettier', 'eslint'],
|
" \ 'javascript': ['prettier', 'eslint'],
|
||||||
\}
|
" \}
|
||||||
let g:ale_fix_on_save = 1
|
" let g:ale_fix_on_save = 1
|
||||||
map <C-e> <Plug>(ale_next_wrap)
|
" map <C-e> <Plug>(ale_next_wrap)
|
||||||
map <C-r> <Plug>(ale_previous_wrap)
|
" map <C-r> <Plug>(ale_previous_wrap)
|
||||||
nmap <leader>go :ALEGoToDefinition<CR>
|
" nmap <leader>go :ALEGoToDefinition<CR>
|
||||||
nmap <leader>qf :ALEFix<CR>
|
" nmap <leader>qf :ALEFix<CR>
|
||||||
nmap <leader>k :ALEHover<CR>
|
" nmap <leader>k :ALEHover<CR>
|
||||||
let g:ale_python_auto_virtualenv = 1
|
" let g:ale_python_auto_virtualenv = 1
|
||||||
let g:ale_fix_on_save = 1
|
" let g:ale_fix_on_save = 1
|
||||||
|
|
||||||
" YCM
|
" YCM
|
||||||
set completeopt-=preview
|
" set completeopt-=preview
|
||||||
" autocmd CompleteDone * if pumvisible() == 0 | pclose | endif
|
" autocmd CompleteDone * if pumvisible() == 0 | pclose | endif
|
||||||
|
|
||||||
set langmap=йq,цw,уe,кr,еt,нy,гu,шi,щo,зp,х[,ъ],фa,ыs,вd,аf,пg,рh,оj,лk,дl,ж\\;,э',ё\\,яz,чx,сc,мv,иb,тn,ьm,б\\,,ю.,ЙQ,ЦW,УE,КR,ЕT,НY,ГU,ШI,ЩO,ЗP,Х{,Ъ},ФA,ЫS,ВD,АF,ПG,РH,ОJ,ЛK,ДL,Ж:,Э\\",ЯZ,ЧX,СC,МV,ИB,ТN,ЬM,Б<,Ю>,Ё/|
|
set langmap=йq,цw,уe,кr,еt,нy,гu,шi,щo,зp,х[,ъ],фa,ыs,вd,аf,пg,рh,оj,лk,дl,ж\\;,э',ё\\,яz,чx,сc,мv,иb,тn,ьm,б\\,,ю.,ЙQ,ЦW,УE,КR,ЕT,НY,ГU,ШI,ЩO,ЗP,Х{,Ъ},ФA,ЫS,ВD,АF,ПG,РH,ОJ,ЛK,ДL,Ж:,Э\\",ЯZ,ЧX,СC,МV,ИB,ТN,ЬM,Б<,Ю>,Ё/|
|
||||||
|
|
Binary file not shown.
|
@ -88,6 +88,8 @@ nextcloud &
|
||||||
|
|
||||||
udiskie &
|
udiskie &
|
||||||
|
|
||||||
|
x11vnc -display :0 -rfbauth ~/.vnc/passwd -forever -shared &
|
||||||
|
|
||||||
# mega cloud
|
# mega cloud
|
||||||
# I do not use it anymore since 2025-02-10
|
# I do not use it anymore since 2025-02-10
|
||||||
# megasync &
|
# megasync &
|
||||||
|
|
Loading…
Add table
Reference in a new issue