Skip to content

kamenminkov/favourite-themes

Repository files navigation

Favourite Themes README

This extension's main goal is to facilitate switching and keeping track of preferred colour themes, especially in the case of theme packs containing tens of individual themes.

Features

The extension's main feature is a quick pick menu showing all installed colour themes with the ability to show preferred ones at the top.

Open the command palette and search for "Pick Theme" to show the picker (or alternatively assign a keyboard shortcut for the favourite-themes.selectColourTheme command to do the same thing). The moment you check a theme in the picker (using Space), it's stored in your settings, and any subsequent invocations of the menu will show checked themes on top of the list.

Favourite Themes

(Yes, before you ask, there is a theme called undefined.)

Motivation

VSCode's built-in theme picker works perfectly if you have 5 or 10 themes installed. However, if you install a theme pack or two, you can easily end up with 100 themes of which you only like 10.

Extension Settings

This extension contributes the following settings:

Setting Type Description Default value
favouriteThemes.pinnedThemes string[] An array containing all pinned themes. []
favouriteThemes.darkThemesFirst boolean (Deprecated, use favouriteThemes.themeTypeSortOrder instead) Whether dark themes should come first true
favouriteThemes.sortPinnedByRecentUsage boolean Whether to show themes in order of their usage (i.e. most recently used ones on top) false
favouriteThemes.showExtraQuickPickDetails boolean Whether to show dark/light theme type inline in the picker false
favouriteThemes.themeTypeSortOrder string[] How to order themes by type (dark, light, high contrast dark, high contrast light) ["vs-dark", "hc-black", "vs", "hc-light"]
favouriteThemes.showThemesOfCurrentTypeFirst boolean If set to true, it will override favouriteThemes.themeTypeSortOrder and it will show at the top themes of the type of the theme that's currently used. false
favouriteThemes.themeSelectionDelay number Delay (in milliseconds) between selecting a theme in the picker and actually applying it. Helps prevent lag when quickly going through themes. 200
favouriteThemes.updatePreferredThemes boolean Update workbench.preferredDarkColorTheme and workbench.preferredLightColorTheme when selecting themes through this extension. false

TODO

  • Track and show statistics of how much you use each theme
  • Handle disabling/uninstalling of themes
  • Tie the extension logic to workbench.preferredDarkColorTheme and workbench.preferredLightColorTheme
  • Revert to previously selected theme if you dismiss the picker
  • Have typing while the picker's open automatically focus the search field instead of having to navigate to it
  • Highlight active theme when showing the picker
  • Debounce switching of themes when quickly scrolling through the list
  • Add customizable display (i.e. how to show names in the picker)
  • Add extension icon
  • Add commands for previous/next theme
  • Add visual preview of themes
  • Investigate a way to keep matching pinned themes at the top during a search

Release Notes

See CHANGELOG.md