RetroLab — A JupyterLab distribution with a retro look and feel

Jeremy Tuloup
Jupyter Blog
Published in
5 min readMay 27, 2021

--

RetroLab is an alternative JupyterLab distribution, built from the ground-up, providing a notebook interface with a retro look and feel.

RetroLab in action

Motivation

Currently at version 3.0, JupyterLab provides an advanced computational environment that can be compared to traditional IDEs and text editors like VS Code and PyCharm.

However in some cases, having a leaner, simpler, and more focused interface to work on a notebook is really useful. For example when presenting an analysis to colleagues over a video call. Or teaching a topic and make sure the audience focuses on the content of the notebook.

The goal of the RetroLab project is to offer an interface with a retro look and feel, similar to the Classic Notebook, while leveraging the efforts put in the development of JupyterLab itself and its extension system.

Technically speaking RetroLab remixes many of the existing plugins for JupyterLab (notebook, toolbar, terminals) and reassembles them in a different way. It also supports prebuilt third-party extensions using the new distribution system added in JupyterLab 3.0. That way, many extensions built for JupyterLab will also be compatible with RetroLab.

JupyterLab itself is also built as a set of extensions and plugins. The JupyterLab extension system makes it very convenient to create new distributions from a subset of plugins.

Let’s have a look at some of features available in RetroLab.

Notebooks, Files and Terminal

RetroLab supports Notebooks, Files and Terminals.

Notebooks can be created using the File Browser, the menu items and the command palette.

Working in a notebook with RetroLab

The File Browser provides convenient buttons to quickly create new notebooks, files and terminals.

Creating a new Terminal

Long time users of the Classic Notebook will already have noticed that activities are opened in new browser tabs by default. This provides an alternative way to manage workflows. Users who prefer to manage everything within a single browser tab might want to stick to the JupyterLab default interface.

Open in a new Browser Tab by default

Zen Mode

RetroLab also offers a zen mode to quickly switch to full screen and hide the top area. Very useful to focus on a single notebook, and also during presentations or screen sharing sessions!

Zen Mode

Support for existing JupyterLab prebuilt extensions

One of the main features in JupyterLab 3.0 is the new extension distribution system, which makes it possible to distribute extensions as prebuilt extensions. Prebuilt extensions do not require users to rebuild JupyterLab or have Node.js installed.

Since prebuilt extensions are loaded dynamically, they can also be leveraged in RetroLab without any extra step!

Installing a new JupyterLab extension and using it in RetroLab

Note to developers: most of the time your extension will be compatible with RetroLab without changing anything. However it is good practice to think about the different types of JupyterLab distributions when developing the extension. For example some services and shell areas are not available in RetroLab: no left, right and bottom area, the main area supports adding only one widget…

Command Palette

RetroLab includes a command palette, just like in JupyterLab.

Hit Ctrl-Shift-C or Accel-Shift-C to activate it. Or via the menu with View > Activate Command Palette.

Using the command palette to restart the kernel

Themes

RetroLab also supports Dark Mode! 🕶️

In fact, it supports any other themes distributed as prebuilt extensions for JupyterLab 3.0.

Switching between the light and dark built-in themes

For an even more retro look, you might want to start retrolab with the --retro-logo flag:

jupyter retro --retro-logo
The RetroLab logo with the JupyterLab Miami Nights Theme

Compact View on Mobile Devices

RetroLab automatically switches to a more compact layout on mobile devices, making it convenient to run code on the go.

Compact layout by default on mobile devices

Next-gen JupyterLab features

Since RetroLab reuses many components from JupyterLab as-is, it automatically inherits many of the improvements and cool new features being developed upstream.

With the latest prerelease for RetroLab, folks can collaborate using RetroLab, JupyterLab or even JupyterLab in Simple Mode.

Real Time Collaboration with RetroLab and JupyterLab

Installation

To install RetroLab with pip:

pip install retrolab

With mamba:

mamba install -c conda-forge retrolab

With conda:

conda install -c conda-forge retrolab

To try the prerelease with support for real time collaboration:

pip install --pre retrolab

Development is happening is the following repository: https://github.com/jupyterlab/retrolab

Feedback, issues and pull requests are welcome!

Try it out on Binder

It is also possible to try RetroLab on Binder using the following link:

Next Steps

With RetroLab, we hope to inspire the development of distributions and applications built using JupyterLab components.

A couple of other initiatives have already started:

There are also plans to create a cookiecutter that can serve as a template to quickly bootstrap new lab-based projects from scratch.

Prior Art

This project is mostly a reboot of the two previous attempts at making something similar:

These projects really expressed the need for a stripped down, minimal version of the Jupyter Notebook UI, and were a huge source of inspiration for RetroLab. Many thanks to the contributors!

About the author

Jeremy Tuloup is a Scientific Software Developer at QuantStack and a Jupyter Distinguished Contributor. Maintainer and contributor of JupyterLab, Voilà, and many projects within the Jupyter ecosystem.

--

--

Scientific Software Engineer at QuantStack, Jupyter Core Developer and Distinguished Contributor.