@ -223,6 +223,7 @@ class NotebookWebApplication(web.Application):
base_url = base_url ,
default_url = default_url ,
template_path = template_path ,
use_redirect_file = jupyter_app . use_redirect_file ,
static_path = jupyter_app . static_file_path ,
static_custom_path = jupyter_app . static_custom_path ,
static_handler_class = FileFindHandler ,
@ -539,6 +540,20 @@ flags['allow-root']=(
_ ( " Allow the notebook to be run from root user. " )
)
flags [ ' use_redirect_file ' ] = (
{ ' NotebookApp ' : { ' use_redirect_file ' : True } } ,
""" Disable launching browser by redirect file
For some environments ( like Windows Subsystem for Linux ( WSL ) and Chromebooks ) ,
launching a browser using a redirect file ( introduced in notebook versions
> 5.7 .2 ) can lead the browser failing to load . This is because of the
difference in file structures / paths between the runtime and the browser .
Disabling this setting will by setting to False will disable this behavior ,
allowing the browser to launch by using a URL and visible token ( as before ) .
"""
)
# Add notebook manager flags
flags . update ( boolean_flag ( ' script ' , ' FileContentsManager.save_script ' ,
' DEPRECATED, IGNORED ' ,
@ -645,6 +660,19 @@ class NotebookApp(JupyterApp):
help = _ ( " Whether to allow the user to run the notebook as root. " )
)
use_redirect_file = Bool ( True , config = True ,
help = """ Disable launching browser by redirect file
For some environments ( like Windows Subsystem for Linux ( WSL ) and Chromebooks ) ,
launching a browser using a redirect file ( introduced in notebook versions
> 5.7 .2 ) can lead the browser failing to load . This is because of the
difference in file structures / paths between the runtime and the browser .
Disabling this setting will by setting to False will disable this behavior ,
allowing the browser to launch by using a URL and visible token ( as before ) .
"""
)
default_url = Unicode ( ' /tree ' , config = True ,
help = _ ( " The default URL to redirect to from `/` " )
)
@ -1805,7 +1833,13 @@ class NotebookApp(JupyterApp):
if not browser :
return
if self . file_to_run :
if not self . use_redirect_file :
uri = self . default_url [ len ( self . base_url ) : ]
if self . token :
uri = url_concat ( uri , { ' token ' : self . token } )
elif self . file_to_run :
if not os . path . exists ( self . file_to_run ) :
self . log . critical ( _ ( " %s does not exist " ) % self . file_to_run )
self . exit ( 1 )
@ -1820,10 +1854,17 @@ class NotebookApp(JupyterApp):
else :
open_file = self . browser_open_file
b = lambda : browser . open (
urljoin ( ' file: ' , pathname2url ( open_file ) ) ,
new = self . webbrowser_open_new )
threading . Thread ( target = b ) . start ( )
if not self . use_redirect_file :
if browser :
b = lambda : browser . open ( url_path_join ( self . connection_url , uri ) ,
new = self . webbrowser_open_new )
threading . Thread ( target = b ) . start ( )
else :
b = lambda : browser . open (
urljoin ( ' file: ' , pathname2url ( open_file ) ) ,
new = self . webbrowser_open_new )
threading . Thread ( target = b ) . start ( )
def start ( self ) :
""" Start the Notebook server app, after initialization