Skip to main content

Jupyterlab extension to use custom logo for the jupyterlab main logo

Project description

jupyterlab_branding_extension

GitHub Actions npm version PyPI version Total PyPI downloads JupyterLab 4 Brought To You By KOLOMOLO Donate PayPal

JupyterLab branding extension that replaces the default main area logo, the startup splash logo, and displays a configurable system name in the top toolbar. Supports SVG (inline embedding) and raster logo formats via configurable URIs.

Features

  • Custom main area logo - replace the default JupyterLab 3-dot logo with any SVG or raster image
  • Custom startup splash logo - replace the Jupyter logo at the centre of the boot splash animation, with the orbiting moons preserved
  • System name in top toolbar - display a configurable text label (e.g. environment name) in the right side of the top toolbar, with optional custom hex color
  • Configurable via traitlets - set logo_uri, splash_logo_uri, system_name, and header_system_name_color in jupyter_lab_config.py
  • Local and remote logos - supports file:// paths, https:// URLs, and local filesystem paths
  • Inline SVG embedding - SVG logos are embedded directly in the DOM, matching JupyterLab's native approach
  • Server extension - serves local logo files through an authenticated HTTP endpoint, bypassing browser file:// restrictions

Requirements

  • JupyterLab >= 4.0.0
  • jupyter_server >= 2.0.0

Install

pip install jupyterlab_branding_extension

Configuration

Add to your jupyter_lab_config.py:

# Local file path
c.Branding.logo_uri = "/path/to/your/logo.svg"

# file:// URI
c.Branding.logo_uri = "file:///path/to/your/logo.svg"

# Remote URL
c.Branding.logo_uri = "https://example.com/logo.svg"

When no protocol is specified, the path is treated as a local filesystem path.

Splash logo

# Replace the Jupyter logo in the startup splash animation
c.Branding.splash_logo_uri = "/path/to/your/splash-logo.svg"

Accepts the same URI forms as logo_uri (local path, file://, or https://). The image is base64-encoded server-side and injected into PageConfig so the custom logo appears together with the orbiting moons on first paint - no network round-trip, no white flash. The orbits themselves are untouched. Leave splash_logo_uri empty to keep the default Jupyter splash.

System name

# Display "production" in the top-right of the header
c.Branding.system_name = "production"

# Optional: override text color with a hex value
c.Branding.header_system_name_color = "#ff8800"

The system name is rendered inside the existing JupyterLab header toolbar spacer (jp-Toolbar-spacer). When header_system_name_color is empty, the text uses the JupyterLab sidebar font color (--jp-ui-font-color2) and adapts to light/dark themes automatically. When set to a hex value, that color is applied as an inline style. Leave system_name empty to disable this feature.

System name appearance (Settings UI)

The colour and capitalization of the system name are controlled per-user through Settings → Settings Editor → Branding, which overrides the deployment-side header_system_name_color:

  • Capitalize system name - off by default; when on, renders the name in uppercase via CSS text-transform
  • System name colour mode - Auto uses the JupyterLab theme colour (--jp-ui-font-color2, matches the sidebar font); Custom uses the hex colour below
  • Custom hex colour - the hex value (e.g. #ff8800) applied when colour mode is Custom; when left blank it falls back to the deployment-side header_system_name_color

Settings changes apply live without a reload. The system_name text itself remains set by the deployment config (c.Branding.system_name).

How It Works

The extension has two components:

  • Server extension - exposes /jupyterlab-branding/config (returns the configured logo URL, splash logo URL, system name, and header color), /jupyterlab-branding/logo (serves the local main logo), and /jupyterlab-branding/splash-logo (serves the local splash logo). The splash file is also inlined into PageConfig as a base64 data URI so the custom splash logo paints with the first splash frame
  • Frontend plugin - applies the splash logo at module load (before activation) so the very first splash animation uses the custom logo, fetches configuration during activation, replaces the #jp-MainLogo element, and injects the system name span into the top toolbar spacer. SVG logos are embedded inline, raster images use <img> tags

Favicon

This extension does not override the browser favicon. For JupyterHub deployments, favicon branding is typically configured at the JupyterHub level - refer to your JupyterHub configuration for how the hub overrides favicon for individual user servers.

Uninstall

pip uninstall jupyterlab_branding_extension

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jupyterlab_branding_extension-1.0.34.tar.gz (306.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jupyterlab_branding_extension-1.0.34-py3-none-any.whl (25.9 kB view details)

Uploaded Python 3

File details

Details for the file jupyterlab_branding_extension-1.0.34.tar.gz.

File metadata

File hashes

Hashes for jupyterlab_branding_extension-1.0.34.tar.gz
Algorithm Hash digest
SHA256 d3703fa0bc692107a393a6ab9c86a834b0bb5eee295009f30ec6ceec4d56803d
MD5 ef29941db808c2c4406db314f3082e90
BLAKE2b-256 9cbc48248ce41ceff863758424690679d44e71a56429547a35e66b4b32573c12

See more details on using hashes here.

File details

Details for the file jupyterlab_branding_extension-1.0.34-py3-none-any.whl.

File metadata

File hashes

Hashes for jupyterlab_branding_extension-1.0.34-py3-none-any.whl
Algorithm Hash digest
SHA256 c62b893de380229bdd21a5e86b4c09b8c1f16a5da9a4c70e35b05868f70db57e
MD5 fbc3f3342b13676b05fc1abe357640fa
BLAKE2b-256 684bd45bb1f6887c6d65bf7357b01a5debfa6bcedd1c91dc70036d09a0cadead

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page