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.
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 theA
key by default) - for
highlight
: same asplain
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
and1
, the panes will be4 / (4 + 1) = 20%
and1 / (4 + 1) = 100%
, so the ini will contain something like0.2
and0.8
after executing pympress.