Document viewer script

From Vifm Wiki
Jump to navigation Jump to search

This script is for viewing files that are to be opened with zathura.

What's nice about this is that it puts everything into a tabbed interface for you and auto-maximizes the window.

These scripts are designed to work with visual selections as well, so you can open up as many documents as you wish all at once.

Source Code[edit]


# This script is for launching zathura in a tabbed enviornment,
# and placing every subsequent instance of zathura in that enviornment.

# Focus zathura on opening a new file

# Open tabbed if necessary
if ! ps -e | grep 'zathura$'; then
    [ $focus ] && num_wins=$(wmctrl -l | wc -l)
    tabbed -cd -p -1 zathura "$1" -e 1>$xid_file &
    if [ $focus ]; then
	while [ $num_wins -eq $(wmctrl -l | wc -l) ]; do
	    sleep 0.0001
	read xid < $xid_file
	wmctrl -ir $xid -b add,maximized_vert,maximized_horz

# Open the rest of the files into tabbed
if [ "$#" -gt 0 ]; then
    read xid < $xid_file
    zathura -e $xid "$@" &
    if [ $focus ]; then
	wmctrl -ir $xid -b add,above
	wmctrl -ir $xid -b remove,above

The script uses:

  1. zathura as the document viewer.
  2. tabbed for your tabbed interface. Every subsequent file will be loaded as a new tab.
  3. ps, should work with all versions.
  4. wmctrl, for auto-focusing (and maximizing) the window. (OPTIONAL)
  5. wc, works with all versions. Needed for focusing window. (OPTIONAL)

There is only one option in this script:


, which will manage the zathura window to pop up whenever it is opened.


Copy the above code into a script (or whatever you want) in either a $PATH directory or in your $VIFM/scripts directory. Then go into your vifm rc file and assign the file type:

filextype *.pdf,*.djvu,*.epub %f &

For Other Kinds of Documents[edit]

For other kinds of documents, you can convert them to a pdf using unoconv.

Paste this code into a shell script called for viewing files of the .docx format.


while [ "$#" -gt 0 ]; do
    pdf_name=$(basename -s .docx "$1").pdf
    unoconv "$1"
    rm "$1" "$pdf_name"

NOTE This script will delete your docx file, so you may want to back it up or remove the 'rm' line

Then assign the file type in your rc file in the same manner as the last one.