parent
33000547a5
commit
d96878b33b
|
@ -1,82 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
usage () {
|
||||
cat <<EOF>&2
|
||||
Usage: ${0##*/} FILES
|
||||
|
||||
Preview FILES:
|
||||
|
||||
- If folder, list it.
|
||||
|
||||
- For text files, media files and other files supported by ranger's "scope.sh",
|
||||
use the script to preview the file.
|
||||
|
||||
- For other files, display some file information.
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
[ $# -lt 1 ] && usage && return 1
|
||||
[ "$1" = "-h" ] && usage && return
|
||||
[ "$1" = "--" ] && shift
|
||||
|
||||
ls="ls -1 --color=always"
|
||||
if test -t 0; then
|
||||
ls="$ls --indicator-style=classify"
|
||||
fi
|
||||
if [ "$(uname -o)" = "GNU/Linux" ]; then
|
||||
ls="$ls --group-directories-first"
|
||||
fi
|
||||
|
||||
## scope.sh.
|
||||
XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-~/.config}
|
||||
scope="$XDG_CONFIG_HOME/ranger/scope.sh"
|
||||
if [ ! -x "$scope" ]; then
|
||||
XDG_DATA_DIRS=${XDG_DATA_DIRS:-"/usr/local/share"}
|
||||
scope="$XDG_DATA_DIRS/doc/ranger/config/scope.sh"
|
||||
if [ ! -x "$scope" ]; then
|
||||
scope="/usr/share/doc/ranger/config/scope.sh"
|
||||
fi
|
||||
fi
|
||||
|
||||
## Several files must share the screen space.
|
||||
lines=$(expr $(tput lines) / $#)
|
||||
[ $lines -lt 1 ] && lines=1
|
||||
|
||||
_preview() {
|
||||
## Folders.
|
||||
[ -d "$1" ] && $ls "$1" && return
|
||||
|
||||
buf=$("$scope" "$1" $(tput cols) $lines 2>/dev/null)
|
||||
status=$?
|
||||
|
||||
case $status in
|
||||
1)
|
||||
break ;;
|
||||
2)
|
||||
## Text files
|
||||
sed ${lines}q "$1"
|
||||
return ;;
|
||||
*)
|
||||
echo "$buf" | sed ${lines}q
|
||||
return ;;
|
||||
esac
|
||||
|
||||
## All files.
|
||||
path="$1"
|
||||
[ ! -e "$path" ] && path=$(command -v "$1")
|
||||
[ ! -e "$path" ] && return
|
||||
$ls -l "$path"
|
||||
file "$path" | cut -d':' -f2 | cut -b 2-
|
||||
if command -v pacman >/dev/null 2>&1; then
|
||||
pacman -Qo "$path" 2>/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
[ $# -eq 1 ] && _preview "$1" && exit
|
||||
|
||||
for i; do
|
||||
## GNU head uses this echo when outputting multiple files.
|
||||
echo "==> $i <=="
|
||||
_preview "$i"
|
||||
done
|
Loading…
Reference in New Issue