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
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.lualocal 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.jsonfile{ // ... "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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file netbook-0.6.3.tar.gz.
File metadata
- Download URL: netbook-0.6.3.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
96774d868a767ba6b4818e82285d15213ee601645bb84c3c6fa6c8cc7c75608d
|
|
| MD5 |
6666733fd9c3f1e1ea0482bbd6afc42e
|
|
| BLAKE2b-256 |
1f1c43b5fab7508602ab55862f4f8cb5cace08f92247ba5c99af773e542ba69e
|
Provenance
The following attestation bundles were made for netbook-0.6.3.tar.gz:
Publisher:
python-publish.yml on lyovushka/netbook
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
netbook-0.6.3.tar.gz -
Subject digest:
96774d868a767ba6b4818e82285d15213ee601645bb84c3c6fa6c8cc7c75608d - Sigstore transparency entry: 788879141
- Sigstore integration time:
-
Permalink:
lyovushka/netbook@5ef66a30108e2b34743aa62f53d13a6cc49c219f -
Branch / Tag:
refs/tags/0.6.3 - Owner: https://github.com/lyovushka
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@5ef66a30108e2b34743aa62f53d13a6cc49c219f -
Trigger Event:
release
-
Statement type:
File details
Details for the file netbook-0.6.3-py3-none-any.whl.
File metadata
- Download URL: netbook-0.6.3-py3-none-any.whl
- Upload date:
- Size: 26.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
53ea2daacb71d39ddf47f352daddbe3966ed01c42a81b4ff912f8561148f4779
|
|
| MD5 |
fe98d72b0e40f33f27b2c30a2699d667
|
|
| BLAKE2b-256 |
db0273f2baf239189692e2662afa15bc506ec8a21b9895f6b0c3310625f99150
|
Provenance
The following attestation bundles were made for netbook-0.6.3-py3-none-any.whl:
Publisher:
python-publish.yml on lyovushka/netbook
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
netbook-0.6.3-py3-none-any.whl -
Subject digest:
53ea2daacb71d39ddf47f352daddbe3966ed01c42a81b4ff912f8561148f4779 - Sigstore transparency entry: 788879145
- Sigstore integration time:
-
Permalink:
lyovushka/netbook@5ef66a30108e2b34743aa62f53d13a6cc49c219f -
Branch / Tag:
refs/tags/0.6.3 - Owner: https://github.com/lyovushka
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@5ef66a30108e2b34743aa62f53d13a6cc49c219f -
Trigger Event:
release
-
Statement type: