2023-06-16 16:07:05 +02:00
|
|
|
{
|
2023-06-16 16:01:42 +02:00
|
|
|
programs.joshuto = {
|
|
|
|
enable = true;
|
2023-06-16 14:19:22 +02:00
|
|
|
|
2023-06-16 16:01:42 +02:00
|
|
|
settings = {
|
|
|
|
display = {
|
|
|
|
automatically_count_files = true;
|
|
|
|
show_borders = false;
|
|
|
|
show_hidden = true;
|
|
|
|
show_icons = true;
|
|
|
|
line_number_style = "absolute";
|
|
|
|
collapse_preview = false;
|
|
|
|
};
|
2023-06-16 14:19:22 +02:00
|
|
|
|
2023-06-16 16:01:42 +02:00
|
|
|
preview = {
|
|
|
|
max_preview_size = 10000000000;
|
|
|
|
preview_script = "~/.config/joshuto/preview.sh";
|
|
|
|
preview_shown_hook_script = "~/.config/joshuto/kitty-show.sh";
|
|
|
|
preview_removed_hook_script = "~/.config/joshuto/kitty-remove.sh";
|
|
|
|
};
|
|
|
|
};
|
2023-06-16 16:07:05 +02:00
|
|
|
|
2023-06-16 17:41:34 +02:00
|
|
|
mimetype = {
|
|
|
|
class = {
|
2023-06-16 17:42:36 +02:00
|
|
|
audio_default = [
|
2023-06-16 17:41:34 +02:00
|
|
|
{ command = "mpv"; args = [ "--" ]; }
|
|
|
|
{ command = "mediainfo"; confirm_exit = true; }
|
|
|
|
];
|
|
|
|
|
2023-06-16 17:42:36 +02:00
|
|
|
image_default = [
|
2023-06-16 17:41:34 +02:00
|
|
|
{ command = "feh"; args = [ "--" ]; fork = true; silent = true; }
|
|
|
|
];
|
|
|
|
|
2023-06-16 17:42:36 +02:00
|
|
|
video_default = [
|
2023-06-16 17:41:34 +02:00
|
|
|
{ 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"; }
|
|
|
|
];
|
|
|
|
|
|
|
|
reader_default = [
|
|
|
|
{ command = "zathura"; fork = true; silent = true; }
|
|
|
|
];
|
|
|
|
|
2023-06-16 17:42:36 +02:00
|
|
|
libreoffice_default = [
|
2023-06-16 17:41:34 +02:00
|
|
|
{ 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";
|
|
|
|
|
|
|
|
## 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";
|
|
|
|
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";
|
|
|
|
lock."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
|
2023-06-16 17:42:36 +02:00
|
|
|
"7z".app_list = [ { command = "7z"; args = [ "x" ]; confirm_exit = true; } ];
|
|
|
|
rar.app_list = [
|
2023-06-16 17:41:34 +02:00
|
|
|
{ command = "unrar"; args = [ "x" ]; confirm_exit = true; }
|
|
|
|
{ command = "file-roller"; fork = true; silent = true; } ];
|
2023-06-16 17:42:36 +02:00
|
|
|
zip.app_list = [
|
2023-06-16 17:41:34 +02:00
|
|
|
{ command = "unzip"; confirm_exit = true; }
|
|
|
|
{ command = "file-roller"; fork = true; silent = true; } ];
|
|
|
|
|
|
|
|
# misc formats
|
2023-06-16 17:42:36 +02:00
|
|
|
aup.app_list = [
|
2023-06-16 17:41:34 +02:00
|
|
|
{ command = "audacity"; fork = true; silent = true; } ];
|
|
|
|
|
2023-06-16 17:42:36 +02:00
|
|
|
odt."inherit" = "libreoffice_default";
|
|
|
|
odf."inherit" = "libreoffice_default";
|
|
|
|
ods."inherit" = "libreoffice_default";
|
|
|
|
odp."inherit" = "libreoffice_default";
|
2023-06-16 17:41:34 +02:00
|
|
|
|
2023-06-16 17:42:36 +02:00
|
|
|
doc."inherit" = "libreoffice_default";
|
|
|
|
docx."inherit" = "libreoffice_default";
|
|
|
|
xls."inherit" = "libreoffice_default";
|
|
|
|
xlsx."inherit" = "libreoffice_default";
|
|
|
|
ppt."inherit" = "libreoffice_default";
|
|
|
|
pptx."inherit" = "libreoffice_default";
|
2023-06-16 17:41:34 +02:00
|
|
|
|
2023-06-16 17:42:36 +02:00
|
|
|
pdf."inherit" = "reader_default";
|
2023-06-16 17:41:34 +02:00
|
|
|
|
|
|
|
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.subtype.octet-stream."inherit" = "video_default";
|
|
|
|
text."inherit" = "text_default";
|
|
|
|
video."inherit" = "video_default";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2023-06-16 16:22:47 +02:00
|
|
|
keymap = {
|
|
|
|
default_view = {
|
|
|
|
keymap = [
|
|
|
|
{ keys = ["escape"]; command = "escape"; }
|
|
|
|
{ keys = ["ctrl+t"]; command = "new_tab"; }
|
|
|
|
{ keys = ["alt+t"]; command = "new_tab --cursor"; }
|
|
|
|
{ keys = ["T"]; command = "new_tab --current"; }
|
|
|
|
{ keys = ["W"]; command = "close_tab"; }
|
|
|
|
{ keys = ["ctrl+w"]; command = "close_tab"; }
|
|
|
|
{ keys = ["q"]; command = "close_tab"; }
|
|
|
|
{ keys = ["ctrl+c"]; command = "quit"; }
|
|
|
|
{ keys = ["o"]; command = "quit --output-selected-files"; }
|
|
|
|
|
|
|
|
{ keys = ["R"]; command = "reload_dirlist"; }
|
|
|
|
{ keys = ["z" "h"]; command = "toggle_hidden"; }
|
|
|
|
{ keys = ["ctrl+h"]; command = "toggle_hidden"; }
|
|
|
|
{ keys = ["\t"]; command = "tab_switch 1"; }
|
|
|
|
{ keys = ["backtab"]; 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+d"]; command = "cursor_move_page_down 0.5"; }
|
|
|
|
|
|
|
|
# vim-like keybindings
|
|
|
|
{ keys = ["j"]; command = "cursor_move_down"; }
|
|
|
|
{ keys = ["k"]; command = "cursor_move_up"; }
|
|
|
|
{ keys = ["h"]; command = "cd .."; }
|
|
|
|
{ keys = ["l"]; 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 = ["f" "t"]; command = ":touch "; }
|
|
|
|
|
|
|
|
{ keys = [" "]; command = "select --toggle=true"; }
|
|
|
|
{ keys = ["t"]; command = "select --all=true --toggle=true"; }
|
|
|
|
{ keys = ["V"]; command = "toggle_visual"; }
|
|
|
|
|
|
|
|
{ keys = ["w"]; command = "show_tasks --exit-key=w"; }
|
|
|
|
{ keys = ["b" "b"]; command = "bulk_rename"; }
|
|
|
|
{ keys = ["="]; command = "set_mode"; }
|
|
|
|
|
|
|
|
{ keys = [":"]; command = ":"; }
|
|
|
|
{ keys = [";"]; command = ":"; }
|
|
|
|
|
|
|
|
{ keys = ["'"]; command = ":shell "; }
|
|
|
|
{ keys = ["m" "k"]; command = ":mkdir "; }
|
|
|
|
{ keys = ["c" "w"]; command = ":rename "; }
|
|
|
|
|
|
|
|
{ keys = ["/"]; command = ":search "; }
|
|
|
|
{ keys = ["|"]; command = ":search_inc "; }
|
|
|
|
{ keys = ["\\"]; command = ":search_glob "; }
|
|
|
|
{ keys = ["S"]; command = "search_fzf"; }
|
|
|
|
{ keys = ["C"]; command = "subdir_fzf"; }
|
|
|
|
|
|
|
|
{ keys = ["n"]; command = "search_next"; }
|
|
|
|
{ keys = ["N"]; command = "search_prev"; }
|
|
|
|
|
|
|
|
{ keys = ["s" "r"]; command = "sort reverse"; }
|
|
|
|
{ keys = ["s" "l"]; command = "sort lexical"; }
|
|
|
|
{ keys = ["s" "m"]; command = "sort mtime"; }
|
|
|
|
{ keys = ["s" "n"]; command = "sort natural"; }
|
|
|
|
{ keys = ["s" "s"]; command = "sort size"; }
|
|
|
|
{ keys = ["s" "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" "c"]; command = "cd ~/.config"; }
|
|
|
|
{ keys = ["g" "d"]; command = "cd ~/Downloads"; }
|
|
|
|
{ keys = ["g" "e"]; command = "cd /etc"; }
|
|
|
|
{ keys = ["g" "h"]; command = "cd ~/"; }
|
|
|
|
{ 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 = ["j"]; command = "cursor_move_down"; }
|
|
|
|
{ keys = ["k"]; 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 = ["j"]; command = "cursor_move_down"; }
|
|
|
|
{ keys = ["k"]; 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"; }
|
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2023-06-16 16:07:05 +02:00
|
|
|
theme = {
|
|
|
|
selection = {
|
|
|
|
fg = "light_yellow";
|
|
|
|
bold = true;
|
|
|
|
};
|
|
|
|
|
|
|
|
visual_mode_selection = {
|
|
|
|
fg = "light_red";
|
|
|
|
bold = true;
|
|
|
|
};
|
|
|
|
|
|
|
|
selection.prefix = {
|
|
|
|
prefix = " ";
|
|
|
|
size = 2;
|
|
|
|
};
|
|
|
|
|
|
|
|
executable = {
|
|
|
|
fg = "light_green";
|
|
|
|
bold = true;
|
|
|
|
};
|
|
|
|
|
|
|
|
regular = {
|
|
|
|
fg = "white";
|
|
|
|
};
|
|
|
|
|
|
|
|
directory = {
|
|
|
|
fg = "light_blue";
|
|
|
|
bold = true;
|
|
|
|
};
|
|
|
|
|
|
|
|
link = {
|
|
|
|
fg = "cyan";
|
|
|
|
bold = true;
|
|
|
|
};
|
|
|
|
|
|
|
|
link_invalid = {
|
|
|
|
fg = "red";
|
|
|
|
bold = true;
|
|
|
|
};
|
|
|
|
|
|
|
|
socket = {
|
|
|
|
fg = "light_magenta";
|
|
|
|
bold = true;
|
|
|
|
};
|
|
|
|
|
|
|
|
ext = {
|
|
|
|
bmp.fg = "yellow";
|
|
|
|
gif.fg = "yellow";
|
|
|
|
heic.fg = "yellow";
|
|
|
|
jpg.fg = "yellow";
|
|
|
|
jpeg.fg = "yellow";
|
|
|
|
pgm.fg = "yellow";
|
|
|
|
png.fg = "yellow";
|
|
|
|
ppm.fg = "yellow";
|
|
|
|
svg.fg = "yellow";
|
|
|
|
|
|
|
|
wav.fg = "magenta";
|
|
|
|
flac.fg = "magenta";
|
|
|
|
mp3.fg = "magenta";
|
|
|
|
amr.fg = "magenta";
|
|
|
|
|
|
|
|
avi.fg = "magenta";
|
|
|
|
flv.fg = "magenta";
|
|
|
|
m3u.fg = "magenta";
|
|
|
|
m4a.fg = "magenta";
|
|
|
|
m4v.fg = "magenta";
|
|
|
|
mkv.fg = "magenta";
|
|
|
|
mov.fg = "magenta";
|
|
|
|
mp4.fg = "magenta";
|
|
|
|
mpg.fg = "magenta";
|
|
|
|
rmvb.fg = "magenta";
|
|
|
|
webm.fg = "magenta";
|
|
|
|
wmv.fg = "magenta";
|
|
|
|
|
|
|
|
"7z".fg = "red";
|
|
|
|
bz2.fg = "red";
|
|
|
|
gz.fg = "red";
|
|
|
|
rar.fg = "red";
|
|
|
|
tar.fg = "red";
|
|
|
|
tgz.fg = "red";
|
|
|
|
xz.fg = "red";
|
|
|
|
zip.fg = "red";
|
|
|
|
};
|
|
|
|
};
|
2023-06-16 16:01:42 +02:00
|
|
|
};
|
2023-06-16 14:19:22 +02:00
|
|
|
|
2023-06-16 17:53:12 +02:00
|
|
|
xdg.configFile = {
|
|
|
|
"joshuto/preview.sh" = {
|
|
|
|
executable = true;
|
|
|
|
text = /* bash */ ''
|
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
IFS=$'\n'
|
|
|
|
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
|
|
|
|
|
|
|
|
realpath=$(realpath "$FILE_PATH")
|
|
|
|
|
|
|
|
handle_extension() {
|
|
|
|
case "''${FILE_EXTENSION_LOWER}" in
|
|
|
|
lock)
|
|
|
|
cat "''${FILE_PATH}" && exit 0
|
|
|
|
exit 1;;
|
|
|
|
|
|
|
|
rar)
|
|
|
|
unrar lt -p- -- "''${FILE_PATH}" && exit 0
|
|
|
|
exit 1;;
|
|
|
|
7z)
|
|
|
|
7z l -p -- "''${FILE_PATH}" && exit 0
|
|
|
|
exit 1;;
|
|
|
|
|
|
|
|
pdf)
|
|
|
|
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;;
|
|
|
|
|
|
|
|
torrent)
|
|
|
|
transmission-show -- "''${FILE_PATH}" && exit 0
|
|
|
|
exit 1;;
|
|
|
|
|
|
|
|
json)
|
|
|
|
jq --color-output . "''${FILE_PATH}" && exit 0
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
|
|
handle_mime() {
|
|
|
|
local mimetype="''${1}"
|
|
|
|
|
|
|
|
case "''${mimetype}" in
|
|
|
|
## 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;;
|
|
|
|
|
|
|
|
## Image
|
|
|
|
image/*)
|
|
|
|
exit 5;;
|
|
|
|
|
|
|
|
## Video and audio
|
|
|
|
video/* | audio/*)
|
|
|
|
echo "$realpath"
|
|
|
|
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
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
|
|
|
"joshuto/kitty-show.sh" = {
|
|
|
|
executable = true;
|
|
|
|
text = /* bash */ ''
|
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
FILE_PATH="$1" # Full path of the previewed file
|
|
|
|
PREVIEW_X_COORD="$2" # x coordinate of upper left cell of preview area
|
|
|
|
PREVIEW_Y_COORD="$3" # y coordinate of upper left cell of preview area
|
|
|
|
PREVIEW_WIDTH="$4" # Width of the preview pane (number of fitting characters)
|
|
|
|
PREVIEW_HEIGHT="$5" # Height of the preview pane (number of fitting characters)
|
|
|
|
|
|
|
|
TMP_FILE="$HOME/.cache/joshuto/thumbcache.png"
|
|
|
|
|
|
|
|
mimetype=$(file --mime-type -Lb "$FILE_PATH")
|
|
|
|
|
|
|
|
function image {
|
|
|
|
kitty +kitten icat \
|
|
|
|
--transfer-mode=file \
|
|
|
|
--clear 2>/dev/null
|
|
|
|
kitty +kitten icat \
|
|
|
|
--transfer-mode=file \
|
|
|
|
--place "''${PREVIEW_WIDTH}x''${PREVIEW_HEIGHT}@''${PREVIEW_X_COORD}x''${PREVIEW_Y_COORD}" \
|
|
|
|
"$1" 2>/dev/null
|
|
|
|
}
|
|
|
|
|
|
|
|
case "$mimetype" in
|
|
|
|
image/*)
|
|
|
|
image "''${FILE_PATH}"
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
kitty +kitten icat \
|
|
|
|
--transfer-mode=file \
|
|
|
|
--clear 2>/dev/null
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
|
|
|
"joshuto/kitty-remove.sh" = {
|
|
|
|
executable = true;
|
|
|
|
text = /* bash */ ''
|
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
kitty +kitten icat --transfer-mode=file --clear 2>/dev/null
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
};
|
2023-06-16 14:19:22 +02:00
|
|
|
|
|
|
|
xdg.configFile."joshuto/icons.toml".text = /* toml */ ''
|
|
|
|
# Default fallback icons
|
|
|
|
[defaults]
|
|
|
|
file = ""
|
|
|
|
directory = ""
|
|
|
|
|
|
|
|
# Directory exact match icons
|
|
|
|
[directory_exact]
|
|
|
|
# English
|
|
|
|
".git" = ""
|
|
|
|
"Desktop" = ""
|
|
|
|
"Documents" = ""
|
|
|
|
"Downloads" = ""
|
|
|
|
"Dotfiles" = ""
|
|
|
|
"Dropbox" = ""
|
|
|
|
"Music" = ""
|
|
|
|
"Pictures" = ""
|
|
|
|
"Public" = ""
|
|
|
|
"Templates" = ""
|
|
|
|
"Videos" = ""
|
|
|
|
|
|
|
|
# File exact match icons
|
|
|
|
[file_exact]
|
|
|
|
".bash_aliases" = ""
|
|
|
|
".bash_history" = ""
|
|
|
|
".bash_logout" = ""
|
|
|
|
".bash_profile" = ""
|
|
|
|
".bashprofile" = ""
|
|
|
|
".bashrc" = ""
|
|
|
|
".dmrc" = ""
|
|
|
|
".DS_Store" = ""
|
|
|
|
".fasd" = ""
|
|
|
|
".fehbg" = ""
|
|
|
|
".gitattributes" = ""
|
|
|
|
".gitconfig" = ""
|
|
|
|
".gitignore" = ""
|
|
|
|
".gitlab-ci.yml" = ""
|
|
|
|
".gvimrc" = ""
|
|
|
|
".inputrc" = ""
|
|
|
|
".jack-settings" = ""
|
|
|
|
".mime.types" = ""
|
|
|
|
".ncmpcpp" = ""
|
|
|
|
".nvidia-settings-rc" = ""
|
|
|
|
".pam_environment" = ""
|
|
|
|
".profile" = ""
|
|
|
|
".recently-used" = ""
|
|
|
|
".selected_editor" = ""
|
|
|
|
".vim" = ""
|
|
|
|
".viminfo" = ""
|
|
|
|
".vimrc" = ""
|
|
|
|
".Xauthority" = ""
|
|
|
|
".Xdefaults" = ""
|
|
|
|
".xinitrc" = ""
|
|
|
|
".xinputrc" = ""
|
|
|
|
".Xresources" = ""
|
|
|
|
".zshrc" = ""
|
|
|
|
"_gvimrc" = ""
|
|
|
|
"_vimrc" = ""
|
|
|
|
"a.out" = ""
|
|
|
|
"authorized_keys" = ""
|
|
|
|
"bspwmrc" = ""
|
|
|
|
"cmakelists.txt" = ""
|
|
|
|
"config" = ""
|
|
|
|
"config.ac" = ""
|
|
|
|
"config.m4" = ""
|
|
|
|
"config.mk" = ""
|
|
|
|
"config.ru" = ""
|
|
|
|
"configure" = ""
|
|
|
|
"docker-compose.yml" = ""
|
|
|
|
"dockerfile" = ""
|
|
|
|
"Dockerfile" = ""
|
|
|
|
"dropbox" = ""
|
|
|
|
"exact-match-case-sensitive-1.txt" = "X1"
|
|
|
|
"exact-match-case-sensitive-2" = "X2"
|
|
|
|
"favicon.ico" = ""
|
|
|
|
"gemfile" = ""
|
|
|
|
"gruntfile.coffee" = ""
|
|
|
|
"gruntfile.js" = ""
|
|
|
|
"gruntfile.ls" = ""
|
|
|
|
"gulpfile.coffee" = ""
|
|
|
|
"gulpfile.js" = ""
|
|
|
|
"gulpfile.ls" = ""
|
|
|
|
"ini" = ""
|
|
|
|
"known_hosts" = ""
|
|
|
|
"ledger" = ""
|
|
|
|
"license" = ""
|
|
|
|
"LICENSE" = ""
|
|
|
|
"LICENSE.md" = ""
|
|
|
|
"LICENSE.txt" = ""
|
|
|
|
"Makefile" = ""
|
|
|
|
"makefile" = ""
|
|
|
|
"Makefile.ac" = ""
|
|
|
|
"Makefile.in" = ""
|
|
|
|
"mimeapps.list" = ""
|
|
|
|
"mix.lock" = ""
|
|
|
|
"node_modules" = ""
|
|
|
|
"package-lock.json" = ""
|
|
|
|
"package.json" = ""
|
|
|
|
"playlists" = ""
|
|
|
|
"procfile" = ""
|
|
|
|
"Rakefile" = ""
|
|
|
|
"rakefile" = ""
|
|
|
|
"react.jsx" = ""
|
|
|
|
"README" = ""
|
|
|
|
"README.markdown" = ""
|
|
|
|
"README.md" = ""
|
|
|
|
"README.rst" = ""
|
|
|
|
"README.txt" = ""
|
|
|
|
"sxhkdrc" = ""
|
|
|
|
"user-dirs.dirs" = ""
|
|
|
|
"webpack.config.js" = ""
|
|
|
|
|
|
|
|
# File extension match
|
|
|
|
[ext]
|
|
|
|
"7z" = ""
|
|
|
|
"a" = ""
|
|
|
|
"ai" = ""
|
|
|
|
"apk" = ""
|
|
|
|
"asm" = ""
|
|
|
|
"asp" = ""
|
|
|
|
"aup" = ""
|
|
|
|
"avi" = ""
|
|
|
|
"awk" = ""
|
|
|
|
"bash" = ""
|
|
|
|
"bat" = ""
|
|
|
|
"bmp" = ""
|
|
|
|
"bz2" = ""
|
|
|
|
"c" = ""
|
|
|
|
"c++" = ""
|
|
|
|
"cab" = ""
|
|
|
|
"cbr" = ""
|
|
|
|
"cbz" = ""
|
|
|
|
"cc" = ""
|
|
|
|
"class" = ""
|
|
|
|
"clj" = ""
|
|
|
|
"cljc" = ""
|
|
|
|
"cljs" = ""
|
|
|
|
"cmake" = ""
|
|
|
|
"coffee" = ""
|
|
|
|
"conf" = ""
|
|
|
|
"cp" = ""
|
|
|
|
"cpio" = ""
|
|
|
|
"cpp" = ""
|
|
|
|
"cs" = ""
|
|
|
|
"csh" = ""
|
|
|
|
"css" = ""
|
|
|
|
"cue" = ""
|
|
|
|
"cvs" = ""
|
|
|
|
"cxx" = ""
|
|
|
|
"d" = ""
|
|
|
|
"dart" = ""
|
|
|
|
"db" = ""
|
|
|
|
"deb" = ""
|
|
|
|
"diff" = ""
|
|
|
|
"dll" = ""
|
|
|
|
"doc" = ""
|
|
|
|
"docx" = ""
|
|
|
|
"dump" = ""
|
|
|
|
"edn" = ""
|
|
|
|
"eex" = ""
|
|
|
|
"efi" = ""
|
|
|
|
"ejs" = ""
|
|
|
|
"elf" = ""
|
|
|
|
"elm" = ""
|
|
|
|
"epub" = ""
|
|
|
|
"erl" = ""
|
|
|
|
"ex" = ""
|
|
|
|
"exe" = ""
|
|
|
|
"exs" = ""
|
|
|
|
"f//" = ""
|
|
|
|
"fifo" = "|"
|
|
|
|
"fish" = ""
|
|
|
|
"flac" = ""
|
|
|
|
"flv" = ""
|
|
|
|
"fs" = ""
|
|
|
|
"fsi" = ""
|
|
|
|
"fsscript" = ""
|
|
|
|
"fsx" = ""
|
|
|
|
"gem" = ""
|
|
|
|
"gemspec" = ""
|
|
|
|
"gif" = ""
|
|
|
|
"go" = ""
|
|
|
|
"gz" = ""
|
|
|
|
"gzip" = ""
|
|
|
|
"h" = ""
|
|
|
|
"haml" = ""
|
|
|
|
"hbs" = ""
|
|
|
|
"hh" = ""
|
|
|
|
"hpp" = ""
|
|
|
|
"hrl" = ""
|
|
|
|
"hs" = ""
|
|
|
|
"htaccess" = ""
|
|
|
|
"htm" = ""
|
|
|
|
"html" = ""
|
|
|
|
"htpasswd" = ""
|
|
|
|
"hxx" = ""
|
|
|
|
"ico" = ""
|
|
|
|
"img" = ""
|
|
|
|
"ini" = ""
|
|
|
|
"iso" = ""
|
|
|
|
"jar" = ""
|
|
|
|
"java" = ""
|
|
|
|
"jl" = ""
|
|
|
|
"jpeg" = ""
|
|
|
|
"jpg" = ""
|
|
|
|
"js" = ""
|
|
|
|
"json" = ""
|
|
|
|
"jsx" = ""
|
|
|
|
"key" = ""
|
|
|
|
"ksh" = ""
|
|
|
|
"leex" = ""
|
|
|
|
"less" = ""
|
|
|
|
"lha" = ""
|
|
|
|
"lhs" = ""
|
|
|
|
"log" = ""
|
|
|
|
"lua" = ""
|
|
|
|
"lzh" = ""
|
|
|
|
"lzma" = ""
|
|
|
|
"m4a" = ""
|
|
|
|
"m4v" = ""
|
|
|
|
"markdown" = ""
|
|
|
|
"md" = ""
|
|
|
|
"mdx" = ""
|
|
|
|
"mjs" = ""
|
|
|
|
"mkv" = ""
|
|
|
|
"ml" = "λ"
|
|
|
|
"mli" = "λ"
|
|
|
|
"mov" = ""
|
|
|
|
"mp3" = ""
|
|
|
|
"mp4" = ""
|
|
|
|
"mpeg" = ""
|
|
|
|
"mpg" = ""
|
|
|
|
"msi" = ""
|
|
|
|
"mustache" = ""
|
|
|
|
"nix" = ""
|
|
|
|
"o" = ""
|
|
|
|
"ogg" = ""
|
|
|
|
"pdf" = ""
|
|
|
|
"php" = ""
|
|
|
|
"pl" = ""
|
|
|
|
"pm" = ""
|
|
|
|
"png" = ""
|
|
|
|
"pp" = ""
|
|
|
|
"ppt" = ""
|
|
|
|
"pptx" = ""
|
|
|
|
"ps1" = ""
|
|
|
|
"psb" = ""
|
|
|
|
"psd" = ""
|
|
|
|
"pub" = ""
|
|
|
|
"py" = ""
|
|
|
|
"pyc" = ""
|
|
|
|
"pyd" = ""
|
|
|
|
"pyo" = ""
|
|
|
|
"r" = "ﳒ"
|
|
|
|
"rake" = ""
|
|
|
|
"rar" = ""
|
|
|
|
"rb" = ""
|
|
|
|
"rc" = ""
|
|
|
|
"rlib" = ""
|
|
|
|
"rmd" = ""
|
|
|
|
"rom" = ""
|
|
|
|
"rpm" = ""
|
|
|
|
"rproj" = "鉶"
|
|
|
|
"rs" = ""
|
|
|
|
"rss" = ""
|
|
|
|
"rtf" = ""
|
|
|
|
"s" = ""
|
|
|
|
"sass" = ""
|
|
|
|
"scala" = ""
|
|
|
|
"scss" = ""
|
|
|
|
"sh" = ""
|
|
|
|
"slim" = ""
|
|
|
|
"sln" = ""
|
|
|
|
"so" = ""
|
|
|
|
"sql" = ""
|
|
|
|
"styl" = ""
|
|
|
|
"suo" = ""
|
|
|
|
"swift" = ""
|
|
|
|
"t" = ""
|
|
|
|
"tar" = ""
|
|
|
|
"tex" = "ﭨ"
|
|
|
|
"tgz" = ""
|
|
|
|
"toml" = ""
|
|
|
|
"ts" = ""
|
|
|
|
"tsx" = ""
|
|
|
|
"twig" = ""
|
|
|
|
"vim" = ""
|
|
|
|
"vimrc" = ""
|
|
|
|
"vue" = "﵂"
|
|
|
|
"wav" = ""
|
|
|
|
"webm" = ""
|
|
|
|
"webmanifest" = ""
|
|
|
|
"webp" = ""
|
|
|
|
"xbps" = ""
|
|
|
|
"xcplayground" = ""
|
|
|
|
"xhtml" = ""
|
|
|
|
"xls" = ""
|
|
|
|
"xlsx" = ""
|
|
|
|
"xml" = ""
|
|
|
|
"xul" = ""
|
|
|
|
"xz" = ""
|
|
|
|
"yaml" = ""
|
|
|
|
"yml" = ""
|
|
|
|
"zip" = ""
|
|
|
|
"zsh" = ""
|
|
|
|
'';
|
2023-05-27 21:37:07 +02:00
|
|
|
}
|