Problem : Unable to delete a empty folder from file manager pane.
Want: In file pane, right clik on folder, select delete, read prompt, click ok, then recursivley delete.
Main Cause: Students cloning git repositories creates hidden files and nested folders
Workaround: Opening a terminal or using cell magic rm -rf <path>
Reson unsuitible (to me):
a. Unexpected bahaviour based on modern file managers and IDE behaviours
b. Expose CLI tools (rm -rf) and concepts (hidden files) to students (important to understand, but not at the moment)
Issue seems to be fixed/configurable in JupyterHub 2, but TLJH use version 1.5. Based on research (links below), solutions include.
- set: c.FileContentsManager.delete_to_trash = True
- c.Spawner.environment = {
‘JUPYTERHUB_SINGLEUSER_APP’: “jupyter_server.serverapp.ServerApp”
}
Solutions proposed (see links below) do not seem to be working for me. I have tried various combinations of both options varible, setting options using tljh_config, or creating a local config file: /opt/tljh/config/jupyterhub_config.d/local_settings.py. Also tried the CLI option suggested, but could not get jupyter.service to restart.
Any ideas on what I may be doing wrong? Can anyone suggest a solution?
Similar/Same:
JupyterHub Not allowing to delete non empty directory
Make it possible to delete a nonempty folders #835
Allow deleting non-empty directory when c.FileContentsManager.delete_to_trash = False #4916Jupyterhub-singleuser and jupyter_server
delete folder recursively in file explorer #9644
System Details:
-
TLJH on Ubuntu 18.04
-
jupyterhub --verison
1.5.0
jupyter --version
jupyter_client : 7.0.6
jupyter_core : 4.11.1
jupyter_server : 1.15.6
jupyterlab : 3.3.4
jupyter labextension list
JupyterLab v3.4.4
/usr/local/share/jupyter/labextensions
jupyterlab-drawio v0.9.0 enabled OK (python, jupyterlab-drawio)
jupyterlab_pygments v0.2.2 enabled OK (python, jupyterlab_pygments)
nbdime-jupyterlab v2.1.1 enabled OK
@jupyter-server/resource-usage v0.6.1 enabled OK (python, jupyter-resource-usage)
@jupyterlab/git v0.38.0 enabled OK (python, jupyterlab-git)
@pyviz/jupyterlab_pyviz v2.2.0 enabled OK (python, pyviz_comms)
@jupyter-widgets/jupyterlab-manager v3.1.1 enabled OK (python, jupyterlab_widgets)
@bokeh/jupyter_bokeh v3.0.4 enabled OK (python, jupyter_bokeh)
Other labextensions (built into JupyterLab)
app dir: /usr/local/share/jupyter/lab
@g2nb/jupyterlab-theme v0.3.1 enabled OK
@okuzen/jupyterlab-atom-one-light v0.1.0 enabled OK
@shahinrostami/theme-purple-please v3.0.1 enabled OK
@yeebc/jupyterlab_neon_theme v3.1.0 enabled OK
jupyterlab-openbayes-theme v1.0.6 enabled OK
jupyterlab-spreadsheet v0.4.1 enabled OK
jupyterlab-tailwind-theme v3.0.3 enabled OK
jupyterlab-theme-solarized-dark v2.1.0 enabled OK
jupyterlab-theme-toggle v0.6.1 enabled OK
Disabled extensions:
@jupyterlab/application-extension:logo
-
tljh-config show
(reducted)
users:
admin:
- some-user-name
https:
enabled: true
letsencrypt:
email: user@example.com
domains:
- example.com
auth:
GitHubOAuthenticator:
client_id: xxxxxxxxxxxxxxxxxxxxx
client_secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
oauth_callback_url: https://example.com/hub/oauth_callback
type: oauthenticator.github.GitHubOAuthenticator
user_environment:
default_app: jupyterlab
limits:
memory: 4G
cpu: 2
services:
configurator:
enabled: true
cat /opt/tljh/config/jupyterhub_config.d/local_settings.py
c.ResourceUseDisplay.track_cpu_percent = True
c.Spawner.environment = {
'JUPYTERHUB_SINGLEUSER_APP': "jupyter_server.serverapp.ServerApp"
}
c.FileContentsManager.delete_to_trash = True