mirror of
https://github.com/donovanglover/nix-config.git
synced 2024-11-25 09:43:11 +01: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."joshuto/kitty-show.sh".source = ./kitty-show.sh;
|
||||
xdg.configFile."joshuto/kitty-remove.sh".source = ./kitty-remove.sh;
|
||||
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
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
xdg.configFile."joshuto/icons.toml".text = /* toml */ ''
|
||||
# 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…
Reference in New Issue
Block a user