• Stars
    star
    75
  • Rank 410,508 (Top 9 %)
  • Language
    Python
  • License
    BSD 3-Clause "New...
  • Created over 5 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Quickly open a file in JupyterLab by typing part of its name

jupyterlab-quickopen

Binder

Quickly open a file in JupyterLab by typing part of its name

Animation showing entering partial filenames in the quick open sidebar and the corresponding file editor opening

Compatibility

  • Python >=3.7.x
  • JupyterLab >=3.2,<4.0
  • Jupyter Server >=1.6,<2.0
  • Configurations where notebook documents and other files reside on a filesystem local to the Jupyter Server (which is the the default), not remote storage (e.g., S3)

Install

Starting in version 1.0 of this extension, the frontend portion of this extension is pre-compiled and included in the pip installed package thanks to changes in the JupyterLab 3.0 packaging system.

To install the Jupyter Notebook server extension under PREFIX (e.g., the active virtualenv or conda env), run the following:

pip install jupyterlab-quickopen

Configure

A Keyboard Shortcut

You can assign a keyboard shortcut to show the quickopen panel at any time. Open the keyboard editor by clicking Settings → Advanced Settings Editor → Keyboard Shortcuts. Then enter JSON in the User Overrides text area like the following, adjusting the keys value to assign the shortcut of your choosing:

{
  "shortcuts": [
    {
      "command": "quickopen:activate",
      "keys": ["Accel Ctrl P"],
      "selector": "body",
      "title": "Activate Quick Open",
      "category": "Main Area"
    }
  ]
}

Patterns to Exclude

You can control which files to exclude from the quick open list using Notebook server settings, JupyterLab settings, or both.

On the server side, use the ContentsManager.allow_hidden and/or ContentsManager.hide_globs settings. See the documentation about Jupyter Notebook options for details.

In the JupyterLab web app, open the Settings menu, click the Advanced Settings Editor option, select the Quick Open item in the Raw View sidebar, and enter JSON in the User Overrides text area to override the default values.

Screenshot of the quick open settings editor

Develop

The project includes a Makefile to aid setting up a development environment using python3, venv, and pip. You must also install the latest Node LTS release as a prerequisite.

# Create a dev environment
make venv

# Activate the dev environment
`make shell`

# In one terminal, watch the frontend source for changes and rebuild the extension
make watch

# In a second terminal, run JupyterLab.
`make shell`
make lab

Keep an eye on the terminal running make watch for TypeScript build errors. Quit and re-run the make lab command any time you make changes to the server extension.

Release

Make a commit with version number bumps in package.json. Then do the following.

# Tag the release commit
git tag -a -m "0.4.0" 0.4.0

# Activate the dev environment
`make shell`

# Build, sign, and push release to test.pypi.org
make release

# Build, sign and push releases to pypi.org
make release PYPI_URI=pypi

FAQ

Does this belong in JupyterLab?

Maybe. To start, I wanted to do some hacking and it's easiest to do that in a small, independent repo. Putting this feature into JupyterLab-proper requires making the server-side portion work with ContentManagers that are not based on the local filesystem. That change might require a new ContentManager API since walking the file hierarchy via HTTP calls is pretty heavyweight. Python/TypeScript tests are also required.

Will this extension work with JupyterLab 2.x?

Not since [version 0.5.0(https://github.com/parente/jupyterlab-quickopen/tree/0.5.0).

More Repositories

1

espeakbox

Text-to-speech server in a small (17.2 MB) Docker image
Go
126
star
2

nbestimate

Estimate of Public Jupyter Notebooks on GitHub
Jupyter Notebook
82
star
3

cookiecutter-flask-react

Cookiecutter for a Flask+React project
Python
24
star
4

dockerfiles

Dockerfiles for things I use personally
Shell
24
star
5

tott

Tools of the Trade website
Shell
17
star
6

z2jh-aws

🥞 Zero-to-JupyterHub with Kubernetes using an opinionated tech stack
Makefile
12
star
7

mostly-tmpnb

Temporary notebook servers, persistent Docker volumes
Python
10
star
8

obsidian-overdue

Obsidian plugin that marks items as [[Overdue]] if they are not checked off by their due date
TypeScript
8
star
9

handlerbag

Bag of dynamic handlers on top of Tornado
Python
6
star
10

homelab

My setup for a homelab kubernetes environment
Smarty
5
star
11

supybot-plugins

Some supybot plugins
Python
4
star
12

how-i-git

Git repository used for a live tutorial at UNC
JavaScript
4
star
13

clique

Perceptually based, task oriented auditory display for GUI applications
Python
4
star
14

marked-html

Render markdown to a complete html document.
JavaScript
3
star
15

blog

Blog source for mindtrove.info
Jupyter Notebook
3
star
16

kiss

Keep it simple scripting
Python
2
star
17

spaceship

A JavaScript game for kids using Creative Commons licensed music, sound, speech, and graphics, and the Dojo toolkit.
JavaScript
2
star
18

bbb

Buildbot button extension for Google Chrome
JavaScript
2
star
19

wnerd

Wrestling Nerd: Point-and-click wrestling tournament management.
Python
1
star
20

wcpe

WCPE Chrome Extension
JavaScript
1
star
21

labview-webcam

Ancient LabVIEW webcam library
C
1
star
22

nbviewer-provider

🗑☣️ Demo of a simple custom nbviewer provider
Python
1
star
23

dojo-a11y-rating

Sample code for an accessible, internationalized Dojo rating widget
JavaScript
1
star
24

docker-stacker

Build your own jupyter/docker-stacks definition
JavaScript
1
star
25

helloworld-transifex-rtd

Translation CI/CD workflow involving Sphinx, Transifex, GitHub Actions, and ReadTheDocs
1
star
26

sightwords

Simple browser-based HTML5 sightword, reading, and typing tutor for my daughter's Raspberry Pi.
CSS
1
star