Default viewer script
Jump to navigation
Jump to search
Default viewer script
This script can be used to view files for which no viewer is registered. Here is its source code:
#!/bin/bash
if [ "$#" -ne 1 ]; then
echo "Usage: $0 filename"
exit 1
fi
# upper limit of lines to display for text files
nlines=150
# upper limit of bytes to display for binary files
nbytes=2048
# language of text files
language=russian
# output encoding for text files
encoding=utf-8
info=$(head -$nlines "$1" | file --mime -)
charset=${info#*=}
if [ "x$charset" == "xbinary" ]; then
hexdump -e '"%08_ax: "' -e '8/1 "%02x " " " 8/1 "%02x "' -e '" |" 16/1 "%_p"' -e '"\n"' -v -n $nbytes "$1"
else
head -$nlines "$1" | enconv -g -L $language -x $encoding
fi
The script uses:
head
utility to process only first$nlines
of file.file
tool to determine whether file is of binary format or not.hexdump
tool to display binary files in classic hex dump form.enconv
program for automatic conversion to the$encoding
charset for text files trying to guess source encoding of$language
.
Plugging the script into vifm
To use it in vifm:
- Save the script as
defviewer
at one of directories listed in your$PATH
environment variable or under$VIFM/scripts
(most likely that it's~/.vifm/scripts
). - On Unix-like operating systems make the script file executable by running
chmod +x defviewer
- Add the following line to your *vifmrc*:
fileview * defviewer %c
Here is what it looks like: