Provided by: pympress_1.8.5-2_all bug

NAME

       pympress - pympress documentation

CONTENTS

   What is Pympress?
       Pympress  is  a  PDF  presentation  tool designed for dual-screen setups such as presentations and public
       talks.  Highly configurable, fully-featured, and portable

       It comes with many great features (more below):

       • supports embedded gifs (out of the box), videos, and audios (with VLC or Gstreamer integration)

       • text annotations displayed in the presenter window

       • natively supports beamer's notes on second screen, as well as Libreoffice notes pages!

       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>.

   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, beamer notes  on  second  slide,  or
         Libreoffice  notes  pages).   The  position of the beamer or Libreoffice notes in the slide is detected
         automatically and can be overridden via a menu option.

         If you do not want to use second-slide beamer notes but prefer to have notes on their  own  pages,  you
         can enable auto-detection of these notes.  Use the following snippet that prefixes the page labels with
         notes: on notes pages:

            \addtobeamertemplate{note page}{}{\thispdfpagelabel{notes:\insertframenumber}}

       • Media support: supports playing video, audio, and gif files embedded in (or linked from) the PDF  file,
         with optional start/end times and looping.

       • 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.

       • Deck  Overview:  Pressing D will open an overview of your whole slide deck, and any slide can be opened
         from can simply clicking it.

       • 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 SAutomatic full screen: pympress will automatically put the content window fullscreen on your non-primay
         screen when:

         • connecting a second screen,

         • extending your desktop to a second screen that was mirroring your main screen,

         • when  starting  pympress  on  a  two-screen  display.   To  disable  this  behaviour, untick “Content
           fullscreen” under the “Starting configuration” menu.

       • 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.

       • 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.

       • Configurability: Your preferences are saved in a configuration file, and many  options  are  accessible
         there directly. These include:

         • Customisable key bindings (or shortcuts),

         • Configurable layout of the presenter window, with 1 to 16 next slides preview

         • and many more.

         See the configuration file documentation for more details,

       • Editable PDF annotations: Annotations can be added, removed, or changed, and the modified PDF files can
         be saved

       • Automatic next slide and looping

   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).

   Media and autoplay
       To enable media playback, you need to have either:

       • Gstreamer  installed  (enabled by default), with its gtk plugin (libgstgtk) which is sometimes packaged
         separately (e.g. as gst-plugin-gtk or gstreamer1.0-gtk3), and plugins  gstreamer-good/-bad/-ugly  based
         on which codecs you need, or

       • VLC  installed  (and  the  python-vlc module), with enabled = on under the [vlc] section of your config
         file.

       On macOS, issues with the  gstreamer  brew  formula  may  require  users  to  set  GST_PLUGIN_SYSTEM_PATH
       manually.  For default homebrew configurations the value should be /opt/homebrew/lib/gstreamer-1.0/. Make
       sure to set this environmental variable globally, or pympress might not pick it up.

       To produce PDFs with media inclusion, the ideal method is to use beamer’s multimedia package, always with
       \movie:

          \documentclass{beamer}
          \usepackage{multimedia}

          \begin{frame}{Just a mp4 here}
              \centering
              \movie[width=0.3\textwidth]{\includegraphics[width=0.9\textwidth]{frame1.png}}{movie.mp4}

              \movie[width=0.3\textwidth]{}{animation.gif}

              \movie[width=0.3\textwidth]{}{ding.ogg}
          \end{frame}

       If you desire autoplay, ensure you have pympress ≥ 1.7.0 and poppler ≥ 21.04, and use the movie15 package
       as follows:

          \documentclass{beamer}
          \usepackage{movie15}
          \begin{document}

          \begin{frame}
            \begin{center}
              \includemovie[attach=false,autoplay,text={%
                  \includegraphics{files/mailto.png}%
                }]{0.4\linewidth}{0.3\linewidth}{files/random.mpg}
            \end{center}
          \end{frame}

          \end{document}

   Contributing
       Feel free to clone this repo and use it, modify it, redistribute it, etc, under the GPLv2+.  A number  of
       contributors <https://github.com/Cimbali/pympress/graphs/contributors> have taken part in the development
       of pympress and submitted pull requests to improve it.

       Be respectful of everyone and keep this community  friendly,  welcoming,  and  harrasment-free.   Abusive
       behaviour  will  not  be  tolerated,  and  can  be  reported  by email at me@cimba.li  wrongdoers may be
       permanently banned.

       Pympress     has     inline     sphinx     documentation      (Google      style      <http://www.sphinx-
       doc.org/en/latest/ext/example_google.html>,  contains  rst  syntax),  and  the docs generated from it are
       hosted on the github pages of this repo <https://pympress.github.io/>.

   Translations
       • Chinese (simplified)

       • Chinese (traditional)

       • Czech

       • Hindi

       • Italian

       • Japanese

       • Polish

       • French

       • German

       • Spanish

       We thank the many contributors of translations: Agnieszka, atsuyaw, Cherrywoods, Dongwang, Estel-f, Fabio
       Pagnotta,  Ferdinand  Fichtner,  Frederik.  blome,  FriedrichFröbel, GM, He. yifan. xs, Jaroslav Svoboda,
       Jeertmans, Kristýna, lazycat, Leonvincenterd,  LogCreative,  Lorenzo.  pacchiardi,  Luis  Sibaja,  Marcin
       Dohnalik,  marquitul, Morfit, Mzn, Nico, Ogawa, Paul, Pierre BERTHOU, polaksta, Saulpierotti, Shebangmed,
       Stanisław Polak, susobaco, Tapia, Tejas, Timo Zhang, Tkoyama010, Toton95, Vojta  Netrh,  Vulpeculus,  and
       Cimbali.

       If   you   also  want  to  add  or  contribute  to  a  translation,  check  pympress’  page  on  POEditor
       <https://poeditor.com/join/project/nKfRxeN8pS>.  Note that old strings are kept and  tagged  removed,  to
       give  context  and  keep  continuity  between  translations  of succcessive versions.  This means removed
       strings are unused and do not need translating.

   Configuration file
       Pympress has a number of options available from its configuration file.

       This file is usually located in:

       • ~/.config/pympress on Linux,

       • %APPDATA%/pympress.ini on Windows,

       • ~/Library/Preferences/pympress on macOS,

       • in the top-level of the pympress install directory for portable installations.

       The path to the currently used configuration file can be checked in the Help > About information window.

   Shortcuts
       The    shortcuts    are    parsed     using     Gtk.accelerator_parse()     <https://lazka.github.io/pgi-
       docs/#Gtk-3.0/functions.html#Gtk.accelerator_parse>:
          The  format  looks  like  “<Control>a”  or  “<Shift><Alt>F1”  or “<Release>z” (the last one is for key
          release).

          The parser is fairly liberal and allows lower or upper case, and also abbreviations  such  as  “<Ctl>”
          and   “<Ctrl>”.  Key  names  are  parsed  using  Gdk.keyval_from_name()  <https://lazka.github.io/pgi-
          docs/#Gdk-3.0/functions.html#Gdk.keyval_from_name>. For character keys the name is not the symbol, but
          the lowercase name, e.g. one would use “<Ctrl>minus” instead of “<Ctrl>-”.

       This   means   that   any   value   in   this   list   of   key  constants  <https://lazka.github.io/pgi-
       docs/#Gdk-3.0/constants.html#Gdk.KEY_0> is valid (removing the initial Gdk.KEY_  part).  You  can  verify
       that this value is parsed correctly from the Help > Shortcuts information window.

   Layouts
       The  panes (current slide, next slide, notes, annotations, etc.) can be rearranged arbitrarily by setting
       the entries of the layout section in the configuration file.  Here are a couple examples of layouts, with
       Cu the current slide, No the notes half of the slide, Nx the next slide:

       • All-horizontal layout:

            +----+----+----+
            | Cu | No | Nx |
            +----+----+----+

         Setting:

            notes = {"children": ["current", "notes", "next"], "proportions": [0.33, 0.33, 0.33], "orientation": "horizontal", "resizeable": true}

       • All-vertical layout:

            +----+
            | Cu |
            +----+
            | No |
            +----+
            | Nx |
            +----+

         Setting:

            notes = {"children": ["current", "notes", "next"], "proportions": [0.33, 0.33, 0.33], "orientation": "vertical", "resizeable": true}

       • Vertical layout with horizontally divided top pane:

            +----+----+
            | Cu | No |
            +----+----+
            |    Nx   |
            +---------+

         Setting:

            notes = {"children": [
                           {"children": ["current", "notes"], "proportions": [0.5, 0.5], "orientation": "horizontal", "resizeable": true},
                           "next"
                      ], "proportions": [0.5, 0.5], "orientation": "vertical", "resizeable": true}

       • Horizontal layout with horizontally divided right pane:

            +----+----+
            |    | Nx |
            + Cu +----+
            |    | No |
            +---------+

         Setting:

            notes = {"children": [
                           "current",
                           {"children": ["next", "notes"], "proportions": [0.5, 0.5], "orientation": "vertical", "resizeable": true}
                      ], "proportions": [0.5, 0.5], "orientation": "horizontal", "resizeable": true}

       And so on. You can play with the items, their nesting, their order, and the orientation in which a set of
       widgets appears.

       For each entry the widgets (strings that are leaves of "children" nodes in this representation) must be:

       • for notes: "current", "notes", "next"

       • for plain: "current", "next" and "annotations" (the annotations widget is toggled with  the  A  key  by
         default)

       • for highlight: same as plain with "highlight" instead of "current"

       A few further remarks:

       • If you set "resizeable" to false, the panes won’t be resizeable dynamically with a handle in the middle

       • "proportions"  are  normalized,  and saved on exit if you resize panes during the execution. If you set
         them to 4 and 1, the panes will be 4 / (4 + 1) = 20% and 1 / (4 + 1) = 100%, so the  ini  will  contain
         something like 0.2 and 0.8 after executing pympress.

   Themes on Windows
       Pympress  uses  the  default  Gtk  theme of your system, which makes it easy to change on many OSs either
       globally via your Gtk preferences or per  application  <https://www.linuxuprising.com/2019/10/how-to-use-
       different-gtk-3-theme-for.html>.  Here’s the way to do it on windows:

       1. Install a theme

          There   are   2   locations,   either   install   the   theme   for   all   your  gtk  apps,  e.g.  in
          C:\Users\%USERNAME%\AppData\Local\themes, or just for pympress, so in  %INSTALLDIR%\share\themes  (for
          me that’s C:\Users\%USERNAME%\AppData\Local\Programs\pympress\share\themes)

          Basically    pick    a    theme   e.g.   from   this   list   of   dark   themes   <https://www.gnome-
          look.org/browse/cat/135/ord/rating/?tag=dark> and make sure to unpack it in the selected directory, it
          needs at least %THEMENAME%\gtk-3.0\gtk.css and %THEMENAME%\index.theme, where THEMENAME is the name of
          the theme.

          There are 2 pitfalls to be aware of, to properly install a theme:

          • themes that are not self-contained (relying on re-using css from default linux themes that you might
            not have), and

          • linux  links (files under gtk-3.0/ that point to a directory above and that need to be replaced by a
            directory containing the contents of the target directory that has the same name as the link file).

       2. Set the theme as default

          Create a settings.ini file, either under C:\Users\%USERNAME%\AppData\Local\gtk-3.0 (global setting) or
          %INSTALLDIR%\etc\gtk-3.0 (just pympress) and set the contents:

             [Settings]
             gtk-theme-name=THEMENAME

       In testing this  found these 2 stackoverflow questions useful:

       • Change  GTK+3  look  on Windows <https://stackoverflow.com/a/39041558/1387346> which contains a list of
         all interesting directories

       • How   to   get    native    windows    decorations    on    GTK3    on    Windows    7+    and    MSYS2
         <https://stackoverflow.com/a/37060369/1387346> which details the process

AUTHOR

       Cimbali

COPYRIGHT

       2009-2011, Thomas Jost; 2015-2023 Cimbali