beamerpresenter-ui(5)

πŸ“¦ version 0.2.6, in nixos 26.05, nixpkgs unstable

πŸ’… NAME πŸ’…

okay bestie, this is beamerpresenter-ui(5) β€” yep, the File Formats Manual page for the user interface configuration of BeamerPresenter. This is part 1 of 3, and it's giving layout-tree main character energy already. 🫢

🌸 GENERAL 🌸

The GUI configuration file is JSON-formatted ✨. It contains a list of widgets, and each widget defines its own window. Every widget is a JSON dictionary. Some widgets provide their own content, and then there are layout widgets β€” those don't provide their own contents, but they contain a list of child widgets. That's the whole layout tree situation, iykyk. 🌳

Example configuration files can be found in /usr/share/doc/beamerpresenter/examples/. Go look, bestie. πŸŽ€

🧩 arguments shared by all widgets

  • type name β€” widget type defined in section WIDGETS. This is the only mandatory argument. Periodt.
  • keys keyboard shortcut β€” key combination to set focus to this widget. Example: use "keys":"Ctrl+F" for a search widget. πŸ”
  • title text β€” title of the widget, visible only if the widget is shown in a tabbed widget or as a top level widget (own window).
  • color color name / #RRGGBB / #AARRGGBB β€” background color, color name known to Qt. Some Qt styles may override colors set in the GUI config. πŸ’…

πŸͺŸ arguments for all top level widgets (widgets that are shown as windows)

  • always show bool β€” this window should always be shown on top of other windows if the window manager supports that. Default value is false except if the widget is of type "tool selector". πŸ‘‘
  • width/height integer β€” default window width or height in pixels. πŸ“

πŸŽ€ WIDGETS πŸŽ€

πŸ•°οΈ clock

clock is a digital clock. This widget lets you start the timer with a double click on the clock or by tapping on the clock on a touch screen. ⏰

Arguments:

  • touch input true/false β€” start/stop the timer by touching the clock. 🫢

πŸ•°οΈ analog clock

This widget lets you start the timer with a double click on the clock or by tapping on the clock on a touch screen. ⏰

Arguments:

  • touch input true/false β€” start/stop the timer by touching the clock.
  • interval integer β€” update interval in milliseconds.
  • seconds true/false β€” show/hide hand indicating seconds.
  • hour/minute/second color color β€” color for hour/minute/second hand.
  • tick color color β€” color for ticks.
  • small ticks true/false β€” show/hide small ticks (6Β° interval).
  • aspect number β€” preferred aspect ratio (width/height) of the widget. Adjust this if the clock is too large or too small. πŸ¦‹

πŸ“ notes

Rich text editable notes, bestie. πŸ“ Notes are included when saving drawings to gzipped xml file (.bpr/.xopp). Alternatively, they can be saved separately in an xml file using the keyboard actions while the notes widget has focus: save notes with Ctrl+S, save under new file name with Ctrl+Shift+S, open from file with Ctrl+O. Currently the notes are saved as HTML string, which is escaped when saving in xml format. This format might change in the future! 😭

Arguments:

  • identifier "label" or "number" β€” notes are associated with a page (number) or a group of pages with the same page label.
  • id β€” only required when using multiple distinct notes widgets: unique ID of this widget used when saving or loading notes.
  • zoom integer β€” zoom step for the widget (defined by QTextEdit).
  • file path β€” path to xml-file to read notes from. The notes file contains a root element <speakernotes> with child elements <page-notes> containing the rich text notes. Each page element has an attribute "label" or "number" to identify a page or a group of pages. Which of "label" or "number" is used must be specified by the attribute "identifier" or the root element.

Example file:

<?xml version="1.0" encoding="UTF-8"?>
<speakernotes identifier="label">
<page-notes label="1">notes on first page
</page-notes>
<page-notes label="2">notes on second page
</page-notes>
</speakernotes>

Search text in PDF document. It jumps to the next slide on which the searched text is found and highlights all occurrences (or up to 20 occurrences when using MuPDF) on this slide. To highlight occurrences of the text on another slide you need to start a new search. The search is case-insensitive. You can use the option "keys":"Ctrl+F" to start a search with Ctrl+F. πŸ”Ž

βš™οΈ settings

Change settings and get help. That's it. That's the widget. πŸ› οΈ

🎬 slide

Slide of a presentation. This is the main widget shown to the audience and on the speaker's screen. πŸ‘‘

Arguments:

  • file path β€” PDF file shown in the presentation or alias name. Aliases such as "presentation" or "notes" will be filled with command line arguments or by asking in a file open dialog.
  • shift integer β€” shift slide number relative to the main presentation slide. E.g. shift=1 creates a preview of the next slide, which can be shown in the speaker's view.
  • page part left/right β€” side of the page to be shown if the pages are split into a left and a right side showing presentation and notes on the same page.
  • media controls = false β€” show/hide a slider to navigate inside a video. πŸŽ₯
  • show tools = true β€” enable/disable pointing tools.
  • media = true β€” enable/disable multimedia content on this widget. Caution: if multiple widgets show the same slide, the configuration of one of these widgets is used for the other widgets. Switching off multimedia for one widget may also disable multimedia for other widgets.
  • mute = true β€” mute or unmute the slide connected to this widget. By default normal slides are muted and slides marked as "master" are unmuted. Make sure that exactly one slide widget is unmuted in the GUI configuration (typically the presentation slide widget). πŸ”‡
  • transitions = true β€” enable/disable slide transitions. Caution: if multiple widgets show the same slide, the configuration of one of these widgets is used for the other widgets. Switching off transitions for one widget may also disable transitions for other widgets.
  • autoplay = true β€” automatically play videos on this slide. Caution: if multiple widgets show the same slide, the configuration of one of these widgets is used for the other widgets. Switching off autoplay for one widget may also disable it for other widgets.
  • cache videos = true β€” cache videos before the slide with the video is reached. Caution: if multiple widgets show the same slide, the configuration of one of these widgets is used for the other widgets.
  • draw = true β€” enable/disable drawing on this widget. Caution: if multiple widgets show the same slide, the configuration of one of these widgets is used for the other widgets. Disabling drawing for one widget may disable it also for other ones. ✏️
  • cache hash integer β€” integer to identify slide widgets with the same geometry, which should use the same cached slides. Set the same "cache hash" for multiple slides to make them use the same cache. Note that this can also cause problems if the geometry of the widgets is not exactly the same. ⚠️
  • threads integer β€” number of threads used to pre-render pages in cache. Disable pre-rendering by setting this to zero.
  • overlays first/last/none β€” show only first/last page of each group of pages with the same page label.
  • scroll mode aspect number β€” Experimental: set width / height ratio of scroll view widget. Scroll view means that the page size is not completely fit to the window size. Instead, pages will be shown with fixed width and you probably want to scroll down. See also: actions "scroll down" and similar. πŸŒ€

🏷️ slide label

Show label of current slide and allow navigation by editing the slide label. 🏷️

πŸ”’ slide number

Show number of current slide and allow navigation by editing this number. πŸ”’

πŸ–ΌοΈ thumbnails

Thumbnail overview of all slides. πŸ–ΌοΈ

Arguments:

  • overlays skip β€” set this option to "skip" to show only one preview slide for each group of pages with the same page label.
  • columns integer β€” number of columns in which the thumbnail slides are arranged.
  • file path or alias β€” path to PDF document defining which thumbnail images are shown. By default, this is the alias "presentation" for the default file shown to the audience.

⏱️ timer

Timer for the presentation. Both the total time and the passed time are editable text fields. By double-clicking between these two text fields you can store the passed time (left field) as the target time for the currently visible page. These times per page are stored when saving drawings. The times per page are used to indicate the current progress relative to the planned progress by the background color of the passed time text field. ⏳

Arguments:

  • require confirmation bool β€” ask for confirmation before setting the time for a slide.
  • confirmation default bool β€” when asking for confirmation when setting the time for a slide, this will be the default (accept or cancel). The default value is false. βœ…

colormap JSON object

Okay so this one is lowkey the glow-up of the whole timer vibe πŸ’… β€” it lets you customize the function that maps the current time relative to the target time of the current slide onto a color. This JSON object maps times (as integers, in seconds) to colors (e.g. in #rrggbb format). Positive times mean the speaker has that amount of time left 🫢. Between the times you define in this map, a linear interpolation is used β€” so it's all smooth, no cap.

Default configuration:

"colormap" : {
"-300" : "#ff0000",
"-90"  : "#ffff00",
"0"    : "#00ff00",
"90"   : "#00ffff",
"300"  : "#ffffff"
}

toc

Outline / table of contents ✨ β€” shows the document outline tree. Very "let me see the whole syllabus" of it, honestly.

Arguments:

  • file path or alias β€” Path to the PDF document defining which outline is shown. By default, this is the alias "presentation" for the default file shown to the audience.

tools

Shows the current mapping of devices to tools πŸ–±οΈπŸ§š β€” and you can change the tools using a pop-up dialog. Currently this shows a block of mouse buttons (a touch pad is treated like a mouse), the touch input (if available), and a block of tablet devices (if available). For simple usage this is best combined with a tool selector widget β€” they're literally a match made in heaven πŸ’–.

Arguments:

  • orientation horizontal/vertical β€” Arrange different devices next to each other or above each other.
  • mouse devices array β€” List of devices that are included in the group of mouse devices. Possible values: "left button", "right button", "middle button", "no button"
  • tablet devices array β€” List of devices that are included in the group of tablet devices. Possible values: "tablet pen", "tablet eraser", "tablet hover", "tablet cursor", "tablet mod", "tablet other"

tool selector

A grid layout of buttons, bestie β€” think of it like your fave app's tool palette but make it presentation-core πŸŽ€. It contains a mandatory argument buttons, which must be an array of arrays of buttons. That array of arrays constitutes a matrix defining the arrangement of the buttons. A button can be any of the following:

  • string defining an action β€” Available actions are listed below in section ACTIONS. Pushing an action button is equivalent to sending a keyboard shortcut connected to that action.
  • JSON array of strings defining actions β€” A button can have multiple actions. Slay, multitasking queen πŸ‘‘.
  • string defining a tool β€” The tool is created with default settings.
  • JSON object defining a tool β€” The JSON object must have the property "tool" defining the tool. Available tools and their configuration options are listed below in section TOOLS.
  • string defining a tool property β€” A drop down menu for this tool property is created. Available tool properties are: "color", "width" (in points), "shape" (for draw tools), "style" (pen style for draw tools), "brush" (fill pattern for draw tools).
  • JSON object defining a tool property β€” The JSON object must have the items "select":"property" where "property" should be replaced. It should further have the item "list":[...] containing a list of selectable values for the drop down menu.

Examples:

{"select":"color", "list":["red", "green", "blue"]}
{"select":"width", "list":[0.5, 1, 2, 4]}
🫢 fun fact (well, actual fact): it is possible to select a different tool for a button while BeamerPresenter is running by clicking the button while pressing the ctrl key. But this changes the tool only temporarily, and this modification will not be saved. So don't come crying when it's gone, bestie 😭

🌈 LAYOUTS 🌈

horizontal

Horizontally arranged child widgets. The relative size of the widgets is determined by their preferred aspect ratios to ensure maximal usage of the screen by slide widgets ✨.

vertical

Vertically arranged child widgets β€” see horizontal. Same energy, rotated 90Β° πŸŒ€.

stacked

Stacked child widgets, shown in the same place. The currently visible widget can only be selected by keyboard shortcuts defined using the "keys" argument of the subwidgets. iykyk πŸ”‘

tabbed

Similar to stacked widget, but shows the child widgets as tabs, which can be selected using the cursor πŸ’….

Arguments:

  • orientation north/east/south/west β€” position of the tab bar.

πŸ”₯ ACTIONS πŸ”₯

Available actions are:

  • previous β€” navigate to previous page
  • next β€” navigate to next page
  • first β€” navigate to first page
  • last β€” navigate to last page
  • update β€” Update view (technically navigates to current page)
  • next skipping overlay β€” Navigate to next page which has a different page label than current page
  • previous skipping overlays β€” Navigate to previous page which has a different page label than current page
  • insert slide β€” Insert a new empty slide that can be used for drawing. Blank canvas era 🎨
  • remove slide β€” Remove current slide. Restore slides by navigating to the previous slide and inserting a slide.
  • restore slide β€” Restore a previously removed slide. If the current slide is a PDF page, try to restore PDF pages before trying to restore non-PDF pages.
  • reload β€” Reload the presentation PDF (if it has been modified).
  • undo β€” Undo last drawing action on current page
  • undo left/right β€” Undo last drawing action on left/right part of current page, assuming that the page is split into a left and right half which represent presentation and notes, respectively
  • redo β€” Redo last drawing action on current page
  • redo left/right β€” Redo last drawing action on left/right part of current page, assuming that the page is split into a left and right half which represent presentation and notes, respectively
  • clear β€” Clear all drawings on the current page.
  • clear left/right β€” Clear all drawings on the left/right part of current page, assuming that the page is split into a left and right half which represent presentation and notes, respectively
  • scroll up/normal/down β€” Scroll the slide view up / to normal position / down. This allows the presenter to add extra space for drawings. "scroll normal" also resets zoom.
  • zoom in/reset/out β€” Zoom the slide view. Use the tool "drag view" (experimental) to drag the zoomed view and to zoom using double-click, click and scroll, or touch zoom gestures.
  • save β€” Save drawings to file. Does not ask for file name if a file name is known.
  • save as β€” Save drawings to file. Always asks for the file name.
  • open β€” Load drawings from file.
  • open unsafe β€” Load drawings from file without clearing existing paths.
  • export svg β€” Experimental: Export all drawings as SVG images, one image per page. πŸ¦‹
  • copy β€” Copy selected items on currently focused slide to clipboard.
  • paste β€” Paste clipboard on currently focused slide.
  • cut β€” Copy selected items on currently focused slide to clipboard and remove them.
  • to foreground β€” Move selected items on currently focused slide to the foreground.
  • to background β€” Move selected items on currently focused slide to the background.
  • delete β€” Delete selected items on currently focused slide. πŸ’€
  • select all β€” Select all items on currently focused slide.
  • clear selection β€” Clear selection on currently focused slide.
  • start/stop/toggle timer β€” Start or stop timer in timer widget.
  • reset timer β€” Reset the timer (passed time) in timer widget.
  • play/pause/stop media β€” Start, pause or stop playing multimedia content.
  • mute/unmute β€” Mute or unmute all multimedia content. Media on slides views which are muted in the GUI config are not affected.
  • fullscreen β€” Toggle full screen view for currently active window.
  • quit β€” Close BeamerPresenter. Ask for confirmation if there are unsaved changes. Note that the detection of unsaved changes is not reliable yet πŸ‘€ so maybe save your stuff, bestie.
  • quit unsafe β€” Close BeamerPresenter ignoring unsaved changes. Main character energy, zero regrets πŸ™ˆ

✨ TOOLS ✨

okay so tools are configured in a JSON object that looks like {"tool":"pen", ...} and then you fill in the configuration options listed below. Some config options are shared across whole groups of tools β€” like draw tools, for example. Also important: all lengths (stroke width, etc.) are in points (1/72 inch) in the PDF. periodt πŸ’…

πŸ› οΈ Common Options for all tools

these ones work for every single tool, bestie:

  • color β€” Color name known to Qt or #RRGGBB or #AARRGGBB
  • device β€” Device name (e.g. "tablet pen", "touch"), "all", or "all+" (see also beamerpresenter.conf (5)). If this property is set, pushing this button will set the tool for the defined input devices. If this property is not set, then the tool will always be set only for the input device with which the button was pressed.

βœ‹ General Tools

  • none β€” No tool or hand tool. Follow hyperlinks and click on videos to start or stop them.
  • drag view β€” Drag and zoom view. Available configuration options:
    • touch-zoom bool β€” Zoom using touch screen pinch gesture
    • scroll "zoom" | "move" | "none" β€” Effect of scroll wheel (only when the tool is active for a device that supports scrolling)
    • double-click "zoom" | "none" β€” Effect of double click with left mouse button (only when the tool is active for a device that supports double click)
  • text β€” Add a text field. Configurable options:
    • font β€” Anything that Qt can interpret as a font name.
    • font size β€” Font size (positive number).

πŸ–ŠοΈ Draw Tools

  • pen β€” Pen of variable line width if the input device provides pressure information.
  • fixed width pen β€” Pen of fixed line width.
  • highlighter β€” Fixed width pen with default options adjusted for highlighting.

Common options for draw tools

  • width β€” Stroke width in pt (positive number).
  • fill β€” Color to fill the path. Leave empty if paths should not be filled.
  • style = SolidLine β€” Pen style for stroking the path. Possible values are "nopen" , "solid", "dash", "dot", "dashdot", and "dashdotdot".
  • brush = SolidPattern β€” Filling style of the path, see https://doc.qt.io/qt-6/qt.html#BrushStyle-enum for valid names. Gradients are not allowed.
  • shape = freehand β€” Draw this shape instead of a freehand path. Allowed values are "freehand", "rectangle", "ellipse", "line", and "arrow".
  • composition β€” Composition mode, valid values are: "source over" (default for pen), "darken" (default for highlighter), "lighten", "difference", "plus", "multiply", "screen", "overlay"

πŸ”¦ Pointing Tools

  • eraser β€” Erase previously drawn strokes. Option:
    • linewidth = 0 β€” Draw a circle of given line width around the eraser. The circle is only drawn on the currently active widget.
  • pointer β€” Laser pointer.
  • magnifier β€” Enlargen the slide in a circular region. Option:
    • scale = 2 β€” Magnification factor (number between 0.1 and 5).
  • torch β€” Highlight parts of the slide by darkening everything else.

Common options for pointing tools

  • size β€” Radius of the tool (positive number).

🎯 Selection Tools

  • click select β€” Click on items to select them.
  • rectangle select β€” Select items in a rectangular region.
  • freehand select β€” Select items in a drawn region.

πŸ‘€ SEE ALSO

go say hi to beamerpresenter(1) and beamerpresenter.conf(5), β€” they’re literally right there, bestie 🫢


this lil page is serving version 0.2.6, dated 2024-12-25 β€” beamerpresenter-ui(5) forever, no cap πŸ’–βœ¨

πŸ“¦ where this page comes from