jwkvam / jupyterlab-vim

:neckbeard: Vim notebook cell bindings for JupyterLab
MIT License
975 stars 73 forks source link

single-user solution for jupyterhub? #42

Open dylancsumner opened 6 years ago

dylancsumner commented 6 years ago

I really want to use this plugin, but I work in a DS team which uses jupyterhub, and sadly my colleagues are not fans of vim. When I install jupyterlab-vim it seems to take effect for all users, and there is no way to toggle it on/off, so unfortunately I have to uninstall it. Am I missing something obvious or is there no workaround for this at the moment?

ah- commented 6 years ago

+1, I'm interested as well. I've seen previous tickets about this but I haven't seen an easy solution yet.

Main issue being that enabling the extension involves rebuilding all the js frontend bits?

jwkvam commented 6 years ago

@dylancsumner I don't think you are missing anything. I don't know how to accomplish that and I don't use Jupyterhub myself :/ . Like @ah- mentioned, it seems other people share your pain point though.

I haven't followed https://github.com/jupyterlab/jupyterlab/issues/4064 closely but if that gets resolved would that satisfy your need?

Perhaps a naive thought: Jupyterhub has some sort of login right? Is it possible for jupyterhub to maintain a list of extensions enabled for each user?

slavoutich commented 6 years ago

As far as I know, Jupyterhub just launches a server for each user, and there is a configuration option in Jupyterlab to enable/disable user-specific configuration. Don't know about Jupyterlab (yet), but jupyter-vim-bindings for legacy notebook work like a charm, installed per-user.

spott commented 6 years ago

Would it be possible to add a menu item that toggled the vim keybindings? That would allow installing it for all users, but it would able to be turned off. Ideally, there would be a way to make the default setting be to have vim mode off (and then individual users could turn it on as wanted), however, that is less important.

jupyterlab/jupyterlab#4064 Doesn't look like it is moving very quickly, so I'm not sure that is a feasible solution in the short term.

ah- commented 6 years ago

Yes, that sounds like a decent idea. Ideally with some config that makes it permanent.

joshbode commented 6 years ago

My hack solution:

Install the extension, disable it for all users and then in my own startup directory place the file ~/.ipython/profile_default/startup/00-defaults.py:

import subprocess
subprocess.call(['jupyter', 'labextension', 'enable', 'jupyterlab_vim'])
del subprocess

I have to refresh the browser once after logging in to make this work, which is annoying, but OK (there's probably a better place to put this).