Skip to main content

Jupyter notebook for terminal

Project description

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

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

netbook-0.6.0.tar.gz (2.7 MB view details)

Uploaded Source

Built Distribution

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

netbook-0.6.0-py3-none-any.whl (26.0 kB view details)

Uploaded Python 3

File details

Details for the file netbook-0.6.0.tar.gz.

File metadata

  • Download URL: netbook-0.6.0.tar.gz
  • Upload date:
  • Size: 2.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for netbook-0.6.0.tar.gz
Algorithm Hash digest
SHA256 03d7acb2489000e8d9921ec395ae43f52b83d60393631f5ceb17b01e7aaa7c87
MD5 15d4cfdb3f6cf2d20fca476e33437311
BLAKE2b-256 71b31f547e75a4d20de8ad5614dd66535d8fc09d52812316e61d9e115066b7fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for netbook-0.6.0.tar.gz:

Publisher: python-publish.yml on lyovushka/netbook

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file netbook-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: netbook-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 26.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for netbook-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 706b044bc77d03b6db0e5c7c0d7be2e0eeef1a7ba3e928ddf3afc6f1f41d484c
MD5 2d8ffd1a34d23f450c0f52b6c55b62a7
BLAKE2b-256 d4ede5a52be69f5f2fbf0de82e289661e6a59a68abf32ba4eb83bdd90bcc353f

See more details on using hashes here.

Provenance

The following attestation bundles were made for netbook-0.6.0-py3-none-any.whl:

Publisher: python-publish.yml on lyovushka/netbook

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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