Skip to main content

About

A Jupyter notebook client for your terminal. It aims to emulate the functionality of the classic Jupyter notebook. Built on the excellent textual framework with image support from textual-image.

Demo

demo

Getting started

The easiest way to get started is with uv. To try without installing

uvx --from netbook jupyter-netbook [my_notebook.ipynb]

To install in the current virtual environment

uv pip install netbook

Or install it as a standalone tool

uv tool install netbook

Run it as follows

jupyter-netbook [my_notebook.ipynb]

Terminal Support

Terminal Status Image Support Shift/Ctrl+Enter Support Notes
Kitty ✅ ✅ TGP ✅ Out of the box Remap some keybindings
Foot ✅ ✅ Sixel ✅ Out of the box Sixel support is flaky
Contour ✅ ✅ Sixel ✅ Out of the box
ITerm2 ✅ ✅ Sixel, TGP ✅ Out of the box ITerm2 image protocal would probably be supported in the future
Wezterm ✅ ✅ TGP ✅ Requires remapping
Windows Terminal ✅ ✅ Sixel ✅ Requires remapping Things kind of work, sometimes...
Ghosty ✅ ✅ TGP ✅ Out of the box
Tmux ✅ ✅ Sixel, TGP ✅ Requires configuration See the FAQ on configuration
Alacritty 🤷 ❌ ✅ Requires remapping It is quite unlikely that alacritty will support images
Zellij ❌ ❌ ✅ Out of the box In theory zellij support sixels, but I couldn't make it work

Frequently asked questions

Q: Why are icons in the toolbar all jumbled up?

A: You need to have Font Awesome installed. Or you can download nerd fonts that already have the glyphs patched in.

Q: How can I start other kernels?

A: You can use --kernel argument. It accepts kernel names shown by jupyter-kernelspec list.

Q: How to see available keybindings?

A: Press 'h' in command mode (i.e. when focus is not in a text area). The keybindings are mostly compatible with the classic Jupyter notebook.

Q: How to remap the keys in my terminal?

A: Here are snippets for a selection of terminal emulators:

  • Kitty. Add the following to ~/.config/kitty/kitty.conf

    # Send ctrl+shift+minus to netbook
    map --when-focus-on title:netbook kitty_mod+minus
    
  • Wezterm. Add the following to ~/.config/wezterm/wezterm.lua

    local wezterm = require 'wezterm';
    
    return {
      -- ...
    
      keys = {
        {key="Enter", mods="CTRL", action=wezterm.action{SendString="\x1b[13;5u"}},
        {key="Enter", mods="SHIFT", action=wezterm.action{SendString="\x1b[13;2u"}},
        {key="Enter", mods="ALT", action=wezterm.action{SendString="\x1b[13;3u"}},
      },
    }
    
  • Windows Terminal. Add the following to settings.json file

    {
      // ...
    
      "keybindings":
      [
        { "command": { "action": "sendInput", "input": "\u001b[13;5u" }, "keys": "ctrl+enter" },
        { "command": { "action": "sendInput", "input": "\u001b[13;2u" }, "keys": "shift+enter" },
        { "command": { "action": "sendInput", "input": "\u001b[13;3u" }, "keys": "alt+enter" }
      ]
    }
    

Euporie, a related project, also has some examples,

Q: Images are not showing up.

A: Make sure your terminal has support for sixels or terminal graphics protocol. By default netbook autodetects support. If this fails, you can force the protocol using the --graphics option.

Q: How to configure tmux?

A: Here are some options to make the experience with tmux better.

Enable extended keys such as ctrl+enter and shift+enter:

set -g extended-keys always
set -g extended-keys-format csi-u
set -as terminal-features 'xterm*:extkeys'

Enable mouse interaction:

set -g mouse on

Make sure COLORTERM environment variable is properly set. This can be achieved e.g. via:

set -g update-environment -r

If your terminal supports Terminal Graphic Protocol (aka kitty protocol), then you can use --graphic tmux-kitty option in netbook to use the passthrough feature of tmux. As of this writing this works in Kitty, ITerm2 and Ghostty. In order to enable passthrough in tmux, add this to the config:

set -g allow-passthrough on

Development

To get set up just run

uv sync
uv run jupyter-netbook

Metadata

Release files for netbook 0.6.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for netbook 0.6.3
File Size Uploaded
netbook-0.6.3.tar.gz 2.7 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for netbook 0.6.3
File Interpreter ABI Platform
netbook-0.6.3-py3-none-any.whl Python 3 none any Details

Total release size: 2.7 MB

Release files / netbook-0.6.3.tar.gz

Download URL netbook-0.6.3.tar.gz
Size 2.7 MB
Tags Source
SHA-256 checksum
How to use checksums
96774d868a767ba6b4818e82285d15213ee601645bb84c3c6fa6c8cc7c75608d
BLAKE2b-256 checksum
How to use checksums
1f1c43b5fab7508602ab55862f4f8cb5cace08f92247ba5c99af773e542ba69e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 3, 2026.

Transparency log

Release files / netbook-0.6.3-py3-none-any.whl

Download URL netbook-0.6.3-py3-none-any.whl
Size 26.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
53ea2daacb71d39ddf47f352daddbe3966ed01c42a81b4ff912f8561148f4779
BLAKE2b-256 checksum
How to use checksums
db0273f2baf239189692e2662afa15bc506ec8a21b9895f6b0c3310625f99150
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 3, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.6.3 This release

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page