Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Notebook themes #122481

Closed
kieferrm opened this issue Apr 28, 2021 · 10 comments
Closed

Notebook themes #122481

kieferrm opened this issue Apr 28, 2021 · 10 comments
Assignees
Labels
feature-request Request for new features or functionality notebook on-testplan
Milestone

Comments

@kieferrm
Copy link
Member

kieferrm commented Apr 28, 2021

We should introduce the notion of notebook themes that can combine colors and layout. As a user I can associate a viewType with a certain notebook theme. This idea came up in a discussion with @rebornix.

@gramster
Copy link
Member

Can I give this 100 upvotes? I personally love dark themes in my code editors but light themes when working with notebooks (don't ask why, it's not necessarily rational). I would love to have separate notebook themes as a result. It might even make sense to default to a light theme for notebooks (for Jupyter notebook users benefit).

@rebornix rebornix added this to the On Deck milestone Apr 28, 2021
@rebornix rebornix added the under-discussion Issue is under discussion for relevance, priority, approach label Apr 28, 2021
@greazer
Copy link
Member

greazer commented Apr 28, 2021

This could help address some of the problems I ran into personally with trying to visually process the state of my notebook at any given time. I.e. which cell is selected, which is in edit mode, etc. I know we have separate color tokens for notebook stuff, but having a notebook theme as a 1st class citizen of VS Code would help in discoverability.

@claudiaregio
Copy link

+1 from customer email I received mid March.

image

@claudiaregio
Copy link

+1 from survey monkey feedback

image

@g-simmons
Copy link

+1

@claudiaregio
Copy link

+1 customer feedback

image

@claudiaregio
Copy link

+1 customer feedback

image

@roblourens
Copy link
Member

roblourens commented May 13, 2021

Starting to think about a concept for a basic profile, I imagine a few parts:

  • A profile is a set of notebook.* settings/values
  • VS Code probably provides some builtin profiles
  • An extension can declare a profile in package.json. Example:
"notebookProfiles": {
    "deepnote": {
        "notebook.cellToolbarVisibility": "hover",
        "notebook.showCellStatusBar": false
    }
}
  • Maybe an extension can also declare a default profile when registering a content provider, not sure about that
  • A user can configure a profile per-view type, like
"notebook.profile": {
    "github-issues": "zenMode",
    "*": "vscode"
}
  • A user setting will override that value in the selected profile (?)

  • We need some way to override values per-profile, or customize profiles

    • We could take inspiration from terminal.profiles and let the user declare profiles in their settings
    "notebook.profiles": {
        "myprofile": {
            "extends": "jupyter", // optional
            "notebook.lineNumbers": "off"
        }
    }
    • or a simpler override like
    "notebook.lineNumbers": {
        "jupyter": "off"
    }
    • or invert it, I think this is my preference
    "notebook.profileOverrides": {
        "jupyter": {
            "notebook.lineNumbers": "off"
        }
    }
    • We've talked about a generic solution for custom setting scopes, like language-scoped settings, but we should start by thinking about this on its own without including that complicated issue

Things to think about

  • How does the user know what settings are in the profile?
  • Understanding settings scopes is already complicated. This adds more places the user has to look to figure out "what is the value of setting X in notebook Y?"
  • What sort of custom settings editor experience can we add to make this easier?
    • One easy idea, add a special settings editor search query like @notebookProfile:jupyter which filters the settings list to notebook settings. If the user edits them, they get saved in the right way. This is also a solution for language scopes that I've thought about.

@roblourens roblourens self-assigned this May 13, 2021
@roblourens roblourens modified the milestones: On Deck, May 2021 May 13, 2021
@roblourens
Copy link
Member

roblourens commented Jun 1, 2021

The current plan for this feature, as implemented in insiders, is the following

  • If the user has ever opened a notebook, a new task is available on the Getting Started page to pick a notebook "profile" (although we don't use that word in the UI)
    image
  • A notebook profile is just a set of values for notebook layout settings. When the user clicks a profile option, it will apply the profile settings to their user settings
  • The first time the user opens a notebook, we will open the Getting Started page with the notebook profile picker to the side (this is hidden behind a setting notebook.experimental.openGettingStarted, and I plan to keep it that way for this release)

Jupyter team, please take a look at the current settings for the profile labelled Jupyter, we can change them. We are still tweaking all the profiles and the preview images. Also, today's (6/1) Insiders is missing the images from the build, they will appear tomorrow.

https://github.com/microsoft/vscode/blob/main/src/vs/workbench/contrib/notebook/browser/contrib/profile/notebookProfile.ts#L29-L37

@roblourens roblourens added feature-request Request for new features or functionality on-testplan and removed under-discussion Issue is under discussion for relevance, priority, approach labels Jun 2, 2021
@github-actions github-actions bot locked and limited conversation to collaborators Jul 17, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
feature-request Request for new features or functionality notebook on-testplan
Projects
None yet
Development

No branches or pull requests

9 participants