Skip to main content

Simple program to open a file in existing zathura instance

Project description

znp

znp stands for Zathura Next Or Previous. You can also use znp to add a given file to an instance of zathura.

Usage

Next or Previous

The main goal of znp is to provide an easy way to go to the next or previous file from within zathura. As of yet this functionality is not a part of zathura's functionality. However, after installing znp you can add the following to your zathurarc to set N and P to go to the next or previous file:

map N exec "znp -n '$FILE'"
map P exec "znp -p '$FILE'"
" Please note the  ^     ^ apostrophes around $FILE. 
" These are necessary for files with whitespace

Note that if your system does not use extended window manager hints (ewmh), or you do not have the ewmh python package installed; then, this command may fail if you have two instances of zathura open in the same directory. This is not something that I have a reasonable fix for and there is no way to reliably determine the instance issuing the next or previous command. The only way I can think of fixing this would require patching zathura to include expansion of a $PID variable from the exec function and include that in the zathurarc command. However, I am a not a programmer so reviewing the code base and getting this functionality added may take me some time.

Adding files

znp can act as a zathura wrapper and add a given file to an existing instance:

znp file.pdf
znp /path/to/file.pdf

You can give znp a relative or absolute path to file. znp will insert the current working directory to make a relative path absolute. No variable expansion will performed by znp as it expects $HOME and such to get expanded by the shell calling znp.

The above works best when only one instance of zathura exists. However, if multiple exist then zathura will use the user defined prompt_cmd set in $XDG_CONFIG_HOME/znp/znp.conf to present a list of zathura instances to open the file in. The default is fzf but you may use dmenu or rofi. Here is how this looks in practice:

fzf.png

dmenu.png

To aviod any prompting you can pass the desired pid to use with the -P flag:

znp -P 123456 file.pdf
znp -P 123456 /path/to/file.pdf

This would require a bit more work on your part but it may be useful in scripting.

Query

Speaking of scripting, I added the -q, --query flag for my personal scripting purposes.

The --query flag will take the FILE argument given to znp and search all zathura pids for the first (see the note in the next or previous section) one that has that file open and return it's pid. I make use of this to track my last read pdf, epub, cbz/r, zip, etc. using the returned pid to kill the assumed instance issuing the command. Basically a session tracker so to speak. Maybe there are other purposes for this or maybe the zathura.py module would be useful as a standalone module for interacting with zathura via dbus. No clue, let me know.

User config

You can set the default command prompt in $XDG_CONFIG_HOME/znp/znp.conf like so:

prompt_cmd = dmenu

Note there are no quotes. You can also skip the spaces if you like.

If you have any args/flags you want to use with your command prompt add them like so:

prompt_args = -l 20 -i

Simply provide the args/flags as you would normally when using your chosen prompt_cmd.

Note If your prompt_args contain an = sign then please escape it with a backslash otherwise you will get an error.

Installation

znp is available via pypi and can install it via pip in the usual way:

pip install znp

Use the following if you are installing on a system running X and using ewmh:

pip install znp[x11]

Ensure ~/.local/bin is in your $PATH otherwise znp will not be callable from zathura unless you give the full path to znp.

Dependencies

  1. python-magic - used to detect the file type of the next file to prevent zathura from opening an unreadable file, e.g. log files, markdown files, etc.
  2. psutil - used to get zathura pids.

Optional Dependency

  1. ewmh - used to get the pid of window calling znp. This is a bit hacky but does allow for the core functionality (opening the next or previous file) to work without issue. Provided under the [x11] branch.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

znp-0.0.13.tar.gz (24.9 kB view details)

Uploaded Source

Built Distribution

znp-0.0.13-py3-none-any.whl (24.9 kB view details)

Uploaded Python 3

File details

Details for the file znp-0.0.13.tar.gz.

File metadata

  • Download URL: znp-0.0.13.tar.gz
  • Upload date:
  • Size: 24.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.10

File hashes

Hashes for znp-0.0.13.tar.gz
Algorithm Hash digest
SHA256 4ca4c5f69f2d29de88dbffbd18c2ec9b048fd39a220ab670c7ca3186fd6abdd4
MD5 ff87a4a9918fb65234a9504db4715d76
BLAKE2b-256 041fe20117ef765de5bf8ea1239c9bf2ae45e4728f85968bb761f7fbd7967408

See more details on using hashes here.

File details

Details for the file znp-0.0.13-py3-none-any.whl.

File metadata

  • Download URL: znp-0.0.13-py3-none-any.whl
  • Upload date:
  • Size: 24.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.10

File hashes

Hashes for znp-0.0.13-py3-none-any.whl
Algorithm Hash digest
SHA256 639730e6c854fd48ca42ddbac77afcba7a3a1732909500afd9a1333fb765260c
MD5 be468cbe2f2bc6d3da966f215fa09b56
BLAKE2b-256 a05e32baa212dc4cd714ae7e9211c401a55c26e5b392f49d627ebcab86ee4aad

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page