Configuration file¶
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.
Shortcuts¶
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.
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 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.