292
modules/home/programs/console/joshuto.nix
Normal file
292
modules/home/programs/console/joshuto.nix
Normal file
@ -0,0 +1,292 @@
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.console.joshuto;
|
||||
in {
|
||||
options = {
|
||||
console.joshuto.enable =
|
||||
mkEnableOption "enable joshuto file manager";
|
||||
};
|
||||
config =
|
||||
# let
|
||||
# test = pkgs.writeShellApplication {
|
||||
# name = "upgrade";
|
||||
# text = ''
|
||||
# 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
|
||||
# # Enable exiftool large file support
|
||||
# shopt -s expand_aliases
|
||||
# alias exiftool='exiftool -api largefilesupport=1'
|
||||
# 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 | sxw)
|
||||
# ## Preview as text conversion
|
||||
# odt2txt "\$\{FILE_PATH}" && exit 0
|
||||
# ## Preview as markdown conversion
|
||||
# pandoc -s -t markdown -- "\$\{FILE_PATH}" && exit 0
|
||||
# exit 1
|
||||
# ;;
|
||||
# ods | odp)
|
||||
# ## Preview as text conversion (unsupported by pandoc for markdown)
|
||||
# odt2txt "\$\{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
|
||||
# bat --color=always --paging=never \
|
||||
# --style=plain \
|
||||
# --terminal-width="\$\{PREVIEW_WIDTH}" \
|
||||
# "\$\{FILE_PATH}" && exit 0
|
||||
# ;;
|
||||
# ## JSON
|
||||
# json | ipynb)
|
||||
# jq --color-output . "\$\{FILE_PATH}" && exit 0
|
||||
# python -m json.tool -- "\$\{FILE_PATH}" && exit 0
|
||||
# bat --color=always --paging=never \
|
||||
# --style=plain \
|
||||
# --terminal-width="\$\{PREVIEW_WIDTH}" \
|
||||
# "\$\{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
|
||||
# '';
|
||||
# };
|
||||
# in
|
||||
lib.mkIf cfg.enable {
|
||||
home.packages = [pkgs.file];
|
||||
programs.joshuto = {
|
||||
enable = true;
|
||||
settings = {
|
||||
mouse_support = true;
|
||||
focus_on_create = true;
|
||||
use_trash = true;
|
||||
watch_files = true;
|
||||
xdg_open = true;
|
||||
xdg_open_fork = true;
|
||||
case_insensitive_ext = false;
|
||||
# zoxide_update = true;
|
||||
display = {
|
||||
mode = "minimal";
|
||||
show_icons = true;
|
||||
column_ratio = [1 5 2];
|
||||
};
|
||||
preview = {
|
||||
# preview_script = lib.getExe pkgs.pistol;
|
||||
use_xdg_thumbs = true;
|
||||
xdg_thumb_size = "xxlarge";
|
||||
};
|
||||
};
|
||||
mimetype = {
|
||||
class = {
|
||||
text_default = [
|
||||
{
|
||||
command = "hx";
|
||||
}
|
||||
];
|
||||
};
|
||||
extension = {
|
||||
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";
|
||||
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";
|
||||
log."inherit" = "text_default";
|
||||
lua."inherit" = "text_default";
|
||||
md."inherit" = "text_default";
|
||||
micro."inherit" = "text_default";
|
||||
ninja."inherit" = "text_default";
|
||||
nix."inherit" = "text_default";
|
||||
norg."inherit" = "text_default";
|
||||
org."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";
|
||||
};
|
||||
mimetype = {
|
||||
text = {"inherit" = "text_default";};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user