jupyterlab-deck
#
docs |
install |
extend |
demo |
ci |
---|---|---|---|---|
Lightweight presentations for JupyterLab
Installing#
pip install jupyterlab-deck
or
mamba install -c conda-forge jupyterlab-deck # or conda, if you must
See
CONTRIBUTING.md
for a development installation.
Uninstalling#
pip uninstall jupyterlab-deck
or
mamba remove jupyterlab-deck # or conda if you must
Usage#
Get started#
After installing, open or create a Notebook.
Other documents work but are not as much fun.
Deck Mode#
Start Deck Mode by
in the Notebook Toolbar, click
open the Command Palette and run Start Deck
In Deck Mode, until you configure any slide types, all of your content should appear in a vertically-scrollable stack.
Remote#
In Deck Mode, navigate with:
the onscreen remote
if available, up, down, left, right will be available
these correspond to the standard keyboard shortcuts,
→, ↓, ←, ↑
shift+enter executes and advances
the spacebar tries two directions:
space = ↓, or →
shift+space = ↑, or ←
Revealing JupyterLab UX Features#
Many of the core JupyterLab UI elements are still available, but hidden by default. Hover over their usual places to reveal them. These include:
the right and left sidebar
the Notebook Toolbar
Exiting Deck Mode#
To exit Deck Mode:
from the remote, click the
open the Command Palette and run Stop Deck
Slides#
Build a slideshow by changing the slideshow type per cell using the Property Inspector sidebar or the design tools.
type |
purpose |
---|---|
|
(default) stack underneath the previous cell |
|
start a new stack |
|
reveal when activated |
|
start a new cell stack in the optional Y axis |
|
hide the cell entirely |
|
TBD: moves this cell to the off-screen note viewer |
Layers#
Pick a layer type from:
or the [design tools].
Layers either temporarily or permanently show content, and won’t be reached by. Specifying a layer scope will override the slideshow type. Layers have one of the following scopes:
scope |
relationship to slides |
---|---|
|
show on all current and future |
|
show until the next |
|
show until the next |
|
only show until the next |
Design Tools#
In Deck mode, click the ellipsis icon in the bottom left corner
The design tools offer lightweight buttons to:
show/hide the slide layout overlay
set the slideshow type
set the layer type
change a few key appearance properties:
use the sliders to customize
z-index
controls the vertical stacking of elements:higher is “closer” to the user
opacity
controls how vibrant the fonts and colors appearhigher is more full
zoom
controls how big the contents of the cell appearhigher is bigger
un-check the checkbox to restore to the defaults
Slide Layout#
After opening the design tools, click the Show Layout button
In slide layout mode, each part of the slide receives an overlay.
Moving a part manually will remove it from the default layout, and allow you to place it anywhere on the screen, but it will keep the same navigation index.
The keyboard shortcuts and remote should still function as normal.
Moving Parts#
Click and drag a part overlay to move the part underneath.
Resizing Parts#
Click one of the handles in the corners of the part overlay to resize a part.
Reverting Part Move/Resize#
After moving a part to a fixed position, click the ↺ button on a part overlay to restore the part to the default layout.
Configuration#
Enabling Deck Mode at startup#
see the JupyterLab docs about settings
overrides.json
.
{
"@deathbeds/jupyterlab-deck:plugin": {
"active": true
}
}
Frequently Asked Questions#
Does it work with notebook 6
aka classic?#
No. Use RISE.
Does it work with notebook 7
?#
Mostly. Navigating multiple documents during the same presentation will probably never work, as this is incompatible with the one-document-at-a-time design constraint of the Notebook UX. Each skip to another document will open a new browser tab, though deck should be installed.
Will it generate PowerPoint?#
No. This would be a fine third-party extension which could consume notebook metadata
created by this extension, jupyterlab-fonts, and nbconvert
-compatible
slides.
Will it generate single-document static HTML presentations?#
No. Use nbconvert
, but no layers or style customization
will work.
For a full static viewing experience, try something like JupyterLite.
Will it generate PDF?#
Not yet.
Changelog#
0.2.0
#
0.2.0a1
#
#56 addresses style and behavior differences on Notebook 7 and JupyterLab 4
0.2.0a0
#
#36 adds support for Jupyter Notebook 7 and JupyterLab 4
0.1.3
#
0.1.2
#
#17 adds foreground and background layers with customized per-cell styling
0.1.1
#
Enhancements#
improve keyboard navigation with (shift)space
the active cell is scrolled into view when exiting presentation mode
Bug Fixes#
fix some packaging metadata and documentation issues
fix handling of
null
cells
0.1.0
#
initial release
Contributing#
Setup#
Start with Mambaforge
mamba env update --prefix .venv --file .binder/environment.yml
source activate ./.venv
doit
#
The various build tasks are managed by doit
. To get up to a
ready-to-play JupyterLab:
doit serve:lab
See other available tasks with:
doit list
Legacy#
Support for JupyterLab 3 is verified with the legacy
subtasks.
Run all legacy tasks:
doit legacy
Run an isolated JupyterLab 3 application:
doit serve:lab:legacy
Releasing#
Start a release issue
Follow the checklist
Open Source#
BSD 3-Clause License
Copyright (c) 2022, jupyterlab-deck contributors
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.