1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
# 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.
|