Editor Themes
Bulka has 39 built-in color themes for the code editor. You can switch themes right from your music code or in the settings.
Switching the theme from code
Use the theme() function to switch the theme dynamically:
Switching themes automatically
You can cycle through themes in time with the music:
All 39 themes in one pattern
All themes
Dark themes (30)
| Theme | Description |
|---|---|
strudelTheme | The standard dark theme (default) |
algoboy | Retro Game Boy style |
archBtw | Arch Linux style |
androidstudio | Android Studio |
atomone | Atom One Dark |
aura | Purple Aura |
bbedit | BBEdit |
blackscreen | Black screen |
bluescreen | Blue screen (BSOD style) |
CutiePi | A cute pink theme |
darcula | JetBrains Darcula |
dracula | The popular Dracula |
duotoneDark | Two-tone dark |
eclipse | Eclipse Dark |
fruitDaw | Fruit DAW style |
githubDark | GitHub Dark |
greenText | Green text on black |
gruvboxDark | Gruvbox Dark |
sonicPink | Sonic Pink |
materialDark | Material Dark |
monokai | The classic Monokai |
noctisLilac | Noctis Lilac |
nord | Nord (Scandinavian style) |
redText | Red text on black |
solarizedDark | Solarized Dark |
sublime | Sublime Text |
teletext | Retro teletext |
tokyoNight | Tokyo Night |
tokyoNightStorm | Tokyo Night Storm |
vscodeDark | VS Code Dark |
Light themes (9)
| Theme | Description |
|---|---|
bluescreenlight | Light blue |
githubLight | GitHub Light |
gruvboxLight | Gruvbox Light |
materialLight | Material Light |
solarizedLight | Solarized Light |
tokyoNightDay | Tokyo Night Day |
vscodeLight | VS Code Light |
whitescreen | White screen |
xcodeLight | Xcode Light |
Switching in the settings
- Open the settings panel (gear icon)
- Find the “Theme” section
- Pick a theme from the dropdown
The chosen theme is saved in localStorage and restored on your next visit.
Making a custom theme
Each theme is defined in its own .mjs file in packages/codemirror/themes/.
Theme structure
import { tags as t } from '@lezer/highlight';
import { createTheme } from './theme-helper.mjs';
// Main color settings
export const settings = {
background: '#222', // Editor background
lineBackground: '#22222299', // Code line background
foreground: '#fff', // Text color
caret: '#ffcc00', // Caret color
selection: 'rgba(128, 203, 196, 0.5)', // Selection color
selectionMatch: '#036dd626', // Search match color
lineHighlight: '#00000050', // Active line highlight
gutterBackground: 'transparent', // Line number gutter background
gutterForeground: '#8a919966', // Line number color
light: false, // true for light themes
};
// Create the theme with syntax highlighting
export default createTheme({
theme: 'dark', // or 'light'
settings,
styles: [
{ tag: t.keyword, color: '#c792ea' }, // Keywords
{ tag: t.string, color: '#c3e88d' }, // Strings
{ tag: t.number, color: '#c3e88d' }, // Numbers
{ tag: t.comment, color: '#7d8799' }, // Comments
{ tag: t.variableName, color: '#c792ea' }, // Variables
{ tag: t.operator, color: '#89ddff' }, // Operators
{ tag: t.bracket, color: '#525154' }, // Brackets
],
});
Available syntax highlighting tags
t.keyword— keywords (if, else, function)t.string— quoted stringst.number— numberst.comment— commentst.variableName— variable namest.operator— operators (+, -, *, /)t.bracket— bracketst.propertyName— object propertiest.className— class namest.tagName— tagst.meta— metadatat.atom— atomic valuest.bool— booleans
Adding a new theme
- Create the file
packages/codemirror/themes/my-theme.mjs - Export
settingsand the theme as the default export - Import the theme in
packages/codemirror/themes.mjs - Add it to the
themesandsettingsobjects
After that the theme is available via theme("myTheme") and in the settings.