Skip to content

interface for switching between jupyter apps #1414

Open
@oliver-sanders

Description

@oliver-sanders

Note

By "apps" I mean standalone web applications e.g. Jupyter Lab and NbClassic. Things that have their own root endpoint e.g. /lab. I am not talking about:

  • lab/notebook extensions that fit into existing apps.
  • Jupyter Server extensions that do not directly provide a standalone app of their own.
  • Jupyter Server extension applications (applications meaning traitlets applications).

Hi 👋,

Jupyter Server extensions can use the framework and services provided by Jupyter Server to create apps and services.

You can have multiple extensions providing multiple apps on the same server simultaneously, with each app sitting behind its own root endpoint (e.g. /lab).

When you start Jupyter Server e.g. via the command line or Jupyter Hub, your web browser will open to the root URL of a particular app (e.g. <jupyter-server-root-url>/lab). Which app you get is determined by the command used to launch the server and the Jupyter configuration.

Problem

If you are using Jupyter Server to serve a single app, it's straight forward to access the app, launch the server and you're there.

If you are using Jupyter Server to serve multiple apps, then to switch between them, you must edit the URL e.g. by changing /lab/.* with /myextension. This is a bit cumbersome:

  • How does the user know what apps are available?
  • How does the user know what to change the URL to?

Proposed Solution

It would be great if there was a standardish UI feature (e.g. a menu bar), implemented in extension apps that listed available apps and allowed you to switch app (i.e. change the URL) or open another app in a new browser tab.

This would require:

  1. A Jupter Server API for listing apps (note apps not extensions) with their root endpoints.
  2. Extension applications to implement the interface for switching apps using this interface.
  3. Depending how difficult it is to differentiate between an extension that adds services and one that provides apps automatically, this might require extensions to explicitly declare any apps they provide.

Additional context

Does this make sense to you? Are their any existing APIs that might help? Is there a better way to go about this?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions