mirror of
https://github.com/jupyterhub/the-littlest-jupyterhub.git
synced 2025-12-18 21:54:05 +08:00
Merge pull request #775 from raybellwaves/patch-4
Launch into `/lab` by default by changing TLJH config's default value
This commit is contained in:
26
docs/conf.py
26
docs/conf.py
@@ -74,6 +74,32 @@ myst_enable_extensions = [
|
|||||||
"fieldlist",
|
"fieldlist",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
# -- Options for intersphinx extension ---------------------------------------
|
||||||
|
# ref: https://www.sphinx-doc.org/en/master/usage/extensions/intersphinx.html#configuration
|
||||||
|
#
|
||||||
|
# The extension makes us able to link like to other projects like below.
|
||||||
|
#
|
||||||
|
# rST - :external:py:class:`jupyterhub.spawner.Spawner`
|
||||||
|
# MyST - {external:py:class}`jupyterhub.spawner.Spawner`
|
||||||
|
#
|
||||||
|
# rST - :external:py:attribute:`jupyterhub.spawner.Spawner.default_url`
|
||||||
|
# MyST - {external:py:attribute}`jupyterhub.spawner.Spawner.default_url`
|
||||||
|
#
|
||||||
|
# To see what we can link to, do the following where "objects.inv" is appended
|
||||||
|
# to the sphinx based website:
|
||||||
|
#
|
||||||
|
# python -m sphinx.ext.intersphinx https://jupyterhub.readthedocs.io/en/stable/objects.inv
|
||||||
|
#
|
||||||
|
intersphinx_mapping = {
|
||||||
|
"jupyterhub": ("https://jupyterhub.readthedocs.io/en/stable/", None),
|
||||||
|
}
|
||||||
|
|
||||||
|
# intersphinx_disabled_reftypes set based on recommendation in
|
||||||
|
# https://docs.readthedocs.io/en/stable/guides/intersphinx.html#using-intersphinx
|
||||||
|
intersphinx_disabled_reftypes = ["*"]
|
||||||
|
|
||||||
|
|
||||||
# -- Options for linkcheck builder -------------------------------------------
|
# -- Options for linkcheck builder -------------------------------------------
|
||||||
# ref: https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-the-linkcheck-builder
|
# ref: https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-the-linkcheck-builder
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -1,49 +1,47 @@
|
|||||||
(howto/user-env/notebook-interfaces)=
|
(howto/user-env/notebook-interfaces)=
|
||||||
|
|
||||||
# Change default User Interface
|
# Change default user interface
|
||||||
|
|
||||||
By default, logging into TLJH puts you in the classic Jupyter Notebook
|
By default a user starting a server will see the JupyterLab interface. This can
|
||||||
interface we all know and love. However, there are at least two other
|
be changed with TLJH config `user_environment.default_app` or with the
|
||||||
popular notebook interfaces you can use:
|
JupyterHub config
|
||||||
|
{external:py:attribute}`jupyterhub.spawner.Spawner.default_url` directly.
|
||||||
|
|
||||||
1. [JupyterLab](http://jupyterlab.readthedocs.io/en/stable/)
|
The TLJH config supports the options `jupyterlab` and `classic`, which
|
||||||
2. [nteract](https://nteract.io/)
|
translates to a `Spawner.default_url` config of `/lab` and `/tree`.
|
||||||
|
|
||||||
Both these interfaces are also shipped with TLJH by default. You can try
|
Both these interfaces are also shipped with TLJH by default. You can try them
|
||||||
them temporarily, or set them to be the default interface whenever you
|
temporarily, or set them to be the default interface whenever you login.
|
||||||
login.
|
|
||||||
|
|
||||||
## Trying an alternate interface temporarily
|
## Trying an alternate interface temporarily
|
||||||
|
|
||||||
When you log in & start your server, by default the URL in your browser
|
When you log in and start your server, by default the URL in your browser will
|
||||||
will be something like `/user/<username>/tree`. The `/tree` is what
|
be something like `/user/<username>/lab`. The `/lab` is what tells the jupyter
|
||||||
tells the notebook server to give you the classic notebook interface.
|
server to give you the JupyterLab user interface.
|
||||||
|
|
||||||
- **For the JupyterLab interface**: change `/tree` to `/lab`.
|
As an example, you can update the URL to not end with `/lab`, but instead end
|
||||||
- **For the nteract interface**: change `/tree` to `/nteract`
|
with `/tree` to temporarily switch to the classic interface.
|
||||||
|
|
||||||
You can play around with them and see what fits your use cases best.
|
## Changing the default user interface using TLJH config
|
||||||
|
|
||||||
## Changing the default user interface
|
You can change the default url, and therefore the interface users get when they
|
||||||
|
log in by modifying TLJH config as an admin user.
|
||||||
|
|
||||||
You can change the default interface users get when they log in by
|
1. To launch the classic notebook interface when users log in, run the
|
||||||
modifying `config.yaml` as an admin user.
|
following in the admin console:
|
||||||
|
|
||||||
1. To launch **JupyterLab** when users log in, run the following in an
|
```bash
|
||||||
admin console:
|
sudo tljh-config set user_environment.default_app classic
|
||||||
|
```
|
||||||
|
|
||||||
|
1. To launch JupyterLab when users log in, run the following in an admin
|
||||||
|
console:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo tljh-config set user_environment.default_app jupyterlab
|
sudo tljh-config set user_environment.default_app jupyterlab
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Alternatively, to launch **nteract** when users log in, run the
|
1. Apply the changes by restarting JupyterHub. This should not disrupt
|
||||||
following in the admin console:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo tljh-config set user_environment.default_app nteract
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Apply the changes by restarting JupyterHub. This should not disrupt
|
|
||||||
current users.
|
current users.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -1,5 +1,10 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## Unreleased
|
||||||
|
|
||||||
|
- The default user interface changed to JupyterLab, to restore previous behavior
|
||||||
|
see the documentation about [User interfaces](#howto/user-env/notebook-interfaces).
|
||||||
|
|
||||||
## 1.0
|
## 1.0
|
||||||
|
|
||||||
### 1.0.0b1 - 2023-07-07
|
### 1.0.0b1 - 2023-07-07
|
||||||
|
|||||||
@@ -58,18 +58,17 @@ def test_app_default():
|
|||||||
Test default application with no config overrides.
|
Test default application with no config overrides.
|
||||||
"""
|
"""
|
||||||
c = apply_mock_config({})
|
c = apply_mock_config({})
|
||||||
# default_url is not set, so JupyterHub will pick default.
|
|
||||||
assert "default_url" not in c.Spawner
|
|
||||||
|
|
||||||
|
|
||||||
def test_app_jupyterlab():
|
|
||||||
"""
|
|
||||||
Test setting JupyterLab as default application
|
|
||||||
"""
|
|
||||||
c = apply_mock_config({"user_environment": {"default_app": "jupyterlab"}})
|
|
||||||
assert c.Spawner.default_url == "/lab"
|
assert c.Spawner.default_url == "/lab"
|
||||||
|
|
||||||
|
|
||||||
|
def test_app_classic():
|
||||||
|
"""
|
||||||
|
Test setting classic as default application
|
||||||
|
"""
|
||||||
|
c = apply_mock_config({"user_environment": {"default_app": "classic"}})
|
||||||
|
assert c.Spawner.default_url == "/tree"
|
||||||
|
|
||||||
|
|
||||||
def test_auth_default():
|
def test_auth_default():
|
||||||
"""
|
"""
|
||||||
Test default authentication settings with no overrides
|
Test default authentication settings with no overrides
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ default = {
|
|||||||
"password": "",
|
"password": "",
|
||||||
},
|
},
|
||||||
"user_environment": {
|
"user_environment": {
|
||||||
"default_app": "classic",
|
"default_app": "jupyterlab",
|
||||||
},
|
},
|
||||||
"services": {
|
"services": {
|
||||||
"cull": {
|
"cull": {
|
||||||
@@ -231,6 +231,8 @@ def update_user_environment(c, config):
|
|||||||
# Set default application users are launched into
|
# Set default application users are launched into
|
||||||
if user_env["default_app"] == "jupyterlab":
|
if user_env["default_app"] == "jupyterlab":
|
||||||
c.Spawner.default_url = "/lab"
|
c.Spawner.default_url = "/lab"
|
||||||
|
elif user_env["default_app"] == "classic":
|
||||||
|
c.Spawner.default_url = "/tree"
|
||||||
|
|
||||||
|
|
||||||
def update_user_account_config(c, config):
|
def update_user_account_config(c, config):
|
||||||
|
|||||||
Reference in New Issue
Block a user