mirror of
https://github.com/donovanglover/nix-config.git
synced 2025-06-20 01:38:02 +02:00
joshuto: Inline external scripts
This commit is contained in:
parent
2aa3550313
commit
ac7fb96c80
@ -434,9 +434,153 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg.configFile."joshuto/preview.sh".source = ./preview.sh;
|
xdg.configFile = {
|
||||||
xdg.configFile."joshuto/kitty-show.sh".source = ./kitty-show.sh;
|
"joshuto/preview.sh" = {
|
||||||
xdg.configFile."joshuto/kitty-remove.sh".source = ./kitty-remove.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
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
xdg.configFile."joshuto/icons.toml".text = /* toml */ ''
|
xdg.configFile."joshuto/icons.toml".text = /* toml */ ''
|
||||||
# Default fallback icons
|
# Default fallback icons
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
kitty +kitten icat \
|
|
||||||
--transfer-mode=file \
|
|
||||||
--clear 2>/dev/null
|
|
@ -1,32 +0,0 @@
|
|||||||
#!/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
|
|
@ -1,93 +0,0 @@
|
|||||||
#!/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
|
|
Loading…
x
Reference in New Issue
Block a user