Перейти к содержимому
ColliePWA

Темы: выберите готовое оформление или добавьте свое.

Тема представляет собой один небольшой файл JSON. Он задает цвета, шрифт, форму, оформление и палитру терминала. ColliePWA поставляется с четырьмя темами, и вы можете импортировать дополнительные темы из файла на телефоне.

01/Что это такое

Тема представляет собой файл стилей оформления.

Тема задает цвета приложения, отдельно для светлой половины и для темной половины. Она также может задавать шрифт интерфейса, шрифт для заголовков, форму, оформление и цвета зеркала терминала. Форма и оформление задаются десятью словами, такими как radius, shadow и density. Макет, размеры областей нажатия и значения статусов остаются прежними, поэтому статус blocked остается blocked в любой теме.

Каждое значение в файле является фиксированным словом или проверенным цветом. Файл не может выполнять код и не может загружать файл, шрифт или изображение.

Тема и Оформление представляют собой две разные настройки. Тема указывает, какие цвета использовать. Оформление указывает, какую половину показывать: Системная, Светлая или Темная.

02/Выбор

Выберите тему в разделе Настройки.

Откройте Настройки, затем Оформление и нажмите на тему. Она применяется мгновенно, без перезагрузки, и при следующем открытии ColliePWA первый кадр сразу отобразится в этой теме. Одно нажатие на Collie возвращает оформление по умолчанию.

Тема, в которой указан шрифт, задает ваш шрифт интерфейса один раз. Вы можете изменить его позже в карточке Шрифт интерфейса.

Collie

Шрифт интерфейса: Aldrich

Знакомое оформление: нейтральные серые тона и шрифт Aldrich.

Nightwatch

Шрифт интерфейса: IBM Plex Sans

flat · bold · strong · band · heavy

Для дежурного телефона ночью. Настоящая черная темная половина, плоская и угловатая, с плотными линиями, приглушенным янтарным акцентом и приглушенной янтарной полосой за заголовком и панелями.

Палитра терминала

Daylight

Шрифт интерфейса: Geist

Заголовки: Atkinson Hyperlegible Next

round · lifted · roomy · gradient · cards · sentence

Для яркого солнца и слабого зрения. Основной текст с контрастностью AAA, скругленные просторные карточки, страница со смещением книзу и цвета статусов от синего к оранжевому вместо красного и зеленого.

Палитра терминала

Harbour

Шрифт интерфейса: Atkinson Hyperlegible Next

Заголовки: Space Grotesk

soft · lifted · grain · thin

Для тех, кто привык к терминалу. Холодный серо-синий с одним бирюзовым акцентом, мягкие углы, мелкая зернистость, тонкие иконки и терминальная палитра на основе Solarized на почти черном синем фоне.

Палитра терминала

03/Импорт

Импортируйте тему из файла.

  1. 1Сохраните файл темы на телефоне. Он имеет расширение .json и размер меньше 64 KiB.
  2. 2В Настройках откройте карточку Тема в разделе Оформление, нажмите Импорт и выберите файл.
  3. 3Проверьте предпросмотр. Он показывает цвета обеих половин, форму, цвета терминала и отчет о контрастности. При слабой контрастности появляется предупреждение, но тему все равно можно применить. Файл с нарушениями правил отклоняется, и ничего не меняется.

Тема меняет только внешний вид приложения. Она не может выполнять код, загружать файлы или обращаться к серверу.

Устройство сохраняет до восьми импортированных тем. Импорт по ссылке отсутствует, и темы не синхронизируются между устройствами.

04/Создание

Создайте свою тему.

Самый быстрый способ начать работу: взять встроенную тему. Экспортируйте ее, измените id и name, отредактируйте цвета, слова формы или палитру терминала и импортируйте файл снова. Импортированная тема не может использовать id встроенной темы.

Это сокращенный harbour.json, файл version 2. Строки ... обозначают пропущенные части.

{
  "version": 2,
  "id": "harbour",
  "name": "Harbour",
  "author": "Collie",
  "light": {
    "background": "oklch(0.95 0.01 235)",
    "foreground": "oklch(0.26 0.025 250)",
    "card": "oklch(0.985 0.004 235)",
    "...": "..."
  },
  "dark": {
    "background": "oklch(0.21 0.018 250)",
    "foreground": "oklch(0.93 0.012 240)",
    "card": "oklch(0.255 0.02 252)",
    "...": "..."
  },
  "fonts": { "ui": "atkinson", "display": "grotesk" },
  "surface": {
    "radius": "soft",
    "shadow": "lifted",
    "density": "default",
    "weight": "default",
    "border": "default",
    "ground": "grain",
    "chrome": "page",
    "rows": "rules",
    "icons": "thin",
    "labels": "caps"
  },
  "ansi": {
    "0": "#073642",
    "1": "#f0504a",
    "2": "#859900",
    "...": "..."
  }
}

43 токена

Файл темы может содержать только эти токены, разделенные на четыре группы. Файл с любым другим ключом отклоняется.

ГруппаЧто окрашиваетТокены
Поверхности и цвета текста21Страница, карточки, элементы интерфейса, текст, кнопки, границы и кольцо фокуса.
  • background
  • foreground
  • card
  • card-foreground
  • chrome
  • primary
  • primary-foreground
  • secondary
  • secondary-foreground
  • muted
  • muted-foreground
  • accent
  • accent-foreground
  • control-on
  • control-on-foreground
  • destructive
  • destructive-foreground
  • border
  • input
  • rule
  • ring
Статус6Состояния агента и цвет информации.
  • status-blocked
  • status-working
  • status-done
  • status-idle
  • status-unknown
  • status-info
Синтаксис6Цвета текста в diff и коде.
  • syntax-keyword
  • syntax-string
  • syntax-constant
  • syntax-property
  • syntax-entity
  • syntax-comment
Идентификация хоста10Цвета для различения ваших машин.
  • host-0
  • host-1
  • host-2
  • host-3
  • host-4
  • host-5
  • host-6
  • host-7
  • host-8
  • host-9

Форма и оформление

Блок surface содержит десять слов. Каждое выбирается из закрытого списка, а пропущенный токен сохраняет значение по умолчанию, первое слово своего списка. Произвольные числа не принимаются, поэтому тема не может нарушить размер области нажатия.

radius
Угол карточки, строки, поля и кнопки.
  • sharp
  • soft
  • round
shadow
Тень под приподнятыми панелями.
  • default
  • flat
  • lifted
density
Объем пространства внутри элементов управления и между ними.
  • default
  • roomy
weight
Насколько насыщенно отображается текст medium и semibold.
  • default
  • bold
border
Толщина тонкой линии.
  • default
  • strong
ground
Фон под всеми элементами: сплошной цвет, мягкий градиент или мелкая зернистость.
  • flat
  • gradient
  • grain
chrome
Заголовок и панели: на цвете страницы или на отдельной полосе.
  • page
  • band
rows
Список в виде одной группы в рамке с разделителями или в виде карточки для каждой строки.
  • rules
  • cards
icons
Толщина линий всех иконок.
  • default
  • thin
  • heavy
labels
Мелкие подписи разделов: прописными буквами или как в предложении.
  • caps
  • sentence

Палитра терминала

Блок ansi содержит 18 цветов или не содержит ни одного: 16 цветов терминала, ink и ground. Каждый задается как #rrggbb или oklch(L C H) и проходит проверку.

Значения
Значение является цветом: #rrggbb, #rrggbbaa или oklch(L C H), с / A для прозрачности. L принимает значения от 0 до 1, C от 0 до 0.5 и H от 0 до 360, в виде обычных чисел.
Половины
Укажите light, dark или обе половины. Пропущенная половина заполняется из Collie, токен за токеном.
Шрифты
Необязательный параметр fonts.ui задает один из шрифтов, встроенных в ColliePWA. Необязательный параметр fonts.display задает шрифт для заголовков. Другие шрифты не принимаются.
Что отклоняется
Ключ не из списка, version отличная от 1 или 2, значение, не являющееся цветом или словом формы, var(), url() или любая другая функция, id встроенной темы, а также файл размером более 64 KiB. Сообщение указывает причину, и изменения не применяются.
Версия
Значение version: 1 или 2. В файле с блоком surface, начертанием fonts.display или блоком ansi указывается 2. Для файла версии 2 требуется ColliePWA 1.22.0 или новее.

05/Поделиться

Экспорт и обмен.

Экспорт сохраняет активную тему в виде файла .collie-theme.json. Отправьте его кому-либо или сохраните в репозитории, и файл можно будет импортировать так же, как вы это сделали.

Подробности в Темы