Pympress has a number of options available from its configuration file.
This file is usually located in:
~/.config/pympresson Linux,%APPDATA%/pympress.inion Windows,~/Library/Preferences/pympresson 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.
The shortcuts are parsed using 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(). 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 is valid (removing the initial Gdk.KEY_ part). You can verify that this value is parsed correctly from the Help > Shortcuts information window.
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 theAkey by default) - for
highlight: same asplainwith "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
4and1, the panes will be4 / (4 + 1) = 20%and1 / (4 + 1) = 100%, so the ini will contain something like0.2and0.8after executing pympress.