Provided by: pympress_1.8.4-1ubuntu1_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>.

   Installing
       • Ubuntu  20.04  focal   or   newer,   Debian   11   Bullseye   or   newer   (maintained   by   @mans0954
         <https://github.com/mans0954>)

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

       • RPM-based Linux (Fedora, CentOS, Mageia, OpenSuse, RHEL)

         You can get pympress from the pympress COPR repo of your system.

         With yum or dnf, simply do:

            dnf copr enable cimbali/pympress
            dnf install python3-pympress

         With  zypper,  fetch  the link of the .repo in the table at the bottom of the COPR page and add it as a
         source.

            zypper addrepo https://copr.fedorainfracloud.org/coprs/cimbali/pympress/repo/opensuse-tumbleweed/cimbali-pympress-opensuse-tumbleweed.repo
            zypper install python3-pympress

       • Arch Linux from AUR (maintained by @Jose1711 <https://github.com/jose1711>)

            git clone https://aur.archlinux.org/python-pympress.git
            cd python-pympress
            makepkg -si

         Or using any other tool to manage AUR packages (yay, pacaur, etc.):

            yay -S python-pympress

       • macOS using Homebrew <https://brew.sh/>

            brew install pympress

       • Windows     with      Chocolatey      <https://chocolatey.org/>      (maintained      by      @ComFreek
         <https://github.com/ComFreek>)

            choco install pympress

         Or using the Windows Package Manager (winget)

            winget install pympress

         Or      download      the      latest      installer     from     the     latest     Github     release
         <https://github.com/Cimbali/pympress/releases/latest>.

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

       • Other systems, directly from PyPI  − requires python, gtk+3, poppler, and their python bindings:

            python3 -m pip install "pympress"

         • Make sure you have all the dependencies. (These are already included  in  binary  packages  or  their
           dependencies.)

         • Using  pip,  you  may  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>.

         • If your python environment lacks the Gobject Introspections module, try

           1. using             --system-site-packages            for            virtual            environments
              <https://docs.python.org/3.7/library/venv.html>,

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

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

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

   Dependencies
       Pympress relies on:

       • Python (version ≥ 3.4, python 2.7 is supported only until pympress 1.5.1, and 3.x < 3.4 until v1.6.4).

       • 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) and
         the python-vlc <https://pypi.org/project/python-vlc/> bindings.

       • optionally Gstreamer to play videos (which is a Gtk library)

   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 install 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 CentOS/RHEL/Fedora the dependencies would be:

          yum install python36 python3-pip gtk3 poppler-glib cairo gdk-pixbuf2 python3-gobject python3-cairo

       And on Arch Linux:

          pacman -S --needed python python-pip gtk3 poppler cairo gobject-introspection poppler-glib python-gobject gst-plugin-gtk

   On macOS
       Dependencies can be installed using Homebrew <https://brew.sh/>:

          brew install --only-dependencies pympress

   On windows
       The binary installer for windows 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+.  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.

   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 (see Install section). Any additions welcome.

   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

   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
   pympress.util -- various utility functions
       class pympress.util.Monitor(obj, id_=None, num=None)
              Bases: ScreenArea

              A specialised ScreenArea representing a monitor, with an descriptive string and a monitor number

              static lookup_monitors(display, *windows)
                     Get the info on the monitors

                     Parametersdisplay (Display) -- the current screen

                            • *windows (tuple of Window) -- windows for wich to look up the monitor position

                     Returns
                            The monitors for each window, followed  by  the  best  monitors  for  presenter  and
                            content

                     Return type
                            tuple of Monitor

              monitor_number = -1
                     An int that identifies the monitor in Display

              name = ''
                     A str to represent a user-friendly name for the monitor

       exception pympress.util.NoMonitorPositions
              Bases: Exception

              The Exception we raise when there is no way of figuring out the monitor position of windows

       class pympress.util.ScreenArea(obj)
              Bases: object

              Convenience  class  to represent monitors or windows in terms of the area (position and size) they
              use on screen

              This is similar to Monitor, but necessary as we want to handle “mirrored” monitors as if they were
              a single monitor, and only use “extended” monitors as target for content  window  position  and/or
              fullscreening.

              contains(other)
                     Check whether this area contains other

                     Parameters
                            other (ScreenArea) -- The screen area to compare with

                     Returns
                            True iff the area is contained

                     Return type
                            bool

              equal(other)
                     Check whether 2 areas cover the exact same space

                     Parameters
                            other (ScreenArea) -- The screen area to compare with

                     Returns
                            True iff the areas are identical

                     Return type
                            bool

              intersection(other)
                     Compute the intersection of 2 screen areas

                     Parameters
                            other (ScreenArea) -- The screen area to compare with

                     Returns
                            An area representing the intersection, or None if there is no intersection

                     Return type
                            ScreenArea or None

              intersects(other)
                     Check whether this area intersects other

                     Parameters
                            other (ScreenArea) -- The screen area to compare with

                     Returns
                            True iff the areas have an intersection

                     Return type
                            bool

              least_intersection(candidates)
                     Find the rectangle that intersects least with rect in candidates

                     Parameters
                            candidates (iterable of
                            `
                            ScreenArea`s) -- The monitor areas to check for intersection

                     Returns
                            The best candidate screen area, i.e. that has the smallest intersection

                     Return type
                            ScreenArea

              most_intersection(candidates)
                     Find the rectangle that intersects most with rect in candidates

                     Parameters
                            candidates (iterable of
                            `
                            ScreenArea`s) -- The monitor areas to check for intersection

                     Returns
                            The best candidate screen area, i.e. that has the largest intersection

                     Return type
                            ScreenArea

       pympress.util.close_opened_resources()
              Close all importlib context managers for resources that we needed over the program lifetime.

       pympress.util.fileopen(f)
              Call the right function to open files, based on the platform.

              Parameters
                     f (path-like) -- 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
                     Path

       pympress.util.get_icon_path(name)
              Get the path for an image from pympress' resources

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

              Returns
                     The path to the icon to load

              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
                     Path

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

              May return None if the install root is not a real directory (e.g. in a zip file).

              Returns
                     The path to the portable configuration file.

              Return type
                     Path or None

       pympress.util.get_pympress_meta()
              Get metadata (version, etc) from pympress' __init__.py or git describe.

              Returns
                     metadata properties (version, contributors) mapped to their values

              Return type
                     dict

       pympress.util.get_translation(domain)
              Returns a gettext translation object.

              This  re-implements  gettext’s translation() and find() to allow using a python 3.9 Traversable as
              localedir

              Returns
                     A gettext translation object with the strings for the domain loaded

              Return type
                     NullTranslations

       pympress.util.get_ui_resource_file(name, ext='.glade')
              Load an UI definition file from pympress' resources

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

                     • ext (str) -- The extension of the file

              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
                     Path

       pympress.util.hard_set_screensaver(disabled)
              Enable or disable the screensaver.

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

       pympress.util.introspect_flag_value(flags_class, nick, fallback)
              Get the value of a flag from its class, given a value’s name (or nick)

              Introspection  technique (in particular __flags_values__ dict) inspired from pygtkcompat.  This is
              needed because there is no typelib for libgstplayback.

              Parametersflags_class (a type inheriting from GFlags) -- the flags class to introspect

                     • nick (str) -- a name or nick of the flag value that should be returned

                     • fallback (int) -- the documented flag value, if lookup fails

       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

AUTHOR

       Cimbali

COPYRIGHT

       2009-2024, Thomas Jost; 2015-2023 Cimbali

1.8.4                                            22 March, 2024                                      PYMPRESS(1)