🎨 Calibra
Персональная калибровка темы VS Code под ваше зрение.
Calibra не переключает готовые темы — она создаёт вашу. Вы проходите
короткий интерактивный тест «какой код читается легче?», и расширение
рассчитывает палитру, которая подходит именно вашим глазам: уровень
яркости, оттенок фона, контраст комментариев, свойства объектов, ANSI-цвета
терминала, оформление вкладок, статус-бара и боковых панелей.
Содержание
Что делает Calibra
Обычные темы статичны. Monokai, Solarized, Nord, Dracula — каждая из них
подобрана дизайнером под «среднего» пользователя. Через пару месяцев глаз
привыкает, контрасты перестают помогать, и вы начинаете искать следующую
тему. Calibra решает это иначе.
- Интерактивная калибровка. 12 шагов, на каждом — четыре варианта
кода рядом. Вы кликаете по тому, что читается легче. Система постепенно
сходится к вашей зоне комфорта.
- Математика вместо вкусовщины. Все цвета считаются в перцептивном
пространстве OKLab. Контраст между фоном и токенами проверяется по
стандарту APCA — читаемость гарантирована физически, а не «на глаз».
- Полное покрытие интерфейса. Не только редактор: explorer, activity
bar, статус-бар, вкладки, панель, автокомплит, скроллбар, minimap,
ANSI-цвета терминала.
- Светлые и тёмные темы. Полярность выбирается на первом шаге. Всё
остальное автоматически подстраивается.
- Именованные профили. Сохраняйте отдельные темы для дня и ночи, для
работы и пет-проектов.
- Экспорт и импорт. Переносите профили между машинами через JSON.
- Ноль зависимостей. Никаких сторонних библиотек в рантайме.
Как это работает
OKLab вместо RGB
RGB не соответствует человеческому восприятию. Переход от #000000 к
#808080 и от #808080 к #ffffff воспринимается глазом по-разному,
хотя математически разница одинакова. OKLab — это цветовое пространство,
где координата L (яркость) линейно соответствует восприятию, а a и b
отвечают за хроматические оси.
Calibra работает именно в OKLab. Поэтому «сделать фон чуть светлее» — это
L + 0.05, а не «прибавить по 12 к каждому каналу RGB».
APCA вместо WCAG
WCAG 2.1 — формальный стандарт, но он плохо подходит для тёмных тем. APCA
(Advanced Perceptual Contrast Algorithm) учитывает полярность: белый текст
на чёрном фоне воспринимается иначе, чем чёрный на белом, и метрика Lc
отражает это.
В Calibra у каждого типа токена есть целевое значение Lc:
| Токен |
Целевой Lc |
Зачем |
fg |
88 |
Основной текст — комфортное чтение |
con |
76 |
true, false, null — заметные |
kw |
75 |
Ключевые слова — на границе минимума |
err |
72 |
Ошибки — сигналят, но не паникуют |
typ |
72 |
Типы и интерфейсы |
num |
70 |
Числа |
fn |
68 |
Имена функций |
str |
62 |
Строки |
prp |
52 |
Свойства объектов (res.data) |
com |
42 |
Комментарии — тише кода, но читаемы |
Для каждого токена решается обратная задача: какая яркость в OKLab даст
ровно такой Lc против текущего фона. Решение — бинарный поиск из 24
итераций. Он даёт либо точное попадание, либо максимальное приближение.
Матрица M × N
Не все токены встречаются рядом. Комментарий никогда не стоит вплотную с
маркером ошибки. Свойство объекта — с ключевым словом. Calibra работает с
разреженной матрицей реальных соседств: editor.background × comment,
editor.background × keyword, editorError.background ×
editorError.foreground. Это делает калибровку быстрой, а не 30-минутной.
Chrome и overlay
Две разные логики для плоскостей интерфейса:
- Chrome (sidebar, activity bar, panel, tabs) — всегда идут в одну
сторону от редактора к краям. На тёмной теме — темнее, на светлой —
тоже темнее. Иначе на светлой теме sidebar сливается с фоном.
- Overlay (виджеты, selection, hover, скроллбар) — направление зависит
от полярности. На тёмной светлее, на светлой темнее.
Без этого разделения на светлых темах виджеты и выделения становятся
невидимыми.
Установка
Из VSIX
Скачайте .vsix-файл из Releases
и установите:
code --install-extension calibra-0.6.0.vsix