Как сделать тему

Тема — это обычный CSS-файл. Интерфейс FgSNotes целиком собран из переменных, поэтому достаточно переопределить цвета в одном блоке :root. Селекторы компонентов переписывать не нужно.

Формат 2 работает в FgSNotes 2.0 и новее. Темы старого формата (с селекторами вроде .sidebar-toolbar) не подходят: интерфейс был переработан.

Установка темы

  1. Положите файл my-theme.css в папку Документы/FgSNotes/themes. Папка создаётся при первом запуске приложения.
  2. Откройте настройки → «Предпросмотр».
  3. В пункте «Сторонняя тема» выберите файл. Тема применится сразу.

Чтобы отключить тему, выберите «Нет».

Цвета интерфейса

Все переменные необязательны, но лучше задать весь набор: так тема выглядит цельно. Образцы цветов взяты из темы Dracula.

Поверхности

ПеременнаяЗа что отвечает
--window-bgФон окна и боковой полосы. Виден по краям между панелями
--card-bgРедактор и основные панели
--header-bgПанель вкладок и плавающие панели
--preview-bgПанель предпросмотра (обычно var(--card-bg))
--code-bgБлоки кода, цитаты, вставки

Текст

ПеременнаяЗа что отвечает
--text-colorОсновной текст
--text-mutedПодписи, подсказки, неактивные элементы

Линии и состояния

ПеременнаяЗа что отвечает
--border-colorТонкие линии и рамки
--hover-colorНаведение на кнопки и вкладки
--active-bgВыбранная вкладка и режим
--selectionВыделение текста (с прозрачностью)

Акцент

ПеременнаяЗа что отвечает
--accent-colorГлавные кнопки, переключатели, ползунки
--accent-textТекст на акцентном цвете
--link-colorСсылки в предпросмотре
--success-colorЗначок «Черновик сохранён»

--shadow-color задаёт цвет теней у плавающих панелей. Если тема светлая, добавьте color-scheme: light, чтобы системные элементы (полосы прокрутки, поля) тоже стали светлыми.

Подсветка кода

Те же переменные раскрашивают блоки кода в предпросмотре и разметку в редакторе.

ПеременнаяЗа что отвечает
--syn-keywordКлючевые слова: const, def
--syn-stringСтроки
--syn-numberЧисла
--syn-commentКомментарии
--syn-functionВызовы функций
--syn-typeТипы и классы
--syn-fieldПоля и ключи JSON
--syn-tagHTML-теги
--syn-attrАтрибуты и флаги
--syn-annotationАннотации и язык в ограждении ```
--syn-headingЗаголовки Markdown в редакторе
--syn-markСлужебные символы: #, **, []

Шаблон темы

Скопируйте файл целиком и замените цвета. Блок работает и для светлой, и для тёмной темы приложения.

:root, [data-theme="dark"], [data-theme="light"] {
    color-scheme: dark;
    --window-bg: #242933;
    --bg-color: var(--window-bg);
    --card-bg: #2e3440;
    --header-bg: #3b4252;
    --preview-bg: var(--card-bg);
    --text-color: #d8dee9;
    --text-muted: #7b88a1;
    --border-color: #434c5e;
    --hover-color: #3a404c;
    --active-bg: #464c58;
    --accent-color: #88c0d0;
    --accent-text: #111111;
    --link-color: #81a1c1;
    --code-bg: #282e39;
    --selection: #88c0d059;
    --success-color: #5fb865;
    --shadow-color: #0009;
    --syn-keyword: #81a1c1;
    --syn-string: #a3be8c;
    --syn-number: #b48ead;
    --syn-comment: #616e88;
    --syn-function: #88c0d0;
    --syn-type: #8fbcbb;
    --syn-field: #88c0d0;
    --syn-tag: #81a1c1;
    --syn-attr: #8fbcbb;
    --syn-annotation: #d08770;
    --syn-heading: #88c0d0;
    --syn-mark: #7b88a1;
}

Свои правила

Кроме переменных можно добавить обычный CSS. Устойчивые точки опоры: .workspace, .sidebar-toolbar, .document-bar, .tab-item.active, .editor-column, .preview-column, .editor-tools, .status-bar, .preview-content.

Например, градиентный фон окна (сплошной цвет --window-bg всё равно задайте как запасной):

body, .workspace { background: linear-gradient(135deg, #12132b 0%, #2a1650 100%); }
При включённом Liquid Glass фон окна становится прозрачным, поэтому градиент на body не будет виден: сквозь окно просвечивает рабочий стол. Тонировку стекла тема не меняет, она зависит от светлой или тёмной темы приложения.

Проверка и публикация

  1. Откройте документ с заголовками, списком, цитатой, таблицей и блоками кода: так видны все цвета.
  2. Проверьте контраст текста с фоном: не ниже 4.5:1 для основного текста и 3:1 для подписей.
  3. Переключите режимы «Редактор», «Рядом», «Просмотр» и откройте настройки.
  4. Сделайте скриншот и пришлите тему вместе с файлом через GitHub.