Темы редактора 🌀 Bulka

Темы редактора

Bulka поддерживает 40 встроенных цветовых тем для редактора кода. Вы можете переключать темы прямо из музыкального кода или через настройки.

Переключение темы из кода

Используйте функцию theme() для динамического переключения темы:

Автоматическое переключение тем

Можно переключать темы по очереди в такт музыке:

Все 40 тем в одном паттерне

Список всех тем

Тёмные темы (30)

ТемаОписание
strudelThemeСтандартная тёмная тема (по умолчанию)
algoboyРетро-стиль Game Boy
archBtwArch Linux стиль
androidstudioAndroid Studio
atomoneAtom One Dark
auraФиолетовая Aura
bbeditBBEdit
blackscreenЧёрный экран
bluescreenСиний экран (BSOD стиль)
CutiePiМилая розовая тема
darculaJetBrains Darcula
draculaПопулярная Dracula
duotoneDarkДвухтоновая тёмная
eclipseEclipse Dark
fruitDawFruit DAW стиль
githubDarkGitHub Dark
greenTextЗелёный текст на чёрном
gruvboxDarkGruvbox Dark
sonicPinkSonic Pink
materialDarkMaterial Dark
monokaiКлассическая Monokai
noctisLilacNoctis Lilac
nordNord (скандинавский стиль)
redTextКрасный текст на чёрном
solarizedDarkSolarized Dark
sublimeSublime Text
teletextТелетекст ретро
tokyoNightTokyo Night
tokyoNightStormTokyo Night Storm
vscodeDarkVS Code Dark

Светлые темы (10)

ТемаОписание
bluescreenlightСветлый синий
githubLightGitHub Light
gruvboxLightGruvbox Light
materialLightMaterial Light
solarizedLightSolarized Light
tokyoNightDayTokyo Night Day
vscodeLightVS Code Light
whitescreenБелый экран
xcodeLightXcode Light

Переключение через настройки

  1. Откройте панель настроек (иконка шестерёнки)
  2. Найдите раздел “Theme”
  3. Выберите тему из выпадающего списка

Выбранная тема сохраняется в localStorage и восстанавливается при следующем посещении.

Создание кастомных тем

Каждая тема определяется в отдельном .mjs файле в папке packages/codemirror/themes/.

Структура темы

import { tags as t } from '@lezer/highlight';
import { createTheme } from './theme-helper.mjs';

// Основные настройки цветов
export const settings = {
  background: '#222',           // Фон редактора
  lineBackground: '#22222299',  // Фон строки кода
  foreground: '#fff',           // Цвет текста
  caret: '#ffcc00',             // Цвет курсора
  selection: 'rgba(128, 203, 196, 0.5)', // Цвет выделения
  selectionMatch: '#036dd626',  // Цвет совпадений при поиске
  lineHighlight: '#00000050',   // Подсветка активной строки
  gutterBackground: 'transparent', // Фон панели номеров строк
  gutterForeground: '#8a919966',   // Цвет номеров строк
  light: false,                 // true для светлых тем
};

// Создание темы с подсветкой синтаксиса
export default createTheme({
  theme: 'dark', // или 'light'
  settings,
  styles: [
    { tag: t.keyword, color: '#c792ea' },      // Ключевые слова
    { tag: t.string, color: '#c3e88d' },       // Строки
    { tag: t.number, color: '#c3e88d' },       // Числа
    { tag: t.comment, color: '#7d8799' },      // Комментарии
    { tag: t.variableName, color: '#c792ea' }, // Переменные
    { tag: t.operator, color: '#89ddff' },     // Операторы
    { tag: t.bracket, color: '#525154' },      // Скобки
  ],
});

Доступные теги для подсветки синтаксиса

  • t.keyword — ключевые слова (if, else, function)
  • t.string — строки в кавычках
  • t.number — числа
  • t.comment — комментарии
  • t.variableName — имена переменных
  • t.operator — операторы (+, -, *, /)
  • t.bracket — скобки
  • t.propertyName — свойства объектов
  • t.className — имена классов
  • t.tagName — теги
  • t.meta — метаданные
  • t.atom — атомарные значения
  • t.bool — булевы значения

Добавление новой темы

  1. Создайте файл packages/codemirror/themes/my-theme.mjs
  2. Экспортируйте settings и тему по умолчанию
  3. Импортируйте тему в packages/codemirror/themes.mjs
  4. Добавьте в объекты themes и settings

После этого тема будет доступна через theme("myTheme") и в настройках.

Ссылки