A JupyterLab extension to create custom launcher entries.

Overview

jupyter_app_launcher

Github Actions Status Documentation Status Binder JupyterLite GitHub license

A JupyterLab extension to create custom launcher entries

jupyter_app_launcher helps users customize the JupyterLab launcher with a simple YAML file. Users can add custom entries to the launcher to:

  • Open a predefined notebook or markdown file.
  • Render a notebook in dashboard mode
  • Open a notebook with Voila
  • Start a local web server and open the predefined URL.
  • Open a remote URL.
demo.mp4

Try it online!

You can try it online by clicking on this badge:

Binder

Or you can run it directly in your browser with JupyterLite:

JupyterLite

Documentation

You can read the documentation following this link: https://jupyter-app-launcher.readthedocs.io/

Installation

You can install using pip:

pip install jupyter-app-launcher

Or using conda:

conda install -c conda-forge  jupyter_app_launcher

jupyter_app_launcher works with JupyterLab>=3.1

Example

Open a predefined notebook

Dynamic layout

Open a predefined markdown file

Dynamic layout

Render a notebook in dashboard mode

Dynamic layout

Open a notebook with Voila

Dynamic layout

Start a local web server and open the URL.

Dynamic layout

Open a remote URL

Dynamic layout

Contributing

See Contributing

Packaging the extension

See RELEASE

Comments
  • url works, notebook doesn't, need absolute path example

    url works, notebook doesn't, need absolute path example

    Three icons shown on Jupyterlab launcher but click them make no response. No clue and I can't find what's wrong in my config.ymal or the notebook file location?

    My config.ymal is at : c:\Users\myname\AppData\Roaming\Python\share\jupyter\jupyter_app_launcher\config.yaml and it reads:

     - title: test.ipynb 1
        description: test.ipynb 1
        source: ./test.ipynb
        type: notebook
        cwd: ../../samples
        catalog: Jupyter app launcher
      
      - title: test.ipynb 2
        description: test.ipynb 2
        source: ../test.ipynb
        type: notebook
        cwd: ../../samples
        catalog: Jupyter app launcher
      
      - title: test.ipynb 3
        description: test.ipynb 3
        source: test.ipynb
        type: notebook
        cwd: ../../samples
        catalog: Jupyter app launcher
    

    I have many test.ipynb respectively at :
    c:\Users\myname\AppData\Roaming\Python\share\jupyter\jupyter_app_launcher\test.ipynb c:\Users\myname\AppData\Roaming\Python\share\jupyter\test.ipynb c:\Users\myname\AppData\Roaming\Python\share\test.ipynb

    opened by hcchengithub 5
  • Consider

    Consider "soft" dependencies?

    Great extension!

    One observation: the install_requires has a lot of heavy hitters... perhaps it's worth considering making these a bit more modular, either with [extras] or a -core package with subpackages that provide individual features via traitlets/entry_points, with the main package keeping all of them?

    opened by bollwyvl 2
  • Automated Changelog Entry for 0.1.5 on main

    Automated Changelog Entry for 0.1.5 on main

    Automated Changelog Entry for 0.1.5 on main

    After merging this PR run the "Full Release" Workflow on your fork of jupyter_releaser with the following inputs | Input | Value | | ------------- | ------------- | | Target | trungleduc/jupyter_app_launcher | | Branch | main | | Version Spec | 0.1.5 | | Since | v0.1.4 |

    documentation 
    opened by trungleduc 1
  • Automated Changelog Entry for 0.1.4 on main

    Automated Changelog Entry for 0.1.4 on main

    Automated Changelog Entry for 0.1.4 on main

    After merging this PR run the "Full Release" Workflow on your fork of jupyter_releaser with the following inputs | Input | Value | | ------------- | ------------- | | Target | trungleduc/jupyter_app_launcher | | Branch | main | | Version Spec | 0.1.4 | | Since | v0.1.3 |

    documentation 
    opened by trungleduc 1
  • Automated Changelog Entry for 0.1.3 on main

    Automated Changelog Entry for 0.1.3 on main

    Automated Changelog Entry for 0.1.3 on main

    After merging this PR run the "Full Release" Workflow on your fork of jupyter_releaser with the following inputs | Input | Value | | ------------- | ------------- | | Target | trungleduc/jupyter_app_launcher | | Branch | main | | Version Spec | 0.1.3 | | Since | v0.1.2 |

    documentation 
    opened by trungleduc 1
  • Automated Changelog Entry for 0.1.2 on main

    Automated Changelog Entry for 0.1.2 on main

    Automated Changelog Entry for 0.1.2 on main

    After merging this PR run the "Full Release" Workflow on your fork of jupyter_releaser with the following inputs | Input | Value | | ------------- | ------------- | | Target | trungleduc/jupyter_app_launcher | | Branch | main | | Version Spec | 0.1.2 | | Since | v0.1.1 |

    documentation 
    opened by trungleduc 1
  • Automated Changelog Entry for 0.1.1 on main

    Automated Changelog Entry for 0.1.1 on main

    Automated Changelog Entry for 0.1.1 on main

    After merging this PR run the "Full Release" Workflow on your fork of jupyter_releaser with the following inputs | Input | Value | | ------------- | ------------- | | Target | trungleduc/jupyter_app_launcher | | Branch | main | | Version Spec | 0.1.1 | | Since | v0.0.0 |

    documentation 
    opened by trungleduc 1
  • Feature request: open Notebook without making a copy

    Feature request: open Notebook without making a copy

    I managed to use the open existing notebook using type : notebook it creates a new notebook for me and I can run it. However, since it creates a copy of the notebook all the links and images are broken as my notebook is in another sub folder. I could have fixed with the cmd option to launch from a certain subfolder. unfortunately it is disabled

    I guess the ask can be simpler if we can just add links/shortcuts to open existing notebooks from subfolders instead of copying then launching.

    opened by AHarouni 1
  • Unable to open jupyter notebooks

    Unable to open jupyter notebooks

    Thanks for creating this extension. I managed to use the server option. However, I was unable to configure the extension to open any of the notebooks. I get error Notebook source is missing although I am placing absolute path

    I tired all 3 types notebook notebook-grid and notebook-voila but they all failed

    - catalog: Notebooks
      title: Label Clients
      description: test1
      source: /label/03_clients.ipynb
      cwd: /label
      type: notebook
    
    - catalog: Notebooks
      title: test w voila
      description: test 2
      source: /label/03_clients.ipynb
      cwd: /label
      type: notebook-voila
    
    - catalog: Notebooks
      title: notebook w grid
      description: test3
      source: /label/03_clients.ipynb
      cwd: /monia/nvflare/notebooks
      type: notebook-grid
    
    

    My system is

    jupyter serverextension list
    config dir: /opt/conda/etc/jupyter
        jupyter_server_proxy  enabled 
        - Validating...
          jupyter_server_proxy  OK
        jupyter_app_launcher  enabled 
        - Validating...
          jupyter_app_launcher 0.1.5 OK
        jupyterlab  enabled 
        - Validating...
          jupyterlab 3.5.0 OK
        jupytext  enabled 
        - Validating...
          jupytext 1.14.1 OK
        jupyter_tensorboard  enabled 
        - Validating...
          jupyter_tensorboard 0.2.0 OK
    

    and

    jupyter labextension list
    JupyterLab v3.5.0
    /opt/conda/share/jupyter/labextensions
            jupyterlab_pygments v0.2.2 enabled OK (python, jupyterlab_pygments)
            jupyter_app_launcher v0.1.5 enabled OK (python, jupyter_app_launcher)
            clara-viz-widgets v0.2.2 enabled OK (python, clara-viz-widgets)
            jupyterlab_tensorboard_pro v0.3.2 enabled OK (python, jupyterlab_tensorboard_pro)
            jupyterlab-nvdashboard v0.7.0 enabled OK (python, jupyterlab_nvdashboard)
            jupyterlab-jupytext v1.3.8+dev enabled OK (python, jupytext)
            @jupyter-widgets/jupyterlab-manager v3.1.1 enabled OK (python, jupyterlab_widgets)
            @jupyterlab/server-proxy v3.2.2 enabled OK
    
    
    bug 
    opened by AHarouni 0
  • Unable to open some external sites

    Unable to open some external sites

    Thanks for building this, very useful

    I managed to get this to work and open some external sites. however some other sites refuse the connection with error as github.com refused connection

    chrome debug tools show error

    Refused to frame 'https://github.com/' because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'none'".
    

    to reproduce try

    - catalog: GitHub
      title: test
      description: github
      source: https://github.com
      type: url
    

    FYI I launch my jupyter lab without tokens on http connection if that makes any difference

    bug 
    opened by AHarouni 0
  • No scrolling in Markdown

    No scrolling in Markdown

    Thanks for creating this extension. It is very useful. On trying the markdown I noticed it seems trimmed as it doesn't have any margins comparing to normal jupyterlab launch

    more importantly on there is no scroll side bar to go up and down. see below when comparing md launched from extension (left ) with native jupyter lab launch.

    image

    bug 
    opened by AHarouni 0
  • Add a `jupyterlab-commands` launcher type

    Add a `jupyterlab-commands` launcher type

    Elevator Pitch

    Having a launcher type that ran a list of commands would be useful for a number of general cases.

    Motivation

    This would harmonize with other systems like jupyterlab_commands, and possibly replace (or become the implementation for) a few of the existing items.

    Design Ideas

    Update the schema to allow things like:

    - type: jupyterlab-commands
      commands: 
       - label: Open Notebook
         id: filebrowser:open:
         args: 
           path: SomeNotebook.ipynb
       - label: Run all cells
         id: runmenu:restart-and-run-all
       - label: Save
         id: docmanager:save
       - label: Export
         id: notebook:export-to-format
         args: 
           format: html
       - label: Open HTML
         id: filebrowser:open:
         args:
           path: SomeNotebook.html
    

    On the implementation side, it should just be able to await execute(id, args) each in turn. If one failed, it could report what stage failed.

    Commands that return interesting values might be a bit hard, but could potentially be named and reused.

    opened by bollwyvl 1
Releases(v0.1.5)
Owner
Duc Trung Le
Scientific Software Engineer at @QuantStack
Duc Trung Le
A plugin for Obsidian that shows raw BibTeX bibliography entries in a prettier way

Pretty BibTeX Obsidian Plugin This plugin renders bibliography entries in the BibTeX format in a more readable way. Demonstration Creating a standard

Sandro Figo 8 Dec 30, 2022
Kuldeep 2 Jun 21, 2022
A Minecraft launcher written in Rust, with an Electron frontend.

RustMine A Minecraft launcher written in Rust, with an Electron frontend. Why? I thought it would be fun to use two of my most familiar languages, Rus

sussyimpostor 1 Oct 16, 2022
A launcher for Mindustry built with Node.JS.

MindustryLauncher A custom launcher for Mindustry built with TypeScript and Node.JS. Features Logging Version selection Automatic version download Aut

null 5 Jun 23, 2022
A launcher for quickly & easily switching server destinations.

GrassClipper Grasscutter launcher for easily switching between Official and Private servers Download Here! *Note: some translations are outdated, so i

null 520 Jan 6, 2023
MacOS launcher & command palette

About If you ever liked tools like Raycast and Alfred, but wanted to own them and tweak them yourself, then SOL is the tool for you. All the affordanc

Oscar Franco 1.4k Dec 30, 2022
Shizuku Launcher is a simple AWS Virtual Machine helper.

shizuku-launcher-web Shizuku Launcher is a simple AWS Virtual Machine helper. Shizuku Launcher offers multiple solutions to keep your credential secur

Seraphim Lou 16 Oct 11, 2022
An Anime Game launcher for Linux with automatic patching fixing detection of Linux/Wine and telemetry disabling

An Anime Game launcher for Linux with automatic patching fixing detection of Linux/Wine and telemetry disabling

An Anime Team 367 Jan 4, 2023
Shizuku Launcher is a simple AWS Virtual Machine helper. Now in Next.js

Shizuku Launcher Shizuku Launcher is a simple AWS Virtual Machine helper. Shizuku Launcher offers multiple solutions to keep your credential security

Seraphim Lou 50 Jan 3, 2023
Ready to manipulate partitions file? Create a custom partition, apply custom security system, hide the partition and share your hidden data on the www

Paranoia ?? Ready to manipulate partitions file? Create a custom partition, apply custom security system, hide the partition and share your hidden dat

Alice Snow 3 Dec 29, 2022
Create Bootstrap 5 Modal Box using JavaScript with custom title, description, button labels and custom YES button callback

Dynamic BS5 Modal Box Create Bootstrap 5 Modal Box using JavaScript with custom title, description, button labels and custom YES button callback Insta

null 5 Oct 23, 2022
logseq custom.js and custom.css utilities : resize query table columns, hide namespaces...

logseq-custom-files custom.js and custom.css utilities for Logseq. current version v20220331 query table view : add handles on the query table headers

null 44 Dec 7, 2022
This experimental library patches the global custom elements registry to allow re-defining or reload a custom element.

Redefine Custom Elements This experimental library patches the global custom elements registry to allow re-defining a custom element. Based on the spe

Caridy Patiño 21 Dec 11, 2022
Custom Gutenburg blocks to add custom functionalities to your WordPress site. Brought to you by Arif Khan with <3

Gutpress(WordPress Gutenburg Block Plugin) Custom Gutenburg blocks to add custom functionalities to your WordPress site. Brought to you by Arif Khan w

Arif Khan 4 Nov 23, 2022
Custom navigations for Solid written in Typescript. Implement custom page transition logic and ✨ animations ✨

solid-custom-navigation Get, Set, Go! Custom navigations for Solid, written in Typescript. Implement custom page transition logic and ✨ animations ✨ .

Dirag Biswas 8 Nov 27, 2022
This repo contains instructions on how to create your NFT in Solana(using Metaplex and Candy Machine) and mint it using your custom front-end Dapp

Solana-NFT minting Dapp Create your own NFT's on Solana, and mint them from your custom front-end Dapp. Tools used Metaplex -> Metaplex is the NFT sta

Udit Sankhadasariya 12 Nov 2, 2022
Omnichannel Live Chat Widget UI Components offers a re-usable component-based library to help create a custom chat widget that can be connected to the Dynamics 365 Customer Service experience.

Omnichannel Live Chat Widget UI Components @microsoft/omnichannel-chat-widget is a React-based UI component library which allows you to build your own

Microsoft 14 Dec 15, 2022
Create your own custom NFT minting page using thirdweb's NFT Drop contract

Customizable NFT Drop Minting Page In this example, you can create your own NFT Drop minting page just by customising the template with your branding,

thirdweb examples 59 Dec 24, 2022