Manpages

NAME

pympress - pympress documentation

CONTENTS

# ![Pympress logo](- https://raw.githubusercontent.com/Cimbali/pympress/master/pympress/share/pixmaps/pympress-32.png) What is Pympress?

Pympress is a little PDF reader written in Python using Poppler for PDF rendering and GTK+ for the GUI.

It is designed to be a dual-screen reader used for presentations and public talks, with two displays: the Content window for a projector, and the Presenter window for your laptop. It is portable and has been tested on various Mac, Windows and Linux systems.

It comes with many great features ([more below](#functionalities)): - supports embedded gifs and videos - text annotations displayed in the presenter window - natively supports beamer's notes on second screen!

Pympress is a free software, distributed under the terms of the GPL license (version 2 or, at your option, any later version).

Pympress was originally created and maintained by [Schnouki](- https://github.com/Schnouki), on [his repo](- https://github.com/Schnouki/pympress).

Here is what the 2 screen setup looks like, with a big notes slide next to 2 small slides (current and next) on the presenter side: ![A screenshot with Pympress’ 2 screens](- https://repository-images.githubusercontent.com/42637225/925da680-886b-11e9-9a12-28b48debbf19)

# Installing

Linux, macOS: pip install pympress − requires [python, gtk+3, poppler, and their python bindings](#dependencies).

Windows: choco install pympress with [Chocolatey](- https://chocolatey.org/) or download the installer from the [latest Github release](https://github.com/Cimbali/pympress/releases/latest).

### Notes - To support playing embedded videos in the PDFs, your system must have VLC installed (with the same bitness as pympress). VLC is not distributed with pympress, but it is certainly available in your system’s package manager and [on their website](- https://www.videolan.org/vlc/). - On Linux and macOS, make sure you have all [the dependencies](#dependencies), as they do not come via pip. (On Windows, they are included in the binary package.) - Using pip, you may want to use python3 -m pip as the command if pip points to the python 2.x pip. You may also want to install with the --user option, or install from github or downloaded sources. See [the python documentation on installing](- https://docs.python.org/3.7/installing/index.html) for more details.

### Troubleshooting - If your python environment lacks the Gobject Introspections module, try

1.

checking you have all [the dependencies](#dependencies),

2.

using --system-site-packages for [virtual environments](- https://docs.python.org/3.7/library/venv.html),

3.

installing pygobject from pip (pip install pygobject, which requires the correct development/header packages. See [the PyPI installation instructions of PyGObject for your system](- https://pygobject.readthedocs.io/en/latest/getting_started.html)).

For manually downloaded installers, if you get an error message along the lines of "MSVCP100.dll is missing", get the Visual C++ 2010 redistributables from Microsoft ([x86 (32 bit)](- https://www.microsoft.com/en-in/download/details.aspx?id=5555) or [x64 (64 bits)](- https://www.microsoft.com/en-us/download/details.aspx?id=14632)). Those libraries really should already be installed on your system.

# Usage

## Opening a file Simply start Pympress and it will ask you what file you want to open. You can also start pympress from the command line with a file to open like so: pympress slides.pdf or python3 -m pympress slides.pdf

## Functionalities

All functionalities are available from the menus of the window with slide previews. Don't be afraid to experiment with them!

Keyboard shortcuts are also listed in these menus. Some more usual shortcuts are often available, for example Ctrl`+`L, and F11 also toggle fullscreen, though the main shortcut is just F.

A few of the fancier functionalities are listed here: - Two-screen display: See on your laptop or tablet display the current slide, the next slide, the talk time and wall-clock time, and annotations (either PDF annotations, or beamer notes on second slide). The position of the beamer notes in the slide is detected automatically and can be overridden via a menu option. - Media support: supports playing video, audio, and gif files embedded in (or linked from) the PDF file. - Highlight mode: Allows one to draw freehand on the slide currently on screen. - Go To Slide: To jump to a selected slide without flashing through the whole presentation on the projector, press G or click the "current slide" box.

Using J or clicking the slide label will allow you to navigate slide labels instead of page numbers, useful e.g. for multi-page slides from beamer pause.

A spin box will appear, and you will be able to navigate through your slides in the presenter window only by scrolling your mouse, with the Home/Up/Down/End keys, with the + and - buttons of the spin box, or simply by typing in the number of the slide. Press Enter to validate going to the new slide or Esc to cancel.

Software pointer: Clicking on the slide (in either window) while holding ctrl down will display a software laser pointer on the slide. Or press L to permanently switch on the laser pointer.

Talk time breakdown: The Presentation > Timing Breakdown menu item displays a breakdown of how much time was spent on each slide, with a hierarchical breakdown per chapters/sections/etc. if available in the PDF.

Automatic file reloading: If the file is modified, pympress will reload it (and preserve the current slide, current time, etc.)

Big button mode: Add big buttons (duh) for touch displays.

Swap screens: If Pympress mixed up which screen is the projector and which is not, press S

Estimated talk time: Click the Time estimation box and set your planned talk duration. The color will allow you to see at a glance how much time you have left.

Adjust screen centering: If your slides' form factor doesn't fit the projectors' and you don't want the slide centered in the window, use the "Screen Center" option in the "Presentation" menu.

Resize Current/Next slide: You can drag the bar between both slides on the Presenter window to adjust their relative sizes to your liking.

Preferences: Some of your choices are saved in a configuration file, in ~/.config/pympress or ~/.pympress on linux, and in %APPDATA%/pympress.ini on windows.

Caching: For efficiency, Pympress caches rendered pages (up to 200 by default). If this is too memory consuming for you, you can change this number in the configuration file.

## Command line arguments

-h, --help: Shows a list of all command line arguments.

-t mm[:ss], --talk-time=mm[:ss]: The estimated (intended) talk time in minutes and optionally seconds.

-n position, --notes=position: Set the position of notes on the pdf page (none, left, right, top, or bottom). Overrides the detection from the file.

--log=level: Set level of verbosity in log file (DEBUG, INFO, WARNING, ERROR).

# Dependencies

Pympress relies on: * Python (version 3.x strongly recommended though 2.7 should still work fine). * [Poppler](- http://poppler.freedesktop.org/), the PDF rendering library. * [Gtk+ 3](http://www.gtk.org/), a toolkit for creating graphical user interfaces, and [its dependencies](https://www.gtk.org/overview.php), specifically:

[Cairo](https://www.cairographics.org/) (and python bindings for cairo), the graphics library which is used to pre-render and draw over PDF pages.

Gdk, a lower-level graphics library to handle icons.

[PyGi, the python bindings for Gtk+3](- https://wiki.gnome.org/Projects/PyGObject). PyGi is also known as pygobject3, just pygobject or python3-gi. * Introspection bindings for poppler may be shipped separately, ensure you have those as well (typelib-1_0-Poppler-0_18 on OpenSUSE, gir1.2-poppler-0.18 on Ubuntu)

optionally [VLC](https://www.videolan.org/vlc/), to play videos (with the same bitness as Python)

### On linux platforms The dependencies are often installed by default, or easily available through your package or software manager. For example, on ubuntu, you can run the following as root to make sure you have all the prerequisites assuming you use python3:

apt-get install python3 python3-pip libgtk-3-0 libpoppler-glib8 libcairo2 python3-gi python3-cairo python3-gi-cairo gobject-introspection libgirepository-1.0-1 libgirepository1.0-dev gir1.2-gtk-3.0 gir1.2-poppler-0.18

Different distributions might have different package naming conventions, for example the equivalent on OpenSUSE would be:

zypper in python3 python3-pip libgtk-3-0 libpoppler-glib8 libcairo2 python3-gobject python3-gobject-Gdk python3-cairo python3-gobject-cairo typelib-1_0-GdkPixbuf-2_0 typelib-1_0-Gtk-3_0 typelib-1_0-Poppler-0_18

### On macOS

Dependencies can be installed using [Homebrew](https://brew.sh/):

brew install gtk+3 poppler gobject-introspection pygobject3

### On windows The [binary installer for windows](#installing) comes with pympress and all its dependencies packaged.

Alternately, in order to install from pypi or from source on windows, there are two ways to get the dependencies:

1.

using MSYS2 (replace x86_64 with i686 if you're using a 32 bit machine).

Warning: this can take a substantial amount of disk size as it requires a full software distribution and building platform.

pacman -S --needed mingw-w64-x86_64-gtk3 mingw-w64-x86_64-cairo mingw-w64-x86_64-poppler mingw-w64-x86_64-python3 mingw-w64-x86_64-vlc python3-pip mingw-w64-x86_64-python3-pip mingw-w64-x86_64-python3-gobject mingw-w64-x86_64-python3-cairo

This is also the strategy used to automate [builds on appveyor](- https://github.com/Cimbali/pympress/tree/master/scripts/build_msi_mingw.sh).

2.

Using PyGobjectWin32. Be sure to check the supported Python versions (up to 3.4 at the time of writing), they appear in the FEATURES list in the linked page.

Install native [python for windows](- https://www.python.org/downloads/windows/)

Get GTK+3, Poppler and their python bindings by executing [the PyGi installer](https://sourceforge.net/projects/pygobjectwin32/). Be sure to tick all the necessary dependencies in the installer (Poppler, Cairo, Gdk-Pixbuf).

Alternately, you can build your Gtk+3 stack from source using MSVC, see [the Gnome wiki](- https://wiki.gnome.org/Projects/GTK+/Win32/MSVCCompilationOfGTKStack) and [this python script that compiles the whole Gtk+3 stack](- https://github.com/wingtk/gvsbuild/). This strategy has not been used successfully yet, due to problems building Poppler with its introspection bidings (i.e. typelib) − see [#109](- https://github.com/Cimbali/pympress/issues/109).

# Contributing

Feel free to clone this repo and use it, modify it, redistribute it, etc, under the GPLv2+. Pympress has inline sphinx documentation ([Google style](- http://www.sphinx-doc.org/en/latest/ext/example_google.html), contains rst syntax), and the [docs folder](- https://github.com/Cimbali/pympress/tree/master/docs/) contains the documentation generated from it, hosted on [the github pages of this repo](https://cimbali.github.io/pympress/pympress.html).

## Translations

If you want to add a translation, check if pympress/share/locale/<language>/pympress.po already exists. If not, take [the template file](- https://github.com/Cimbali/pympress/tree/master/pympress/share/locale/pympress.pot) as input and translate all the strings, then add it to the repo in pympress/share/locale/<language>/pympress.po. Finally pass this .po file to msgfmt and add the output to the repo at pympress/share/locale/<language>/LC_MESSAGES/pympress.mo.

## Packages

Official releases are made to [PyPI](https://pypi.org/) and with [github releases](https://github.com/Cimbali/pympress/releases). The community maintains a number of other packages or recipes to install pympress (and more can be added to this list): - [@Jose1711](- https://github.com/jose1711) made the [AUR pympress package](- https://aur.archlinux.org/packages/python-pympress/) - [@ComFreek](- https://github.com/ComFreek) maintains the [Chocolatey pympress package](https://chocolatey.org/packages/pympress) # Pympress package

This page contains the inline documentation, generated from the code using sphinx.

The code is documented in the source using the [Google style](- https://google.github.io/styleguide/pyguide.html) for docstrings. Sphinx has gathered a [set of examples](- http://www.sphinx-doc.org/en/latest/ext/example_google.html) which serves as a better crash course than the full style reference.

Retructured text (rst) can be used inside the comments and docstrings.

## Modules

``

`
eval_rst .. automodule:: pympress.__main__

members
undoc-members
show-inheritance

pympress.util -- various utility functions
pympress.util.fileopen(f)

Call the right function to open files, based on the platform.
Parameters

f (str) -- path to the file to open

pympress.util.get_default_config()

Returns the path to the configuration file containing the defaults.
Returns

The path to the portable configuration file.

Return type

str

pympress.util.get_icon_path(name)

Load an image from pympress' resources in a Gdk Pixbuf.
Parameters

name (str) -- The name of the icon to load

Returns

The loaded icon

Return type

Pixbuf

pympress.util.get_locale_dir()

Returns the path to the locale directory
Returns

The path to the locale directory

Return type

str

pympress.util.get_log_path()

Returns the appropriate path to the log file in the user app dirs.
Returns

path to the log file.

Return type

str

pympress.util.get_portable_config()

Returns the path to the configuration file for a portable install (i.e. in the install root).
Returns

The path to the portable configuration file.

Return type

str

pympress.util.get_pympress_meta()

Get metadata (version, etc) from pympress' __init__.py

pympress.util.get_ui_resource_file(name)

Load an UI definition file from pympress' resources.
Parameters

name (str) -- The name of the UI to load

Returns

The full path to the glade file

Return type

str

pympress.util.get_user_config()

Returns the path to the configuration file in the user config directory.
Returns

path to the user configuration file.

Return type

str

pympress.util.list_icons()

List the icons from pympress' resources.
Returns

The paths to the icons in the pixmaps directory

Return type

list of str

pympress.util.load_style_provider(style_provider)

Load the css and in a style provider.
Parameters

style_provider (CssProvider) -- The style provider in which to load CSS

Returns

The style provider with CSS loaded

Return type

CssProvider

pympress.util.set_screensaver(must_disable, window)

Enable or disable the screensaver.
Parameters

must_disable (bool) -- if True, indicates that the screensaver must be disabled; otherwise it will be enabled

window (Window) -- The window on the screen where the screensaver is to be suspended.

``

`

INDICES AND TABLES

genindex

modindex

AUTHOR

Thomas Jost, Cimbali

COPYRIGHT

2009-2020, Thomas Jost; 2015-2017 Cimbali