Manual of the b6+ slide editor

Version 0.1 (15 March 2026)

The b6+ slide editor is a WYSIWYG editor for HTML slides that use the b6+ slide framework. It currently still has some limitations. It may not correctly read all slide decks made with other means and it cannot yet generate all the features of b6+.

Table of contents

Source code and issues

The source of the b6+ slide editor is on GitHub. To raise issues, you can also use GitHub, or send me email.

Areas of the application window

[Screendump]
The b6+ slide editor running on MacOS. (Click on an area to jump to its description.) Toolbar Formatting bar Slides panel Slide number Editing area Element hierarchy

Toolbar

The toolbar contains:

Play
Plays the current slide deck in the default browser.
Slide layout
Use this menu to apply a particular layout to the current slide. The available layouts depend on the style sheet of the slide deck. (If the editor doesn't know what layouts the style sheet defines, the menu will contain a handful of layouts that are likely to exist: normal slide, cover slide and final slide.
Clear
(This check box is only visible if the chosen style sheet includes the corresponding functionality.) Checking the box removes any slide number and some or all decorations from the current slide. current slide. (This sets the ‘clear’ class on the slide. The precise effect depends on the style sheet.)
Text Fit
If checked, b6+ will try to reduce the font size of the current slide if necessary to fit all text on the slide. (The effect is not visible in the editor. Try ‘Play’ to see it.)
HTML View / WYSIWYG View
Toggle between the WYSIWYG editor and the source editor.
Change style sheet
The button opens a dialog for specifying the style sheet for the current slides. It can be given as a URL or as a path to a local file. It may be a relative path, in which case it will be interpreted as relative to the location of the slide deck. The dialog contains a ‘Browse’ button to help in selecting a local style sheet.
Custom CSS
The button opens a text editor for editing CSS rules. You can use this to complement or override the rules in the style sheet set with the ‘Change style sheet’ button.
Include b6+ script
If unchecked, the editor will omit the link to the b6+ script when it saves the slide deck to file. Wihout that link, the slide deck can of course not be played, but it may still be useful if you don't plan to present it, or plan to use another slide framework than b6+. (In the future, this check box may be replaced by a menu of alternative scripts.)

Formatting bar

strong
Makes the selected text (or the text you are about to type) strongly emphasized, or, if it is already strong, makes it not strongly emphasized. The exact look depends on the style sheet, but it typically makes the text bold.
em
Emphasizes the selected text (or the text that you will type next), or, if it is already emphasized, removes the emphasis. The precise look depends on the style sheet, but often emphasized text is in italics.
code
Makes the selected text (or the next text you will type) look like code, or, if it is already formatted that way, removes that format from it. The look of code depends on the style sheet, but typically it uses a monospace font.
🔗
Makes the selected text into a hyperlink or edit its URL, if it is already a hyperlink. This will open a dialog box in which you can enter or edit the URL. The dialog also has a ‘Remove Link’ button to make the selected text no longer a hyperlink.
Removes all formatting: Any text in the selection that is emphasized, has a class, is a list item, etc. will lose its formatting and become plain paragraph text.
Blocks & containers
You can select an item from this menu to turn the block level element around the cursor or around the currently selected text into an element of the selected type: heading 1, heading 2, blockquote, aside, etc.
🖼️
This inserts an image. It opens a dialog in which you can enter the address of the image (a URL or a local file) and the text alternative (‘alt text’) for the image. The dialog also contains a ‘Browse’ button to help with selecting a local image file.
• List
Makes the block element around the cursor or around the currently selected text into a list item in a bulleted list.
1. List
+ List
− List
Use this button to insert a table. The table will start out with two rows and two columns. Use the other buttons below to add or remove rows and columns.
TH
Class…

Slides panel

The slides panel contains a list of all slides and speaker notes in the current slide deck. The entries for slides are accompanied by a thumbnail image of the slide. Clicking on an entry in this list opens it in the editor.

The thumbnails may look slightly different from the full-size slide, because of limitations in the software library used to make them (html2canvas).

At the bottom of the list of slide are three buttons:

Add Slide
Adds a new slide after the current one.
Add Notes
Adds new speaker notes after the currently selected slide or speaker notes
Delete
Deletes the currently selected slide or speaker notes.

Slide number

Editing area

Element hierarchy / notifications

When the editor is in WYSIWYG mode, this area shows the hierarchy of elements around the cursor. E.g., if the cursor is in an <em> element inside a list item (<li>) of a bulleted list (<ul>), this shows ul > li > em. You can click on the element names to select the whole of that element in the editor.

When the editor is saving a slide deck (and possibly its images and style sheet), the area will instead show what the editor is doing, e.g.: ‘Writing https://example.org/slides/myslides.html’

Keyboard commands

Alt-Left / Option-Left, Alt-Right / Option-Right
Move cursor to the beginning or end of the word.
Ctrl-Left / Command-Left, Ctrl-Right / Command-Right
Move cursor to the beginning or end of the line.
Esc
Expand the selection to the surrounding element. Press Esc multiple times to each time expand the selection further. E.g., if the cursor is an <em> element inside a list item (<li>) inside a bulleted list (<ul>), pressing Esc once will select all text of the <em> element, pressing Esc again will expand the selection to the <li> element, and the third press of Esc will select the whole <ul>.
Command-B
Toggle the current selection between bold and not bold.
Command-+, Command-−, Command-0
Respectively, zoom in, zoom out and reset the zoom.
[…]
[…]
Ctrl-1 / Command-1, Ctrl-2 / Command-2, Ctrl-3 / Command-3, etc.
Turn each (partially) selected block element into a heading of the given level, i.e., <h1>, <h2>, <h3>, <h4>, <h5> or <h6>. Unless the element is already a heading of that level, in which case it will become a normal paragraph.
PageUp, PageDown
Go to the previous, respectively next slide or speaker notes.

Preparing style sheets for the b6+ slide editor

Different style sheet provide different layouts for slides and may also provide different slide transitions. The b6+ slide editor assumes that all style sheets provide layouts for cover slides (class=cover) and final slides (class=final), but in reality that may not the case. And style sheets may also provide several other kinds of slide layouts, such as part titles or slides that are half image and half text.

To learn what a style sheet supports, the editor looks for a file with the same name as the style sheet, but with the extension ‘.json’. If it exists and it is a JSON file, the editor looks for four properties: ‘documentation’, ‘supports-clear’, ‘layouts’ and ‘transitions’. Here is an example file:

{
  "documentation": "../manual.html",
  "supports-clear": true,
  "layouts": [
    { "name": "Normal slide",
      "class": "" },
    { "name": "Cover slide",
      "class": "cover" },
    { "name": "Part title",
      "class": ["part", "title"] },
    { "name": "Slide with left image",
      "class": "side" },
    { "name": "Final slide",
      "class": "final" }
  ],
  "transitions": [
    { "name": "Default",
      "class":"" },
    { "name": "Slide In",
      "class": "slide-in" },
    { "name": "Slide Out",
      "class": "slide-out" },
    { "name": "Move Left",
      "class": "move-left" }
  ]
}

The ‘documentation’ property is the URL of the user manual of the style sheet. It may be a relative URL, in which case it is takne as relative to the JSON file itself.

If the ‘documentation’ property is absent, it is assumed there is no manual.

The ‘supports-clear’ property can be true or false. It indicates whether the style sheet defines the class ‘clear’ on slides. The purpose of that class is to suppress the slide number and possibly some decorative elements on the slide.

If the ‘supports-clear’ property is absent, it is assumed to be true.

The ‘layouts’ property contains a list of the slide layouts defined by the style sheet. Each entry in the list has a name to put in the editor's menu, and a class to add to the slide's class attribute. The class need not be a single word. And if there are multiple ways to get the same layout, there may be an array of classes. The example above declares that the style sheet defines five layouts and that the class ‘title’ is an alias for ‘part’.

If the ‘layouts’ property is absent, the editor assumes the following:

[
  { "name": "Normal slide",
    "class": "" },
  { "name": "Cover slide",
    "class": "cover" },
  { "name": "Final slide",
    "class": "final" }
]

The ‘transitions’ property contains a list of slide transitions between a slide and the next one. Like for ‘layouts’, each entry has a name, which is used in the editor's menu, and a class to put in a slide's class attribute.

If the ‘transitions’ property is absent, the editor assumes the style sheets defines no slide transitions.

Bert Bos. Created 17 February 2026. Last modified $Date: 2026/03/24 03:07:23 $