addded joshuto config

This commit is contained in:
David Chen 2023-05-20 23:14:08 -07:00
parent b678870236
commit abdc9466ec
6 changed files with 624 additions and 2 deletions

1
.gitignore vendored
View file

@ -45,6 +45,7 @@ ranger/plugins/devicons_linemode.pyo
!/lmk
!/.yabairc
!/Default.bttpreset
!/joshuto
jesseduffield/lazynpm/state.yml

42
joshuto/joshuto.toml Normal file
View file

@ -0,0 +1,42 @@
numbered_command = false
use_trash = true
watch_files = true
xdg_open = false
xdg_open_fork = false
[display]
# default, hsplit
mode = "default"
automatically_count_files = true
collapse_preview = true
# ratios for parent view (optional), current view and preview
column_ratio = [1, 3, 4]
scroll_offset = 6
show_borders = false
show_hidden = false
show_icons = true
# Shorten /home/$USER to ~
tilde_in_titlebar = true
# none, absolute, relative
line_number_style = "none"
[display.sort]
# Options include
# - lexical (10.txt comes before 2.txt)
# - natural (2.txt comes before 10.txt)
# - mtime
method = "natural"
case_sensitive = false
directories_first = true
reverse = false
[preview]
max_preview_size = 2097152 # 2MB
preview_script = "~/.config/joshuto/preview_file.sh"
[tab]
# inherit, home, root
home_page = "home"

182
joshuto/keymap.toml Normal file
View file

@ -0,0 +1,182 @@
[default_view]
keymap = [
{ keys = [ "escape" ], command = "escape" },
# { keys = [ "t", "u" ], command = "new_tab" },
# { keys = [ "t", "u" ], command = "new_tab --cursor" },
{ keys = [ "t", "u" ], command = "new_tab --current" },
{ keys = [ "q" ], command = "close_tab" },
{ keys = [ "ctrl+c" ], command = "quit" },
{ keys = [ "Q" ], command = "quit --output-current-directory" },
{ keys = [ "R" ], command = "reload_dirlist" },
{ keys = [ "z", "h" ], command = "toggle_hidden" },
{ keys = [ "ctrl+h" ], command = "toggle_hidden" },
{ keys = [ "t", "i" ], command = "tab_switch 1" },
{ keys = [ "t", "n" ], command = "tab_switch -1" },
{ keys = [ "alt+1" ], command = "tab_switch_index 1" },
{ keys = [ "alt+2" ], command = "tab_switch_index 2" },
{ keys = [ "alt+3" ], command = "tab_switch_index 3" },
{ keys = [ "alt+4" ], command = "tab_switch_index 4" },
{ keys = [ "alt+5" ], command = "tab_switch_index 5" },
{ keys = [ "1" ], command = "numbered_command 1" },
{ keys = [ "2" ], command = "numbered_command 2" },
{ keys = [ "3" ], command = "numbered_command 3" },
{ keys = [ "4" ], command = "numbered_command 4" },
{ keys = [ "5" ], command = "numbered_command 5" },
{ keys = [ "6" ], command = "numbered_command 6" },
{ keys = [ "7" ], command = "numbered_command 7" },
{ keys = [ "8" ], command = "numbered_command 8" },
{ keys = [ "9" ], command = "numbered_command 9" },
# arrow keys
# { keys = [ "arrow_up" ], command = "cursor_move_up" },
# { keys = [ "arrow_down" ], command = "cursor_move_down" },
# { keys = [ "arrow_left" ], command = "cd .." },
# { keys = [ "arrow_right" ], command = "open" },
{ keys = [ "\n" ], command = "open" },
{ keys = [ "home" ], command = "cursor_move_home" },
{ keys = [ "end" ], command = "cursor_move_end" },
{ keys = [ "page_up" ], command = "cursor_move_page_up" },
{ keys = [ "page_down" ], command = "cursor_move_page_down" },
{ keys = [ "ctrl+u" ], command = "cursor_move_page_up 0.5" },
{ keys = [ "ctrl+e" ], command = "cursor_move_page_down 0.5" },
# vim-like keybindings
{ keys = [ "e" ], command = "cursor_move_down" },
{ keys = [ "u" ], command = "cursor_move_up" },
{ keys = [ "E" ], command = "cursor_move_down 5" },
{ keys = [ "U" ], command = "cursor_move_up 5" },
{ keys = [ "n" ], command = "cd .." },
{ keys = [ "h" ], command = "cd -" },
{ keys = [ "i" ], command = "open" },
{ keys = [ "g", "g" ], command = "cursor_move_home" },
{ keys = [ "G" ], command = "cursor_move_end" },
{ keys = [ "r" ], command = "open_with" },
# { keys = [ "H" ], command = "cursor_move_page_home" },
# { keys = [ "L" ], command = "cursor_move_page_middle" },
# { keys = [ "M" ], command = "cursor_move_page_end" },
{ keys = [ "[" ], command = "parent_cursor_move_up" },
{ keys = [ "]" ], command = "parent_cursor_move_down" },
{ keys = [ "c", "d" ], command = ":cd " },
{ keys = [ "d", "d" ], command = "cut_files" },
{ keys = [ "y", "y" ], command = "copy_files" },
{ keys = [ "y", "n" ], command = "copy_filename" },
{ keys = [ "y", "." ], command = "copy_filename_without_extension" },
{ keys = [ "y", "p" ], command = "copy_filepath" },
{ keys = [ "y", "d" ], command = "copy_dirpath" },
{ keys = [ "p", "l" ], command = "symlink_files --relative=false" },
{ keys = [ "p", "L" ], command = "symlink_files --relative=true" },
{ keys = [ "delete" ], command = "delete_files" },
{ keys = [ "d", "D" ], command = "delete_files" },
{ keys = [ "p", "p" ], command = "paste_files" },
{ keys = [ "p", "o" ], command = "paste_files --overwrite=true" },
{ keys = [ "a" ], command = "rename_append" },
{ keys = [ "A" ], command = "rename_prepend" },
{ keys = [ "T" ], command = ":touch " },
{ keys = [ " " ], command = "select --toggle=true" },
{ keys = [ "v" ], command = "select --all=true --toggle=true" },
# { keys = [ "V" ], command = "toggle_visual"},
{ keys = [ "w" ], command = "show_tasks --exit-key=w" },
{ keys = [ "c", "b" ], command = "bulk_rename" },
{ keys = [ "c", "m" ], command = "set_mode" },
{ keys = [ ":" ], command = ":" },
{ keys = [ ";" ], command = ":" },
{ keys = [ "'" ], command = ":shell " },
{ keys = [ "S" ], command = "shell zsh" },
{ keys = [ "ctrl+g" ], command = "shell lazygit" },
{ keys = [ "M" ], command = ":mkdir " },
{ keys = [ "c", "w" ], command = ":rename " },
{ keys = [ "/" ], command = ":search_inc " },
{ keys = [ "f" ], command = ":filter " },
# { keys = [ "/" ], command = ":search " },
# { keys = [ "|" ], command = ":search_inc " },
{ keys = [ "\\" ], command = ":search_glob " },
# { keys = [ "ctrl+f" ], command = "search_fzf" },
{ keys = [ "ctrl+f" ], command = "subdir_fzf" },
{ keys = [ "=" ], command = "search_next" },
{ keys = [ "-" ], command = "search_prev" },
{ keys = [ "o", "r" ], command = "sort reverse" },
{ keys = [ "o", "l" ], command = "sort lexical" },
{ keys = [ "o", "m" ], command = "sort mtime" },
{ keys = [ "o", "c" ], command = "sort mtime" },
{ keys = [ "o", "n" ], command = "sort natural" },
{ keys = [ "o", "s" ], command = "sort size" },
{ keys = [ "o", "e" ], command = "sort ext" },
{ keys = [ "m", "s" ], command = "linemode size" },
{ keys = [ "m", "m" ], command = "linemode mtime" },
{ keys = [ "m", "M" ], command = "linemode sizemtime" },
{ keys = [ "g", "r" ], command = "cd /" },
{ keys = [ "g", "d" ], command = "cd ~/Downloads" },
{ keys = [ "g", "D" ], command = "cd ~/Desktop" },
{ keys = [ "g", "e" ], command = "cd /etc" },
{ keys = [ "g", "h" ], command = "cd ~/" },
{ keys = [ "g", "p" ], command = "cd ~/prog" },
{ keys = [ "g", "i" ], command = "cd ~/Github" },
{ keys = [ "g", "f", "f" ], command = "cd ~/.config" },
{ keys = [ "g", "f", "n" ], command = "cd ~/.config/nvim" },
{ keys = [ "g", "f", "z" ], command = "cd ~/.config/zsh" },
{ keys = [ "g", "f", "j" ], command = "cd ~/.config/joshuto" },
{ keys = [ "g", "f", "l" ], command = "cd ~/.config/jesseduffield/lazygit" },
{ keys = [ "?" ], command = "help" }
]
[task_view]
keymap = [
# arrow keys
{ keys = [ "arrow_up" ], command = "cursor_move_up" },
{ keys = [ "arrow_down" ], command = "cursor_move_down" },
{ keys = [ "home" ], command = "cursor_move_home" },
{ keys = [ "end" ], command = "cursor_move_end" },
# vim-like keybindings
{ keys = [ "e" ], command = "cursor_move_down" },
{ keys = [ "u" ], command = "cursor_move_up" },
{ keys = [ "g", "g" ], command = "cursor_move_home" },
{ keys = [ "G" ], command = "cursor_move_end" },
{ keys = [ "w" ], command = "show_tasks" },
{ keys = [ "escape" ], command = "show_tasks" },
]
[help_view]
keymap = [
# arrow keys
{ keys = [ "arrow_up" ], command = "cursor_move_up" },
{ keys = [ "arrow_down" ], command = "cursor_move_down" },
{ keys = [ "home" ], command = "cursor_move_home" },
{ keys = [ "end" ], command = "cursor_move_end" },
# vim-like keybindings
{ keys = [ "e" ], command = "cursor_move_down" },
{ keys = [ "u" ], command = "cursor_move_up" },
{ keys = [ "E" ], command = "cursor_move_down 5" },
{ keys = [ "U" ], command = "cursor_move_up 5" },
{ keys = [ "g", "g" ], command = "cursor_move_home" },
{ keys = [ "G" ], command = "cursor_move_end" },
{ keys = [ "w" ], command = "show_tasks" },
{ keys = [ "escape" ], command = "show_tasks" },
{ keys = [ "q" ], command = "show_tasks" },
]

199
joshuto/mimetype.toml Normal file
View file

@ -0,0 +1,199 @@
[class]
audio_default = [
{ command = "mpv", args = [ "--" ] },
{ command = "mediainfo", confirm_exit = true },
]
image_default = [
{ command = "qimgv", args = [ "--" ], fork = true, silent = true },
{ command = "krita", args = [ "--" ], fork = true, silent = true },
{ command = "exiftool", confirm_exit = true },
{ command = "swappy", args = [ "-f" ], fork = true },
]
video_default = [
{ command = "mpv", args = [ "--" ] , fork = true, silent = true },
{ command = "mediainfo", confirm_exit = true },
{ command = "mpv", args = [ "--mute", "on", "--" ], fork = true, silent = true },
]
text_default = [
{ command = "nvim" },
{ command = "nano" },
{ command = "gedit", fork = true, silent = true },
{ command = "bat", args = [ "--paging=always" ] },
]
reader_default = [
{ command = "evince", fork = true, silent = true },
]
libreoffice_default = [
{ command = "libreoffice", fork = true, silent = true },
]
[extension]
## image formats
avif.inherit = "image_default"
bmp.inherit = "image_default"
gif.inherit = "image_default"
heic.inherit = "image_default"
jpeg.inherit = "image_default"
jpe.inherit = "image_default"
jpg.inherit = "image_default"
pgm.inherit = "image_default"
png.inherit = "image_default"
ppm.inherit = "image_default"
webp.inherit = "image_default"
svg.app_list = [
{ command = "inkview", fork = true, silent = true },
{ command = "inkscape", fork = true, silent = true } ]
tiff.app_list = [
{ command = "qimgv", fork = true, silent = true },
{ command = "krita", fork = true, silent = true } ]
## audio formats
flac.inherit = "audio_default"
m4a.inherit = "audio_default"
mp3.inherit = "audio_default"
ogg.inherit = "audio_default"
wav.inherit = "audio_default"
## video formats
avi.inherit = "video_default"
av1.inherit = "video_default"
flv.inherit = "video_default"
mkv.inherit = "video_default"
m4v.inherit = "video_default"
mov.inherit = "video_default"
mp4.inherit = "video_default"
ts.inherit = "video_default"
webm.inherit = "video_default"
wmv.inherit = "video_default"
## text formats
build.inherit = "text_default"
c.inherit = "text_default"
cmake.inherit = "text_default"
conf.inherit = "text_default"
cpp.inherit = "text_default"
css.inherit = "text_default"
csv.inherit = "text_default"
cu.inherit = "text_default"
dart.inherit = "text_default"
ebuild.inherit = "text_default"
eex.inherit = "text_default"
env.inherit = "text_default"
ex.inherit = "text_default"
exs.inherit = "text_default"
go.inherit = "text_default"
h.inherit = "text_default"
hpp.inherit = "text_default"
hs.inherit = "text_default"
html.inherit = "text_default"
ini.inherit = "text_default"
java.inherit = "text_default"
js.inherit = "text_default"
json.inherit = "text_default"
kt.inherit = "text_default"
lua.inherit = "text_default"
log.inherit = "text_default"
md.inherit = "text_default"
micro.inherit = "text_default"
ninja.inherit = "text_default"
py.inherit = "text_default"
rkt.inherit = "text_default"
rs.inherit = "text_default"
scss.inherit = "text_default"
sh.inherit = "text_default"
srt.inherit = "text_default"
svelte.inherit = "text_default"
toml.inherit = "text_default"
tsx.inherit = "text_default"
txt.inherit = "text_default"
vim.inherit = "text_default"
xml.inherit = "text_default"
yaml.inherit = "text_default"
yml.inherit = "text_default"
# archive formats
7z.app_list = [
{ command = "7z", args = [ "x" ], confirm_exit = true },
{ command = "file-roller", fork = true, silent = true } ]
bz2.app_list = [
{ command = "tar", args = [ "-xvjf" ], confirm_exit = true },
{ command = "file-roller", fork = true, silent = true } ]
gz.app_list = [
{ command = "tar", args = [ "-xvzf" ], confirm_exit = true },
{ command = "file-roller", fork = true, silent = true } ]
tar.app_list = [
{ command = "tar", args = [ "-xvf" ], confirm_exit = true },
{ command = "file-roller", fork = true, silent = true } ]
tgz.app_list = [
{ command = "tar", args = [ "-xvzf" ], confirm_exit = true },
{ command = "file-roller", fork = true, silent = true } ]
rar.app_list = [
{ command = "unrar", args = [ "x" ], confirm_exit = true },
{ command = "file-roller", fork = true, silent = true } ]
xz.app_list = [
{ command = "tar", args = [ "-xvJf" ], confirm_exit = true },
{ command = "file-roller", fork = true, silent = true } ]
zip.app_list = [
{ command = "unzip", confirm_exit = true },
{ command = "file-roller", fork = true, silent = true } ]
# misc formats
aup.app_list = [
{ command = "audacity", fork = true, silent = true } ]
m3u.app_list = [
{ command = "micro" },
{ command = "mpv" },
{ command = "gedit", fork = true, silent = true },
{ command = "bat", confirm_exit = true } ]
odt.inherit = "libreoffice_default"
odf.inherit = "libreoffice_default"
ods.inherit = "libreoffice_default"
odp.inherit = "libreoffice_default"
doc.inherit = "libreoffice_default"
docx.inherit = "libreoffice_default"
xls.inherit = "libreoffice_default"
xlsx.inherit = "libreoffice_default"
ppt.inherit = "libreoffice_default"
pptx.inherit = "libreoffice_default"
pdf.inherit = "reader_default"
kra.app_list = [
{ command = "krita", fork = true, silent = true }
]
kdenlive.app_list = [
{ command = "kdenlive", fork = true, silent = true }
]
tex.app_list = [
{ command = "micro" },
{ command = "gedit", fork = true, silent = true },
{ command = "bat", confirm_exit = true },
{ command = "pdflatex" } ]
torrent.app_list = [
{ command = "transmission-gtk" } ]
[mimetype]
# application/octet-stream
[mimetype.application.subtype.octet-stream]
inherit = "video_default"
# text/*
[mimetype.text]
inherit = "text_default"
# text/*
[mimetype.video]
inherit = "video_default"

199
joshuto/preview_file.sh Executable file
View file

@ -0,0 +1,199 @@
#!/usr/bin/env bash
## Joshuto will call this script for each file when first hovered by the cursor.
## If this script returns with an exit code 0, the stdout of this script will be
## the file's preview text in Joshuto's right panel.
## The preview text will be cached by Joshuto and only renewed on reload.
## ANSI color codes are supported if Joshuto is build with the `syntax_highlight`
## feature.
##
## This script is considered a configuration file and must be updated manually.
## It will be left untouched if you upgrade Joshuto.
##
## Meanings of exit codes:
##
## code | meaning | action of ranger
## -----+------------+-------------------------------------------
## 0 | success | Display stdout as preview
## 1 | no preview | Display no preview at all
##
## This script is used only as a provider for textual previews.
## Image previews are independent from this script.
##
IFS=$'\n'
# Security measures:
# * noclobber prevents you from overwriting a file with `>`
# * noglob prevents expansion of wild cards
# * nounset causes bash to fail if an undeclared variable is used (e.g. typos)
# * pipefail causes a pipeline to fail also if a command other than the last one fails
set -o noclobber -o noglob -o nounset -o pipefail
FILE_PATH=""
PREVIEW_WIDTH=10
PREVIEW_HEIGHT=10
while [ "$#" -gt 0 ]; do
case "$1" in
"--path")
shift
FILE_PATH="$1"
;;
"--preview-width")
shift
PREVIEW_WIDTH="$1"
;;
"--preview-height")
shift
PREVIEW_HEIGHT="$1"
;;
esac
shift
done
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 0
bsdtar --list --file "${FILE_PATH}" && exit 0
exit 1;;
rar)
## Avoid password prompt by providing empty password
unrar lt -p- -- "${FILE_PATH}" && exit 0
exit 1;;
7z)
## Avoid password prompt by providing empty password
7z l -p -- "${FILE_PATH}" && exit 0
exit 1;;
## PDF
pdf)
## Preview as text conversion
pdftotext -l 10 -nopgbrk -q -- "${FILE_PATH}" - | \
fmt -w "${PREVIEW_WIDTH}" && exit 0
mutool draw -F txt -i -- "${FILE_PATH}" 1-10 | \
fmt -w "${PREVIEW_WIDTH}" && exit 0
exiftool "${FILE_PATH}" && exit 0
exit 1;;
## BitTorrent
torrent)
transmission-show -- "${FILE_PATH}" && exit 0
exit 1;;
## OpenDocument
odt|ods|odp|sxw)
## Preview as text conversion
odt2txt "${FILE_PATH}" && exit 0
## Preview as markdown conversion
pandoc -s -t markdown -- "${FILE_PATH}" && exit 0
exit 1;;
## XLSX
xlsx)
## Preview as csv conversion
## Uses: https://github.com/dilshod/xlsx2csv
xlsx2csv -- "${FILE_PATH}" && exit 0
exit 1;;
## HTML
htm|html|xhtml)
## Preview as text conversion
w3m -dump "${FILE_PATH}" && exit 0
lynx -dump -- "${FILE_PATH}" && exit 0
elinks -dump "${FILE_PATH}" && exit 0
pandoc -s -t markdown -- "${FILE_PATH}" && exit 0
;;
## JSON
json|ipynb)
jq --color-output . "${FILE_PATH}" && exit 0
python -m json.tool -- "${FILE_PATH}" && exit 0
;;
## Direct Stream Digital/Transfer (DSDIFF) and wavpack aren't detected
## by file(1).
dff|dsf|wv|wvc)
mediainfo "${FILE_PATH}" && exit 0
exiftool "${FILE_PATH}" && exit 0
;; # Continue with next handler on failure
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 0
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}" | bat -l markdown \
--color=always --paging=never \
--style=plain \
--terminal-width="${PREVIEW_WIDTH}" && exit 0
exit 1;;
## E-mails
message/rfc822)
## Parsing performed by mu: https://github.com/djcb/mu
mu view -- "${FILE_PATH}" && exit 0
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 0
exit 1;;
## Text
text/* | */xml)
bat --color=always --paging=never \
--style=plain \
--terminal-width="${PREVIEW_WIDTH}" \
"${FILE_PATH}" && exit 0
cat "${FILE_PATH}" && exit 0
exit 1;;
## DjVu
image/vnd.djvu)
## Preview as text conversion (requires djvulibre)
djvutxt "${FILE_PATH}" | fmt -w "${PREVIEW_WIDTH}" && exit 0
exiftool "${FILE_PATH}" && exit 0
exit 1;;
## Image
image/*)
## Preview as text conversion
exiftool "${FILE_PATH}" && exit 0
exit 1;;
## Video and audio
video/* | audio/*)
mediainfo "${FILE_PATH}" && exit 0
exiftool "${FILE_PATH}" && exit 0
exit 1;;
esac
}
FILE_EXTENSION="${FILE_PATH##*.}"
FILE_EXTENSION_LOWER="$(printf "%s" "${FILE_EXTENSION}" | tr '[:upper:]' '[:lower:]')"
handle_extension
MIMETYPE="$( file --dereference --brief --mime-type -- "${FILE_PATH}" )"
handle_mime "${MIMETYPE}"
exit 1

View file

@ -12,7 +12,7 @@ alias ms='mailsync'
alias mt='neomutt'
alias r='echo $RANGER_LEVEL'
alias pu='python3 -m pudb'
alias ra='ranger'
alias ra='joshuto'
# ra() {
#if [ -z "$RANGER_LEVEL" ]
#then
@ -27,7 +27,6 @@ alias sra='sudo -E ranger'
alias sudo='sudo -E'
alias vim='nvim'
alias gs='git config credential.helper store'
alias bat='sudo tlp bat'
alias ac='sudo tlp ac'
alias gy='git-yolo'
alias nb='newsboat -r'