.\" Man page generated from reStructuredText. . . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .TH "PYMPRESS" "1" "27 November, 2022" "1.7.1" "pympress" .SH NAME pympress \- pympress documentation .SH CONTENTS .SS What is Pympress? .sp Pympress is a PDF presentation tool designed for dual\-screen setups such as presentations and public talks. Highly configurable, fully\-featured, and portable .sp It comes with many great features (more below): .INDENT 0.0 .IP \(bu 2 supports embedded gifs (out of the box), videos, and audios (with VLC or Gstreamer integration) .IP \(bu 2 text annotations displayed in the presenter window .IP \(bu 2 natively supports beamer\(aqs \fInotes on second screen\fP, as well as Libreoffice notes pages! .UNINDENT .sp Pympress is a free software, distributed under the terms of the GPL license (version 2 or, at your option, any later version). .sp Pympress was originally created and maintained by \fI\%Schnouki\fP, on \fI\%his repo\fP\&. .SS Installing .INDENT 0.0 .IP \(bu 2 Ubuntu 20.04 focal or newer, Debian 11 Bullseye or newer (maintained by \fI\%@mans0954\fP) .INDENT 2.0 .INDENT 3.5 .sp .nf .ft C 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 .ft P .fi .UNINDENT .UNINDENT .IP \(bu 2 RPM\-based Linux (Fedora, CentOS, Mageia, OpenSuse, RHEL) .sp You can get pympress from the pympress COPR repo of your system. .sp With yum or dnf, simply do: .INDENT 2.0 .INDENT 3.5 .sp .nf .ft C dnf copr enable cimbali/pympress dnf install python3\-pympress .ft P .fi .UNINDENT .UNINDENT .sp With zypper, fetch the link of the .repo in the table at the bottom of the COPR page and add it as a source. .INDENT 2.0 .INDENT 3.5 .sp .nf .ft C zypper addrepo https://copr.fedorainfracloud.org/coprs/cimbali/pympress/repo/opensuse\-tumbleweed/cimbali\-pympress\-opensuse\-tumbleweed.repo zypper install python3\-pympress .ft P .fi .UNINDENT .UNINDENT .IP \(bu 2 Arch Linux from AUR (maintained by \fI\%@Jose1711\fP) .INDENT 2.0 .INDENT 3.5 .sp .nf .ft C git clone https://aur.archlinux.org/python\-pympress.git cd python\-pympress makepkg \-si pacman \-S poppler\-glib # dependency temporarily missing from AUR package .ft P .fi .UNINDENT .UNINDENT .sp Or using any other tool to manage AUR packages (yay, pacaur, etc.): .INDENT 2.0 .INDENT 3.5 .sp .nf .ft C yay \-S python\-pympress pacman \-S poppler\-glib # dependency temporarily missing from AUR package .ft P .fi .UNINDENT .UNINDENT .IP \(bu 2 macOS using \fI\%Homebrew\fP .INDENT 2.0 .INDENT 3.5 .sp .nf .ft C brew install pympress .ft P .fi .UNINDENT .UNINDENT .IP \(bu 2 Windows with \fI\%Chocolatey\fP (maintained by \fI\%@ComFreek\fP) .INDENT 2.0 .INDENT 3.5 .sp .nf .ft C choco install pympress .ft P .fi .UNINDENT .UNINDENT .sp Or download the latest installer from the \fI\%latest Github release\fP\&. .INDENT 2.0 .IP \(bu 2 If you get an error message along the lines of "MSVCP100.dll is missing", get the Visual C++ 2010 redistributables from Microsoft (\fI\%x86 (32 bit)\fP or \fI\%x64 (64 bits)\fP). Those libraries really should already be installed on your system. .UNINDENT .IP \(bu 2 Other systems, directly from PyPI −\ requires python, gtk+3, poppler, and their python bindings: .INDENT 2.0 .INDENT 3.5 .sp .nf .ft C python3 \-m pip install "pympress" .ft P .fi .UNINDENT .UNINDENT .INDENT 2.0 .IP \(bu 2 Make sure you have all the dependencies\&. (These are already included in binary packages or their dependencies.) .IP \(bu 2 Using pip, you may want to install with the \fB\-\-user\fP option, or install from github or downloaded sources. See \fI\%the python documentation on installing\fP\&. .IP \(bu 2 If your python environment lacks the Gobject Introspections module, try .INDENT 2.0 .IP 1. 3 using \fB\-\-system\-site\-packages\fP for \fI\%virtual environments\fP, .IP 2. 3 installing pygobject from pip (\fBpip install pygobject\fP, which requires the correct development/header packages. See \fI\%the PyPI installation instructions of PyGObject for your system\fP). .UNINDENT .UNINDENT .UNINDENT .SS Notes .sp 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 \fI\%on their website\fP\&. .SS Usage .SS Opening a file .sp 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: \fBpympress slides.pdf\fP or \fBpython3 \-m pympress slides.pdf\fP .SS Functionalities .sp All functionalities are available from the menus of the window with slide previews. Don\(aqt be afraid to experiment with them! .sp Keyboard shortcuts are also listed in these menus. Some more usual shortcuts are often available, for example \fBCtrl\fP+\fBL\fP, and \fBF11\fP also toggle fullscreen, though the main shortcut is just \fBF\fP\&. .sp A few of the fancier functionalities are listed here: .INDENT 0.0 .IP \(bu 2 \fBTwo\-screen display\fP: 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. .IP \(bu 2 \fBMedia support\fP: supports playing video, audio, and gif files embedded in (or linked from) the PDF file. .IP \(bu 2 \fBHighlight mode\fP: Allows one to draw freehand on the slide currently on screen. .IP \(bu 2 \fBGo To Slide\fP: To jump to a selected slide without flashing through the whole presentation on the projector, press \fBG\fP or click the "current slide" box. Using \fBJ\fP 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 \fB\epause\fP\&. .sp 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 \fBHome\fP/\fBUp\fP/\fBDown\fP/\fBEnd\fP keys, with the + and \- buttons of the spin box, or simply by typing in the number of the slide. Press \fBEnter\fP to validate going to the new slide or \fBEsc\fP to cancel. .IP \(bu 2 \fBSoftware pointer\fP: Clicking on the slide (in either window) while holding \fBctrl\fP down will display a software laser pointer on the slide. Or press \fBL\fP to permanently switch on the laser pointer. .IP \(bu 2 \fBTalk time breakdown\fP: The \fBPresentation > Timing Breakdown\fP 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. .IP \(bu 2 \fBAutomatic file reloading\fP: If the file is modified, pympress will reload it (and preserve the current slide, current time, etc.) .IP \(bu 2 \fBBig button mode\fP: Add big buttons (duh) for touch displays. .IP \(bu 2 \fBSwap screens\fP: If Pympress mixed up which screen is the projector and which is not, press \fBS\fP .IP \(bu 2 \fBEstimated talk time\fP: Click the \fBTime estimation\fP box and set your planned talk duration. The color will allow you to see at a glance how much time you have left. .IP \(bu 2 \fBAdjust screen centering\fP: If your slides\(aq form factor doesn\(aqt fit the projectors\(aq and you don\(aqt want the slide centered in the window, use the "Screen Center" option in the "Presentation" menu. .IP \(bu 2 \fBResize Current/Next slide\fP: You can drag the bar between both slides on the Presenter window to adjust their relative sizes to your liking. .IP \(bu 2 \fBPreferences\fP: Some of your choices are saved in a configuration file, and more options are accessible there. See the \fI\%configuration file documentation\fP for more details. .IP \(bu 2 \fBCaching\fP: 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. .IP \(bu 2 \fBConfigurability\fP: Layout of presenter window dynamically configurable, with 1 to 16 next slides preview .IP \(bu 2 \fBEditable PDF annotations\fP: Annotations can be added, removed, or changed, and the modified PDF files can be saved .IP \(bu 2 \fBAutomatic next slide and looping\fP .UNINDENT .SS Command line arguments .INDENT 0.0 .IP \(bu 2 \fB\-h, \-\-help\fP: Shows a list of all command line arguments. .IP \(bu 2 \fB\-t mm[:ss], \-\-talk\-time=mm[:ss]\fP: The estimated (intended) talk time in minutes and optionally seconds. .IP \(bu 2 \fB\-n position, \-\-notes=position\fP: Set the position of notes on the pdf page (none, left, right, top, or bottom). Overrides the detection from the file. .IP \(bu 2 \fB\-\-log=level\fP: Set level of verbosity in log file (DEBUG, INFO, WARNING, ERROR). .UNINDENT .SS Media and autoplay .sp To enable media playback, you need to have either: .INDENT 0.0 .IP \(bu 2 Gstreamer installed (enabled by default), with plugins gstreamer\-good/\-bad/\-ugly based on which codecs you need, or .IP \(bu 2 VLC installed (and the python\-vlc module), with \fBenabled = on\fP under the \fB[vlc]\fP section of your config file. .UNINDENT .sp To produce PDFs with media inclusion, the ideal method is to use beamer’s multimedia package, always with \fB\emovie\fP: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C \edocumentclass{beamer} \eusepackage{multimedia} \ebegin{frame}{Just a mp4 here} \ecentering \emovie[width=0.3\etextwidth]{\eincludegraphics[width=0.9\etextwidth]{frame1.png}}{movie.mp4} \emovie[width=0.3\etextwidth]{}{animation.gif} \emovie[width=0.3\etextwidth]{}{ding.ogg} \eend{frame} .ft P .fi .UNINDENT .UNINDENT .sp If you desire autoplay, ensure you have pympress ≥ 1.7.0 and poppler ≥ 21.04, and use the \fBmovie15\fP package as follows: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C \edocumentclass{beamer} \eusepackage{movie15} \ebegin{document} \ebegin{frame} \ebegin{center} \eincludemovie[attach=false,autoplay,text={% \eincludegraphics{files/mailto.png}% }]{0.4\elinewidth}{0.3\elinewidth}{files/random.mpg} \eend{center} \eend{frame} \eend{document} .ft P .fi .UNINDENT .UNINDENT .SS Dependencies .sp Pympress relies on: .INDENT 0.0 .IP \(bu 2 Python (version ≥ 3.4, python 2.7 is supported only until pympress 1.5.1, and 3.x < 3.4 until v1.6.4). .IP \(bu 2 \fI\%Poppler\fP, the PDF rendering library. .IP \(bu 2 \fI\%Gtk+ 3\fP, a toolkit for creating graphical user interfaces, and \fI\%its dependencies\fP, specifically: .INDENT 2.0 .IP \(bu 2 \fI\%Cairo\fP (and python bindings for cairo), the graphics library which is used to pre\-render and draw over PDF pages. .IP \(bu 2 Gdk, a lower\-level graphics library to handle icons. .UNINDENT .IP \(bu 2 \fI\%PyGi, the python bindings for Gtk+3\fP\&. PyGi is also known as \fIpygobject3\fP, just \fIpygobject\fP or \fIpython3\-gi\fP\&. .INDENT 2.0 .IP \(bu 2 Introspection bindings for poppler may be shipped separately, ensure you have those as well (\fBtypelib\-1_0\-Poppler\-0_18\fP on OpenSUSE, \fBgir1.2\-poppler\-0.18\fP on Ubuntu) .UNINDENT .IP \(bu 2 optionally \fI\%VLC\fP, to play videos (with the same bitness as Python) and the \fI\%python\-vlc\fP bindings. .IP \(bu 2 optionally Gstreamer to play videos (which is a Gtk library) .UNINDENT .SS On linux platforms .sp 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 \fIassuming you use python3\fP: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C 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 .ft P .fi .UNINDENT .UNINDENT .sp Different distributions might have different package naming conventions, for example the equivalent on OpenSUSE would be: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C 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 .ft P .fi .UNINDENT .UNINDENT .sp On CentOS/RHEL/Fedora the dependencies would be: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C yum install python36 python3\-pip gtk3 poppler\-glib cairo gdk\-pixbuf2 python3\-gobject python3\-cairo .ft P .fi .UNINDENT .UNINDENT .sp And on Arch Linux: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C pacman \-S \-\-needed python python\-pip gtk3 poppler cairo gobject\-introspection poppler\-glib python\-gobject .ft P .fi .UNINDENT .UNINDENT .SS On macOS .sp Dependencies can be installed using \fI\%Homebrew\fP: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C brew install \-\-only\-dependencies pympress .ft P .fi .UNINDENT .UNINDENT .SS On windows .sp The binary installer for windows comes with pympress and all its dependencies packaged. .sp Alternately, in order to install from pypi or from source on windows, there are two ways to get the dependencies: .INDENT 0.0 .IP 1. 3 using MSYS2 (replace x86_64 with i686 if you\(aqre using a 32 bit machine). .sp \fBWarning:\fP this can take a substantial amount of disk size as it requires a full software distribution and building platform. .INDENT 3.0 .INDENT 3.5 .sp .nf .ft C 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 .ft P .fi .UNINDENT .UNINDENT .sp This is also the strategy used to automate \fI\%builds on appveyor\fP\&. .IP 2. 3 Using PyGobjectWin32. \fIBe sure to check the supported Python versions (up to 3.4 at the time of writing)\fP, they appear in the FEATURES list in the linked page. .UNINDENT .INDENT 0.0 .IP \(bu 2 Install native \fI\%python for windows\fP .IP \(bu 2 Get GTK+3, Poppler and their python bindings by executing \fI\%the PyGi installer\fP\&. Be sure to tick all the necessary dependencies in the installer (Poppler, Cairo, Gdk\-Pixbuf). .UNINDENT .sp Alternately, you can build your Gtk+3 stack from source using MSVC, see \fI\%the Gnome wiki\fP and \fI\%this python script that compiles the whole Gtk+3 stack\fP\&. This strategy has not been used successfully yet, due to problems building Poppler with its introspection bidings (i.e. typelib) − see \fI\%#109\fP\&. .SS Contributing .sp Feel free to clone this repo and use it, modify it, redistribute it, etc, under the GPLv2+. A \fI\%number of contributors\fP have taken part in the development of pympress and submitted pull requests to improve it. .sp \fBBe 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.\fP .sp Pympress has inline sphinx documentation (\fI\%Google style\fP, contains rst syntax), and the \fI\%docs generated from it are hosted on the github pages of this repo\fP\&. .SS Translations .INDENT 0.0 .IP \(bu 2 Czech .IP \(bu 2 French .IP \(bu 2 German .IP \(bu 2 Polish .IP \(bu 2 Spanish .IP \(bu 2 Italian .UNINDENT .sp If you want to add or contribute to a translation, check \fI\%pympress’ page on POEditor\fP and add your efforts to make pympress available in your own language to those of \fI\%@Vulpeculus\fP, \fI\%@polaksta\fP, \fI\%@susobaco\fP, Agnieszka, Ferdinand Fichtner, \fI\%FriedrichFröbel\fP, \fI\%Jaroslav Svoboda\fP, Jeertmans, Kristýna, Lorenzo. pacchiardi, Luis Sibaja, Nico, Saulpierotti, and Cimbali. .SS Packages .sp Official releases are made to \fI\%PyPI\fP and with \fI\%github releases\fP\&. The community maintains a number of other packages or recipes to install pympress (see Install section). Any additions welcome. .SS Configuration file .sp Pympress has a number of options available from its configuration file. .sp This file is usually located in: .INDENT 0.0 .IP \(bu 2 \fB~/.config/pympress\fP on Linux, .IP \(bu 2 \fB%APPDATA%/pympress.ini\fP on Windows, .IP \(bu 2 \fB~/Library/Preferences/pympress\fP on macOS, .IP \(bu 2 in the top\-level of the pympress install directory for portable installations. .UNINDENT .sp The path to the currently used configuration file can be checked in the \fBHelp > About\fP information window. .SS Shortcuts .sp The shortcuts are parsed using \fI\%Gtk.accelerator_parse()\fP: .INDENT 0.0 .INDENT 3.5 The format looks like “a” or “F1” or “z” (the last one is for key release). .sp The parser is fairly liberal and allows lower or upper case, and also abbreviations such as “” and “”. Key names are parsed using \fI\%Gdk.keyval_from_name()\fP\&. For character keys the name is not the symbol, but the lowercase name, e.g. one would use “minus” instead of “\-”. .UNINDENT .UNINDENT .sp This means that any value in this \fI\%list of key constants\fP is valid (removing the initial \fBGdk.KEY_\fP part). You can verify that this value is parsed correctly from the \fBHelp > Shortcuts\fP information window. .SS Layouts .sp The panes (current slide, next slide, notes, annotations, etc.) can be rearranged arbitrarily by setting the entries of the \fBlayout\fP section in the configuration file. Here are a couple examples of layouts, with \fBCu\fP the current slide, \fBNo\fP the notes half of the slide, \fBNx\fP the next slide: .INDENT 0.0 .IP \(bu 2 All\-horizontal layout: .INDENT 2.0 .INDENT 3.5 .sp .nf .ft C +\-\-\-\-+\-\-\-\-+\-\-\-\-+ | Cu | No | Nx | +\-\-\-\-+\-\-\-\-+\-\-\-\-+ .ft P .fi .UNINDENT .UNINDENT .sp Setting: .INDENT 2.0 .INDENT 3.5 .sp .nf .ft C notes = {"children": ["current", "notes", "next"], "proportions": [0.33, 0.33, 0.33], "orientation": "horizontal", "resizeable": true} .ft P .fi .UNINDENT .UNINDENT .IP \(bu 2 All\-vertical layout: .INDENT 2.0 .INDENT 3.5 .sp .nf .ft C +\-\-\-\-+ | Cu | +\-\-\-\-+ | No | +\-\-\-\-+ | Nx | +\-\-\-\-+ .ft P .fi .UNINDENT .UNINDENT .sp Setting: .INDENT 2.0 .INDENT 3.5 .sp .nf .ft C notes = {"children": ["current", "notes", "next"], "proportions": [0.33, 0.33, 0.33], "orientation": "vertical", "resizeable": true} .ft P .fi .UNINDENT .UNINDENT .IP \(bu 2 Vertical layout with horizontally divided top pane: .INDENT 2.0 .INDENT 3.5 .sp .nf .ft C +\-\-\-\-+\-\-\-\-+ | Cu | No | +\-\-\-\-+\-\-\-\-+ | Nx | +\-\-\-\-\-\-\-\-\-+ .ft P .fi .UNINDENT .UNINDENT .sp Setting: .INDENT 2.0 .INDENT 3.5 .sp .nf .ft C notes = {"children": [ {"children": ["current", "notes"], "proportions": [0.5, 0.5], "orientation": "horizontal", "resizeable": true}, "next" ], "proportions": [0.5, 0.5], "orientation": "vertical", "resizeable": true} .ft P .fi .UNINDENT .UNINDENT .IP \(bu 2 Horizontal layout with horizontally divided right pane: .INDENT 2.0 .INDENT 3.5 .sp .nf .ft C +\-\-\-\-+\-\-\-\-+ | | Nx | + Cu +\-\-\-\-+ | | No | +\-\-\-\-\-\-\-\-\-+ .ft P .fi .UNINDENT .UNINDENT .sp Setting: .INDENT 2.0 .INDENT 3.5 .sp .nf .ft C notes = {"children": [ "current", {"children": ["next", "notes"], "proportions": [0.5, 0.5], "orientation": "vertical", "resizeable": true} ], "proportions": [0.5, 0.5], "orientation": "horizontal", "resizeable": true} .ft P .fi .UNINDENT .UNINDENT .UNINDENT .sp And so on. You can play with the items, their nesting, their order, and the orientation in which a set of widgets appears. .sp For each entry the widgets (strings that are leaves of "children" nodes in this representation) must be: .INDENT 0.0 .IP \(bu 2 for \fBnotes\fP: "current", "notes", "next" .IP \(bu 2 for \fBplain\fP: "current", "next" and "annotations" (the annotations widget is toggled with the \fBA\fP key by default) .IP \(bu 2 for \fBhighlight\fP: same as \fBplain\fP with "highlight" instead of "current" .UNINDENT .sp A few further remarks: .INDENT 0.0 .IP \(bu 2 If you set "resizeable" to \fBfalse\fP, the panes won’t be resizeable dynamically with a handle in the middle .IP \(bu 2 "proportions" are normalized, and saved on exit if you resize panes during the execution. If you set them to \fB4\fP and \fB1\fP, the panes will be \fB4 / (4 + 1) = 20%\fP and \fB1 / (4 + 1) = 100%\fP, so the ini will contain something like \fB0.2\fP and \fB0.8\fP after executing pympress. .UNINDENT .SS Themes on Windows .sp 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 \fI\%per application\fP\&. Here’s the way to do it on windows: .INDENT 0.0 .IP 1. 3 Install a theme .sp There are 2 locations, either install the theme for all your gtk apps, e.g. in \fBC:\eUsers\e%USERNAME%\eAppData\eLocal\ethemes\fP, or just for pympress, so in \fB%INSTALLDIR%\eshare\ethemes\fP (for me that’s \fBC:\eUsers\e%USERNAME%\eAppData\eLocal\ePrograms\epympress\eshare\ethemes\fP) .sp Basically pick a theme \fI\%e.g. from this list of dark themes\fP and make sure to unpack it in the selected directory, it needs at least \fB%THEMENAME%\egtk\-3.0\egtk.css\fP and \fB%THEMENAME%\eindex.theme\fP, where \fBTHEMENAME\fP is the name of the theme. .sp There are 2 pitfalls to be aware of, to properly install a theme: .INDENT 3.0 .IP \(bu 2 themes that are not self\-contained (relying on re\-using css from default linux themes that you might not have), and .IP \(bu 2 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). .UNINDENT .IP 2. 3 Set the theme as default .sp Create a \fBsettings.ini\fP file, either under \fBC:\eUsers\e%USERNAME%\eAppData\eLocal\egtk\-3.0\fP (global setting) or \fB%INSTALLDIR%\eetc\egtk\-3.0\fP (just pympress) and set the contents: .INDENT 3.0 .INDENT 3.5 .sp .nf .ft C [Settings] gtk\-theme\-name=THEMENAME .ft P .fi .UNINDENT .UNINDENT .UNINDENT .sp In testing this found these 2 stackoverflow questions useful: .INDENT 0.0 .IP \(bu 2 \fI\%Change GTK+3 look on Windows\fP which contains a list of all interesting directories .IP \(bu 2 \fI\%How to get native windows decorations on GTK3 on Windows 7+ and MSYS2\fP which details the process .UNINDENT .SS Pympress package .sp This page contains the inline documentation, generated from the code using sphinx. .sp The code is documented in the source using the \fI\%Google style\fP for docstrings. Sphinx has gathered a \fI\%set of examples\fP which serves as a better crash course than the full style reference. .sp Retructured text (rst) can be used inside the comments and docstrings. .SS Modules .SH INDICES AND TABLES .INDENT 0.0 .IP \(bu 2 \fI\%Index\fP .IP \(bu 2 \fI\%Module Index\fP .UNINDENT .SH AUTHOR Thomas Jost, Cimbali .SH COPYRIGHT 2009-2022, Thomas Jost; 2015-2020 Cimbali .\" Generated by docutils manpage writer. .