init
This commit is contained in:
45
scripts/fifo/fzf-fifo
Executable file
45
scripts/fifo/fzf-fifo
Executable file
@ -0,0 +1,45 @@
|
||||
#!/bin/sh
|
||||
|
||||
# This is a simple script that allows you to have image preview
|
||||
# in fzf, using ueberzugpp with fifo. For this script to work
|
||||
# you must add it to path, because it requires to call itself
|
||||
# during the preview process in fzf (line 42 -> $0).
|
||||
# Example usage:
|
||||
# ls | fzf-fifo
|
||||
# find $HOME/pix/ -type f -iname "*.jpg" | fzf-fifo
|
||||
|
||||
FIFO="/tmp/fzf_preview_fifo"
|
||||
[ -p "$FIFO" ] || mkfifo "$FIFO"
|
||||
|
||||
start_ueberzugpp() {
|
||||
ueberzugpp layer --silent <"$FIFO" &
|
||||
exec 3>"${FIFO}"
|
||||
}
|
||||
|
||||
cleanup() {
|
||||
exec 3>&-
|
||||
}
|
||||
trap cleanup HUP INT QUIT TERM EXIT
|
||||
|
||||
preview_image() {
|
||||
echo '{"path": "'"$1"'", "action": "add", ''"identifier": "fzfpreview", '\
|
||||
'"x": "'"$FZF_PREVIEW_LEFT"'", "y": "'"$FZF_PREVIEW_TOP"'", '\
|
||||
'"width": "'"$FZF_PREVIEW_COLUMNS"'", "height": "'"$FZF_PREVIEW_LINES"'"}' \
|
||||
>"$FIFO"
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
-W)
|
||||
shift
|
||||
preview_image "$@"
|
||||
exit
|
||||
;;
|
||||
esac
|
||||
|
||||
main() {
|
||||
start_ueberzugpp
|
||||
selected_image=$(fzf --preview "$0 -W {}" --preview-window=up:60%:wrap)
|
||||
[ -n "$selected_image" ] && echo "Selected image: $selected_image"
|
||||
rm "$FIFO"
|
||||
}
|
||||
main
|
||||
31
scripts/fifo/img-fifo
Executable file
31
scripts/fifo/img-fifo
Executable file
@ -0,0 +1,31 @@
|
||||
#!/bin/sh
|
||||
|
||||
# This is a simple script that allows you to use ueberzugpp to
|
||||
# preview images in the terminal by providing the x and y
|
||||
# coordinates of the image, the width and height of the image,
|
||||
# and the path to the image file, with $1, $2, $3, $4 and $5
|
||||
# as arguments, respectively.
|
||||
# Example usage:
|
||||
# ./img-fifo 0 0 30 30 image.jpg
|
||||
# Use Ctrl+C to exit.
|
||||
|
||||
FIFO="/tmp/preview_fifo"
|
||||
[ -p "$FIFO" ] || mkfifo "$FIFO"
|
||||
|
||||
start_ueberzugpp() {
|
||||
ueberzugpp layer --silent <"$FIFO" &
|
||||
exec 3>"${FIFO}"
|
||||
}
|
||||
|
||||
cleanup() {
|
||||
rm -f "$FIFO"
|
||||
}
|
||||
trap cleanup HUP INT QUIT TERM EXIT
|
||||
|
||||
preview_image() {
|
||||
echo '{"path": "'"$5"'", "action": "add", "identifier": "img-fifo", "x": "'"$1"'", "y": "'"$2"'", "width": "'"$3"'", "height": "'"$4"'"}' >"$FIFO"
|
||||
}
|
||||
|
||||
start_ueberzugpp
|
||||
preview_image "$1" "$2" "$3" "$4" "$5"
|
||||
wait
|
||||
25
scripts/fzfub
Executable file
25
scripts/fzfub
Executable file
@ -0,0 +1,25 @@
|
||||
#!/bin/sh
|
||||
|
||||
case "$(uname -a)" in
|
||||
*Darwin*) UEBERZUG_TMP_DIR="$TMPDIR" ;;
|
||||
*) UEBERZUG_TMP_DIR="/tmp" ;;
|
||||
esac
|
||||
|
||||
cleanup() {
|
||||
ueberzugpp cmd -s "$SOCKET" -a exit
|
||||
}
|
||||
trap cleanup HUP INT QUIT TERM EXIT
|
||||
|
||||
UB_PID_FILE="$UEBERZUG_TMP_DIR/.$(uuidgen)"
|
||||
ueberzugpp layer --no-stdin --silent --use-escape-codes --pid-file "$UB_PID_FILE"
|
||||
UB_PID=$(cat "$UB_PID_FILE")
|
||||
|
||||
export SOCKET="$UEBERZUG_TMP_DIR"/ueberzugpp-"$UB_PID".socket
|
||||
|
||||
# run fzf with preview
|
||||
fzf --reverse --preview="ueberzugpp cmd -s $SOCKET -i fzfpreview -a add \
|
||||
-x \$FZF_PREVIEW_LEFT -y \$FZF_PREVIEW_TOP \
|
||||
--max-width \$FZF_PREVIEW_COLUMNS --max-height \$FZF_PREVIEW_LINES \
|
||||
-f {}"
|
||||
|
||||
ueberzugpp cmd -s "$SOCKET" -a exit
|
||||
30
scripts/img
Executable file
30
scripts/img
Executable file
@ -0,0 +1,30 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
# This is a simple script that allows you to use ueberzugpp to
|
||||
# preview images in the terminal by providing the x and y
|
||||
# coordinates of the image, the width and height of the image,
|
||||
# and the path to the image file, with $1, $2, $3, $4 and $5
|
||||
# as arguments, respectively.
|
||||
# Example usage:
|
||||
# ./img 0 0 30 30 image.jpg
|
||||
|
||||
UB_PID=0
|
||||
UB_SOCKET=""
|
||||
|
||||
case "$(uname -a)" in
|
||||
*Darwin*) UEBERZUG_TMP_DIR="$TMPDIR" ;;
|
||||
*) UEBERZUG_TMP_DIR="/tmp" ;;
|
||||
esac
|
||||
|
||||
cleanup() {
|
||||
ueberzugpp cmd -s "$UB_SOCKET" -a exit
|
||||
}
|
||||
trap cleanup HUP INT QUIT TERM EXIT
|
||||
|
||||
UB_PID_FILE="$UEBERZUG_TMP_DIR/.$(uuidgen)"
|
||||
ueberzugpp layer --no-stdin --silent --use-escape-codes --pid-file "$UB_PID_FILE"
|
||||
UB_PID="$(cat "$UB_PID_FILE")"
|
||||
export UB_SOCKET="$UEBERZUG_TMP_DIR"/ueberzugpp-"$UB_PID".socket
|
||||
ueberzugpp cmd -s "$UB_SOCKET" -a add -i PREVIEW -x "$1" -y "$2" --max-width "$3" --max-height "$4" -f "$5"
|
||||
sleep 2
|
||||
3
scripts/lf/cleaner
Executable file
3
scripts/lf/cleaner
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
ueberzugpp cmd -s $UB_SOCKET -a remove -i PREVIEW
|
||||
34
scripts/lf/lfub
Executable file
34
scripts/lf/lfub
Executable file
@ -0,0 +1,34 @@
|
||||
#!/bin/sh
|
||||
|
||||
# This is a wrapper script for lf that allows it to create image previews with
|
||||
# ueberzug. This works in concert with the lf configuration file and the
|
||||
# lf-cleaner script.
|
||||
|
||||
set -e
|
||||
|
||||
UB_PID=0
|
||||
UB_SOCKET=""
|
||||
|
||||
case "$(uname -a)" in
|
||||
*Darwin*) UEBERZUG_TMP_DIR="$TMPDIR" ;;
|
||||
*) UEBERZUG_TMP_DIR="/tmp" ;;
|
||||
esac
|
||||
|
||||
cleanup() {
|
||||
exec 3>&-
|
||||
ueberzugpp cmd -s "$UB_SOCKET" -a exit
|
||||
}
|
||||
|
||||
if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
|
||||
lf "$@"
|
||||
else
|
||||
[ ! -d "$HOME/.cache/lf" ] && mkdir -p "$HOME/.cache/lf"
|
||||
UB_PID_FILE="$UEBERZUG_TMP_DIR/.$(uuidgen)"
|
||||
ueberzugpp layer --silent --no-stdin --use-escape-codes --pid-file "$UB_PID_FILE"
|
||||
UB_PID=$(cat "$UB_PID_FILE")
|
||||
rm "$UB_PID_FILE"
|
||||
UB_SOCKET="$UEBERZUG_TMP_DIR/ueberzugpp-${UB_PID}.socket"
|
||||
export UB_PID UB_SOCKET
|
||||
trap cleanup HUP INT QUIT TERM EXIT
|
||||
lf "$@" 3>&-
|
||||
fi
|
||||
65
scripts/lf/preview
Executable file
65
scripts/lf/preview
Executable file
@ -0,0 +1,65 @@
|
||||
#!/bin/sh
|
||||
|
||||
image() {
|
||||
FILE_PATH="$1"
|
||||
X=$4
|
||||
Y=$5
|
||||
MW=$(($2 - 1))
|
||||
MH=$3
|
||||
ueberzugpp cmd -s "$UB_SOCKET" -a add -i PREVIEW -x "$X" -y "$Y" --max-width "$MW" --max-height "$MH" -f "$FILE_PATH"
|
||||
exit 1
|
||||
}
|
||||
|
||||
batorcat() {
|
||||
file="$1"
|
||||
shift
|
||||
if command -v bat >/dev/null 2>&1; then
|
||||
bat --color=always --style=plain --pager=never "$file" "$@"
|
||||
else
|
||||
cat "$file"
|
||||
fi
|
||||
}
|
||||
|
||||
CACHE="$HOME/.cache/lf/thumbnail.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | awk '{print $1}'))"
|
||||
|
||||
case "$(printf "%s\n" "$(readlink -f "$1")" | tr '[:upper:]' '[:lower:]')" in
|
||||
*.tgz | *.tar.gz) tar tzf "$1" ;;
|
||||
*.tar.bz2 | *.tbz2) tar tjf "$1" ;;
|
||||
*.tar.txz | *.txz) xz --list "$1" ;;
|
||||
*.tar) tar tf "$1" ;;
|
||||
*.zip | *.jar | *.war | *.ear | *.oxt) unzip -l "$1" ;;
|
||||
*.rar) unrar l "$1" ;;
|
||||
*.7z) 7z l "$1" ;;
|
||||
*.[1-8]) man "$1" | col -b ;;
|
||||
*.o) nm "$1" ;;
|
||||
*.torrent) transmission-show "$1" ;;
|
||||
*.iso) iso-info --no-header -l "$1" ;;
|
||||
*.odt | *.ods | *.odp | *.sxw) odt2txt "$1" ;;
|
||||
*.doc) catdoc "$1" ;;
|
||||
*.docx) docx2txt "$1" - ;;
|
||||
*.xls | *.xlsx)
|
||||
ssconvert --export-type=Gnumeric_stf:stf_csv "$1" "fd://1" | batorcat --language=csv
|
||||
;;
|
||||
*.wav | *.mp3 | *.flac | *.m4a | *.wma | *.ape | *.ac3 | *.og[agx] | *.spx | *.opus | *.as[fx] | *.mka)
|
||||
exiftool "$1"
|
||||
;;
|
||||
*.pdf)
|
||||
[ ! -f "${CACHE}.jpg" ] && pdftoppm -jpeg -f 1 -singlefile "$1" "$CACHE"
|
||||
image "${CACHE}.jpg" "$2" "$3" "$4" "$5"
|
||||
;;
|
||||
*.avi | *.mp4 | *.wmv | *.dat | *.3gp | *.ogv | *.mkv | *.mpg | *.mpeg | *.vob | *.fl[icv] | *.m2v | *.mov | *.webm | *.ts | *.mts | *.m4v | *.r[am] | *.qt | *.divx)
|
||||
[ ! -f "${CACHE}.jpg" ] && ffmpegthumbnailer -i "$1" -o "${CACHE}.jpg" -s 0 -q 5
|
||||
image "${CACHE}.jpg" "$2" "$3" "$4" "$5"
|
||||
;;
|
||||
*.bmp | *.jpg | *.jpeg | *.png | *.xpm | *.webp | *.gif | *.jfif)
|
||||
image "$1" "$2" "$3" "$4" "$5"
|
||||
;;
|
||||
*.svg)
|
||||
[ ! -f "${CACHE}.jpg" ] && convert "$1" "${CACHE}.jpg"
|
||||
image "${CACHE}.jpg" "$2" "$3" "$4" "$5"
|
||||
;;
|
||||
*)
|
||||
batorcat "$1"
|
||||
;;
|
||||
esac
|
||||
exit 0
|
||||
32
scripts/sockets.py
Normal file
32
scripts/sockets.py
Normal file
@ -0,0 +1,32 @@
|
||||
import socket
|
||||
import time
|
||||
import os
|
||||
|
||||
cmd1 = """
|
||||
{"action":"add","identifier":"preview","max_height":21,"max_width":118,"path":"/tmp/a.png","x":10,"y":15}
|
||||
"""
|
||||
|
||||
cmd2 = """
|
||||
{"action":"add","identifier":"preview","max_height":47,"max_width":118,"path":"/tmp/b.png","x":10,"y":15}
|
||||
"""
|
||||
|
||||
cmd_exit = """
|
||||
{"action":"remove","identifier":"preview"}
|
||||
"""
|
||||
|
||||
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
||||
connected = False
|
||||
while not connected:
|
||||
try:
|
||||
s.connect(f"/tmp/ueberzugpp-30468.socket")
|
||||
connected = True
|
||||
except Exception:
|
||||
time.sleep(0.05)
|
||||
|
||||
s.sendall(str.encode(cmd1 + "\n"))
|
||||
time.sleep(2)
|
||||
s.sendall(str.encode(cmd_exit + "\n"))
|
||||
s.sendall(str.encode(cmd2 + "\n"))
|
||||
time.sleep(2)
|
||||
s.sendall(str.encode(cmd_exit + "\n"))
|
||||
s.close()
|
||||
Reference in New Issue
Block a user