DigitableCourses
Настройки портала
Показать возможности портала

Локально и без аккаунта. Аккаунта нет, регистрация не нужна: введённое в инструменты остаётся в localStorage браузера и на сервер не уходит.

Свой счётчик считает открытия страниц и дочитывания: уезжает адрес и десятая доля текста. Без cookies и чужих счётчиков, IP не хранится, Do Not Track уважается. Как это проверить

Репозиторий портала не выложен, «открытым кодом» мы его не зовём. Открыто это:

Живёт портал на донатах, платных консультациях и разборах по запросу и покупке Workbench.

Планов делать курсы платными нет.

Digitable Focus · v0.1.0

Каталог интеграций

Все 53 целей Digitable Focus с инструкциями и самими конфигами: отфильтруйте по категории, найдите свой инструмент по названию и посмотрите, как палитра ложится в его интерфейс. Ставить и настраивать это руками можно бесплатно — покупают собранный архив.

Каталог

53 целей. Одна палитра во всех.

Carbon, Paper и Signal собираются из одного набора токенов, поэтому в терминале, редакторе, git-диффе и мессенджере это буквально одни и те же цвета в одних и тех же ролях: фон, акцент, строка, ключевое слово, ошибка. Выбираете палитру один раз — дальше она повторяется в каждой интеграции.

  • Carbonосновная тёмная
  • Paperсветлая рабочая
  • Signalвысокий контраст

Открыты не только инструкции: в каждой карточке лежат сами конфиги — все три палитры, целиком, с кнопкой «Скопировать». Собрать себе Digitable Focus руками можно бесплатно и без покупки. Платят за собранный архив: 47 готовых наборов файлов из одного источника токенов, Compendium, шаблоны и установщик, который раскладывает всё это по каталогам сам.

Терминалы и мультиплексоры12

Палитра приходит файлом схемы или строкой include. Мультиплексоры красят только свою обвязку — ANSI-цвета остаются за эмулятором, поэтому tmux и Zellij ставят в пару с терминалом.

Alacrittyпресет цветов через import

В архиве: 3 файла .toml

  1. Скопируйте .toml-файлы в ~/.config/alacritty/.
  2. Подключите один пресет из своего alacritty.toml.
    import = ["~/.config/alacritty/digitable-focus-carbon.toml"]

Конфиги кладутся в ~/.config/alacritty/

Сохраните файл — Alacritty перечитывает конфиг сам. Чтобы сменить палитру, замените имя файла в строке import на digitable-focus-paper.toml или digitable-focus-signal.toml.

Ghosttyтема по имени файла

В архиве: 3 файла без расширения

  1. Создайте ~/.config/ghostty/themes/ и скопируйте туда все три файла. Расширения у них нет намеренно: для Ghostty имя файла и есть имя темы.
  2. Добавьте одну строку в ~/.config/ghostty/config: theme = digitable-focus-carbon.
  3. Перезагрузите конфиг: cmd+shift+, на macOS, ctrl+shift+, на Linux.

Конфиги кладутся в ~/.config/ghostty/themes/

На macOS конфиг лежит в ~/Library/Application Support/com.mitchellh.ghostty/config, темы — в папке themes рядом с ним. Одна строка умеет следовать системной теме: theme = light:digitable-focus-paper,dark:digitable-focus-carbon. Проверить, что Ghostty видит файлы: ghostty +list-themes.

GNOME Terminalскрипты записи dconf

В архиве: 3 скрипта .sh

  1. Сохраните текущие настройки: dconf dump /org/gnome/terminal/ > gnome-terminal-backup.dconf.
  2. Скопируйте скрипты куда угодно, например в ~/.local/share/digitable-focus/.
  3. Примените палитру к профилю по умолчанию: sh digitable-focus-carbon.sh.
  4. Откройте новую вкладку. Уже открытые перекрашиваются сразу.

Конфиги кладутся в любой каталог, например ~/.local/share/digitable-focus/ — файл запускается, а не читается

GNOME Terminal не умеет импортировать файл темы: его цвета — это ключи dconf, поэтому палитра приходит скриптом. Конкретный профиль выбирается переменной: PROFILE_ID=... sh digitable-focus-paper.sh, список — gsettings get org.gnome.Terminal.ProfilesList list. Вернуть как было: dconf load /org/gnome/terminal/ < gnome-terminal-backup.dconf. GNOME Console (kgx) не поддерживается — у него нет ключей палитры.

Hyperмодуль для .hyper.js

В архиве: 3 файла .js

  1. Скопируйте .js-файлы рядом с ~/.hyper.js.
  2. Подключите один из них через require и Object.assign, затем сохраните: Hyper перечитывает конфиг при сохранении, cmd/ctrl+shift+r форсирует перезагрузку.
    const focus = require('./digitable-focus-carbon.js')
    
    module.exports = {
      config: Object.assign({}, focus, {
        fontSize: 13
      }),
      plugins: [],
      localPlugins: []
    }

Конфиги кладутся в рядом с ~/.hyper.js

У Hyper нет формата темы: ~/.hyper.js — это обычный JavaScript, поэтому палитра приходит модулем. Второй путь — открыть файл, скопировать всё внутри module.exports и вставить в объект config, заменив цветовые ключи. Свои переопределения ставьте после палитры в Object.assign, тогда выигрывают они.

iTerm2пресет Color Presets

В архиве: 3 файла .itermcolors

  1. Откройте iTerm2 → Settings → Profiles → Colors.
  2. В списке Color Presets... выберите Import... и укажите файлы — можно импортировать все три сразу.
  3. Снова откройте Color Presets... и выберите Digitable Focus Carbon.

Конфиги кладутся в импорт в Settings → Profiles → Colors → Color Presets

Двойной клик по .itermcolors в Finder тоже импортирует пресет. Каждый профиль хранит свой: Carbon можно повесить на рабочий профиль, Paper — на профиль для светлой комнаты, и переключаться через меню Profiles. У всех терминальных целей Digitable Focus одна ANSI-раскладка: magenta берётся из фиолетового палитры, cyan — из акцента, bright cyan — из мягкого акцента.

Kittyinclude в kitty.conf

В архиве: 3 файла .conf

  1. Скопируйте .conf-файлы в ~/.config/kitty/.
  2. Добавьте один include в конец ~/.config/kitty/kitty.conf: include digitable-focus-carbon.conf.
  3. Перечитайте конфиг: ctrl+shift+f5 или перезапуск Kitty.

Конфиги кладутся в ~/.config/kitty/

Держите ровно один include. Kitty применяет последнее прочитанное значение, поэтому include в конце файла перекрывает ваши цветовые настройки выше. Смена палитры — заменить имя файла в строке include и перечитать конфиг.

Konsoleцветовая схема профиля

В архиве: 3 файла .colorscheme

  1. Скопируйте .colorscheme-файлы в ~/.local/share/konsole/ — до того, как откроете настройки: Konsole пересканирует папку только при открытии диалога.
  2. Settings → Configure Konsole → Profiles, откройте профиль на редактирование.
  3. На вкладке Appearance выберите Digitable Focus Carbon.
  4. Нажмите OK — открытые вкладки перекрашиваются сразу.

Конфиги кладутся в ~/.local/share/konsole/

Цвет курсора и выделения Konsole хранит в профиле, а не в цветовой схеме. Чтобы они совпали с палитрой, выставьте курсор в акцентный цвет там же, на вкладке Appearance. Под каждую палитру удобно завести отдельный профиль и переключаться через File → New Tab.

Tabbyблок colorScheme в конфиге

В архиве: 3 файла .yaml и schemes.json

  1. Откройте Settings → Config file или правьте ~/.config/tabby/config.yaml (в Windows — %APPDATA%\tabby\config.yaml).
  2. Замените блок terminal.colorScheme содержимым одного .yaml-файла. Если ключа terminal: ещё нет, вставьте блок целиком.
  3. Сохраните — Tabby перечитывает конфиг и перекрашивает открытые вкладки.

Конфиги кладутся в блок terminal.colorScheme в ~/.config/tabby/config.yaml

Отступы важны: colorScheme стоит на два пробела внутри terminal. Tabby держит ровно одну активную схему, остальные два файла остаются пресетами на будущее. Файл schemes.json содержит те же три схемы массивом — в той форме, которую ждут плагины Tabby, если захотите собрать из них плагин.

tmuxстатус-строка и рамки панелей

В архиве: 3 файла .conf

  1. Скопируйте .conf-файлы в ~/.config/tmux/.
  2. Подключите один из ~/.tmux.conf: source-file ~/.config/tmux/digitable-focus-carbon.conf.
  3. Перечитайте без перезапуска: tmux source-file ~/.tmux.conf.

Конфиги кладутся в ~/.config/tmux/

tmux не владеет ANSI-палитрой — поставьте тему и для своего эмулятора терминала. Статус-строка использует 24-битный цвет; если он выглядит плоским, добавьте set -g default-terminal "tmux-256color" и set -ag terminal-overrides ",*256col*:RGB". Конструкция #{?client_prefix,...} требует tmux 2.3 или новее.

WezTermcolor_scheme из каталога

В архиве: 3 файла .toml

  1. Создайте ~/.config/wezterm/colors/ и скопируйте туда .toml-файлы.
  2. Укажите каталог и схему в ~/.config/wezterm/wezterm.lua и сохраните файл — WezTerm перечитывает конфигурацию автоматически.
    local wezterm = require 'wezterm'
    local config = wezterm.config_builder()
    
    config.color_scheme_dirs = { wezterm.home_dir .. '/.config/wezterm/colors' }
    config.color_scheme = 'Digitable Focus Carbon'
    
    return config

Конфиги кладутся в ~/.config/wezterm/colors/

Имя схемы берётся из блока [metadata], а не из имени файла: Digitable Focus Carbon, Digitable Focus Paper, Digitable Focus Signal. Чтобы следовать системной теме, оставьте оба варианта и переключайте их по wezterm.gui.get_appearance().

Windows Terminalсхемы в settings.json

В архиве: schemes.json

  1. Откройте настройки Windows Terminal в виде JSON.
  2. Скопируйте объекты из schemes.json в массив schemes.
  3. Выберите схему в нужном профиле.

Конфиги кладутся в массив schemes в settings.json Windows Terminal

Zellijстатус-бар, вкладки, рамки

В архиве: 3 файла .kdl

  1. Создайте ~/.config/zellij/themes/ и скопируйте туда .kdl-файлы.
  2. Назовите тему в ~/.config/zellij/config.kdl: theme "digitable-focus-carbon".
  3. Перезапустите Zellij или проверьте, что тема найдена: zellij setup --check.

Конфиги кладутся в ~/.config/zellij/themes/

Zellij не владеет ANSI-палитрой — поставьте тему и для эмулятора терминала. Имя темы — это имя блока внутри файла, а не имя файла; здесь они намеренно совпадают. Для однострочного статуса добавьте default_layout "compact" и pane_frames false.

CLI-инструменты16

Здесь палитра приходит переменной окружения, фрагментом конфига или файлом скина. Несколько целей связаны: тема bat лежит в кэше, из которого её читает git-delta. Одна карточка выбивается из ряда намеренно: Уроборос — не палитра, а открытый инструмент Digitable, и стоит он здесь потому, что это программа командной строки.

batподсветка в пейджере

В архиве: 3 файла .tmTheme

  1. Скопируйте .tmTheme-файлы в "$(bat --config-dir)/themes" — обычно это ~/.config/bat/themes. В Debian и Ubuntu бинарь называется batcat.
  2. Пересоберите кэш: bat cache --build.
  3. Выберите тему: export BAT_THEME="Digitable-Focus-Carbon" или строка --theme="Digitable-Focus-Carbon" в ~/.config/bat/config.

Проверка bat --list-themes | grep Digitable

Конфиги кладутся в $(bat --config-dir)/themes, обычно ~/.config/bat/themes/

bat опознаёт тему по имени файла, поэтому темы называются Digitable-Focus-Carbon, Digitable-Focus-Paper, Digitable-Focus-Signal. Тема дотягивается и до git-delta: delta читает кэш тем bat, поэтому syntax-theme начинает работать сразу после bat cache --build. Проверено на bat 0.24 (syntect 5). Файлы — обычные .tmTheme-плисты Sublime Text и грузятся в него тоже.

bpytopтема монитора на Python

В архиве: 3 файла .theme

  1. Скопируйте .theme-файлы в ~/.config/bpytop/themes/, создав папку, если её нет.
  2. Запустите bpytop, нажмите Esc → Options → color_theme и выберите тему стрелками.
  3. Или задайте её без меню, в ~/.config/bpytop/bpytop.conf.
    color_theme="+digitable-focus-carbon"
    theme_background=True
    truecolor=True

Проверка grep color_theme ~/.config/bpytop/bpytop.conf

Конфиги кладутся в ~/.config/bpytop/themes/

Плюс в начале имени — не опечатка: bpytop сам приписывает его каждой теме из пользовательской папки, поэтому color_theme="digitable-focus-carbon" без плюса не находит ничего и молча откатывается на Default. Оставьте theme_background=True: при False bpytop игнорирует main_bg и берёт фон терминала. truecolor=True тоже нужен, иначе он сам сожмёт каждый цвет до 256-цветной палитры. Если вид остался штатным, загляните в ~/.config/bpytop/error.log — неразобранный цвет пишется туда и пропускается, а на экране об этом не сообщают. Формат достался от bashtop и читается btop, но программы настраиваются раздельно: bpytop читает ~/.config/bpytop/, btop — ~/.config/btop/ и ждёт имя темы без плюса; если стоят обе, ставьте и обе цели. Написано под bpytop 1.0.68.

btopтема системного монитора

В архиве: 3 файла .theme

  1. Скопируйте .theme-файлы в ~/.config/btop/themes/, создав папку, если её нет.
  2. Запустите btop, нажмите Esc → Options → color_theme и выберите тему стрелками.
  3. Или задайте её без меню, в ~/.config/btop/btop.conf.
    color_theme = "digitable-focus-carbon"
    theme_background = True
    truecolor = True

Конфиги кладутся в ~/.config/btop/themes/

Оставьте theme_background = True: при False btop игнорирует main_bg и берёт фон терминала. Рамки блоков становятся фиолетовыми, зелёными, оранжевыми и синими, выбранная строка процесса рисуется акцентом. Написано под btop 1.3; набор ключей темы не меняется с 1.0, а старые темы bashtop используют тот же синтаксис theme[...], только с меньшим числом ключей.

git-deltaцвета диффов git

В архиве: 3 файла .gitconfig

  1. Сначала поставьте тему bat: значение syntax-theme ссылается на неё, а delta читает кэш тем bat.
  2. Скопируйте .gitconfig-файлы в ~/.config/git/.
  3. Подключите нужную фичу в ~/.gitconfig.
    [include]
        path = ~/.config/git/digitable-focus-carbon.gitconfig
    [core]
        pager = delta
    [interactive]
        diffFilter = delta --color-only
    [delta]
        features = digitable-focus-carbon
    [merge]
        conflictstyle = zdiff3
    [diff]
        colorMoved = default

Проверка git config --get delta.features && delta --show-config | head -20

Конфиги кладутся в ~/.config/git/

Предупреждение Unknown theme означает, что темы bat ещё нет в кэше: выполните bat cache --build или уберите строку syntax-theme. Цвета диффа работают в любом случае — меняется только подсветка кода внутри него. Команда delta --list-syntax-themes помечает все пользовательские темы как dark, включая Paper: светлую тему delta определяет по своему захардкоженному списку имён. Работает строка light = true, которая в Paper уже стоит. Проверено на delta 0.16.5: merge-conflict-* требует 0.10+, grep-file-style — 0.13+.

ezaцвета листинга каталога

В архиве: 3 палитры, .sh и .fish

  1. Скопируйте нужный файл в ~/.config/eza/.
  2. Bash или zsh — добавьте source ~/.config/eza/digitable-focus-carbon.sh в rc-файл. fish — скопируйте .fish-файл в ~/.config/fish/conf.d/.
  3. Откройте новую оболочку.

Проверка eza --long --header --git --total-size

Конфиги кладутся в ~/.config/eza/, вариант .fish — в ~/.config/fish/conf.d/

EZA_COLORS переопределяет умолчания eza по ключам и применяется поверх LS_COLORS, поэтому ваши цвета расширений продолжают работать. Строка заголовка подчёркивается акцентом, каталоги идут акцентом и жирным, колонка размера растёт от зелёного к красному, git-флаги следуют added/modified/deleted. Если ничего не изменилось, терминал скорее всего не в 24-битном режиме: echo $COLORTERM должен показать truecolor или 24bit. Написано под eza 0.18; для старого exa подходит тот же текст под именем EXA_COLORS.

fastfetchцвета информационной заставки

В архиве: 3 файла .jsonc

  1. Положите один файл на место конфига: mkdir -p ~/.config/fastfetch && cp digitable-focus-carbon.jsonc ~/.config/fastfetch/config.jsonc.
  2. Уже есть свой config.jsonc — перенесите в него блоки logo.color и display: палитру несут они. Массив modules внизу файла нужен только затем, чтобы цветам было что красить; удалите его, и fastfetch вернётся к своему списку модулей.
  3. Запустите fastfetch.

Проверка fastfetch --version && fastfetch

Конфиги кладутся в ~/.config/fastfetch/config.jsonc

Цвета записаны как #rrggbb, а это требует fastfetch 2.42.0. На более старой сборке замените каждый "#rrggbb" на ближайший индекс палитры из комментария в шапке файла — либо в форме "@51" (2.57.0+), либо сырыми параметрами SGR "38;5;51", которые принимает любая версия. Цвет задаётся в трёх местах намеренно: logo.color красит ASCII-арт, display.color — ключи, заголовок, вывод и разделитель, а keyColor у каждого модуля; именно последний заставляет строки перебирать палитру, а не делить один акцент. display.brightColor выключен намеренно: по умолчанию он включён и добавляет ключам, заголовку и логотипу яркий атрибут, который во многих терминалах подменяется другим цветом и разваливает палитру. Целью стал fastfetch, а не neofetch, потому что neofetch заброшен, — но палитра переносится и туда: он понимает только индексы ANSI, и они лежат в том же комментарии, строками colors=(44 66 23 75 66 231) и ascii_colors=(44 75 119 215 135 203) в ~/.config/neofetch/config.conf. Файлы сверены со схемой doc/json_schema.json самого fastfetch.

fishцвета оболочки и пейджера

В архиве: 3 файла .fish

  1. Скопируйте один файл в ~/.config/fish/conf.d/.
  2. Откройте новую оболочку: exec fish.

Проверка set -S fish_color_command

Конфиги кладутся в ~/.config/fish/conf.d/

Держите в conf.d/ ровно один файл Digitable Focus — выигрывает загруженный последним. Если цвета не изменились, ранее выбранная тема осталась в universal-переменных: глобальные значения их затеняют, но вычистить старое можно циклом set --erase --universal по именам fish_*color_*. Написано под fish 3.6+: fish_color_keyword требует 3.2, fish_color_option — 3.5, переменные пейджера — 3.4; более старый fish просто игнорирует незнакомые. fish_pager_color_background намеренно не задан, чтобы пейджер сохранял фон терминала.

fzfцвета интерактивного поиска

В архиве: 3 палитры, .sh и .fish

  1. Скопируйте нужный файл в ~/.config/fzf/.
  2. Bash или zsh — добавьте source ~/.config/fzf/digitable-focus-carbon.sh в rc-файл. fish — скопируйте .fish-файл в ~/.config/fish/conf.d/.
  3. Откройте новую оболочку, чтобы переменная экспортировалась.

Проверка ls | fzf

Конфиги кладутся в ~/.config/fzf/, вариант .fish — в ~/.config/fish/conf.d/

Ставьте строку source после любых других присваиваний FZF_DEFAULT_OPTS: файл перезаписывает переменную, а не дополняет её. fzf завершается с unknown color name, если ключ не поддерживается, поэтому чистый запуск и есть проверка. Требуется fzf 0.36+: label и separator появились в 0.35, scrollbar — в 0.36. Новые ключи selected-fg и list-bg (0.52+) намеренно не используются, чтобы одна строка работала на разных версиях.

k9sскин Kubernetes-панели

В архиве: 3 файла .yaml

  1. Узнайте пути: k9s info.
  2. Скопируйте скины в каталог skins, который он показал, обычно ~/.config/k9s/skins/ — создайте его, если папки нет.
  3. Назовите скин в ~/.config/k9s/config.yaml — значение равно имени файла без расширения, — и перезапустите k9s.
    k9s:
      ui:
        skin: digitable-focus-carbon

Конфиги кладутся в ~/.config/k9s/skins/

Расширение обязательно .yaml: k9s собирает путь как skins/<name>.yaml и файл .yml не найдёт. Чтобы скинить только один кластер, положите то же значение в k9s.contexts.<context>.skin. Если k9s стартует со штатными цветами — имя файла и значение skin разошлись, либо файл лёг рядом с config.yaml, а не внутрь skins/. Раскладка «один файл на скин» появилась в k9s 0.30 вместе с переездом на XDG; на более старой сборке тот же документ работает после переименования файла.

lazygitцвета панелей git-TUI

В архиве: 3 фрагмента .yml

  1. Найдите каталог конфига: lazygit --print-config-dir, обычно ~/.config/lazygit.
  2. Влейте блок gui.theme из одного файла в тамошний config.yml. Если ключа gui: там ещё нет, вставьте фрагмент как есть.
  3. Перезапустите lazygit — конфиг он читает при старте.

Конфиги кладутся в блок gui.theme в ~/.config/lazygit/config.yml

Держите один ключ gui: — YAML берёт последний дубликат и молча выкидывает первый. Ошибка did not find expected key означает неверный отступ: gui должен стоять в нулевой колонке. Написано под lazygit 0.42+, каждый ключ сверен со схемой ThemeConfig. Ключ inactiveViewSelectedLineBgColor существует только с 0.43 и поэтому идёт закомментированным; selectedRangeBgColor убран после 0.40 и не выводится вовсе. lazygit отвергает незнакомые ключи темы, так что не переносите ключи из более новой версии в старый конфиг.

lfцвета файлового менеджера

В архиве: 3 палитры: .colors и .lfrc

  1. Скопируйте список цветов под тем именем, которого требует lf, — своего он не примет: mkdir -p ~/.config/lf && cp digitable-focus-carbon.colors ~/.config/lf/colors.
  2. Положите рядом фрагмент для остального интерфейса: cp digitable-focus-carbon.lfrc ~/.config/lf/digitable-focus.lfrc.
  3. Подключите его одной строкой в ~/.config/lf/lfrc: source ~/.config/lf/digitable-focus.lfrc.
  4. Перезапустите lf.

Проверка lf -log /tmp/lf.log && grep -i error /tmp/lf.log

Конфиги кладутся в ~/.config/lf/

Файл colors красит список файлов, .lfrc — то, до чего список не дотягивается: приглашение, строки под курсором, рамки, линейку, статус и метки. colors — последний из пяти источников цвета lf (умолчания, LSCOLORS, LS_COLORS, LF_COLORS, файл), поэтому он выигрывает у вашего LS_COLORS. Те же пары работают и переменной, через двоеточие: export LF_COLORS="di=01;38;2;0;229;229:fi=38;2;245;247;250". Имя colors одно на всю установку, так что смена палитры — перезаписать оба файла. Цвета записаны 24-битными параметрами 38;2;R;G;B; терминал, объявивший меньше цветов, получит ближайшее приближение, а если 24 бита он умеет, но не объявляет — помогает COLORTERM=truecolor. На тёмных палитрах cursoractivefmt задаёт только фон, поэтому под курсором каталог остаётся акцентным, а исполняемый файл зелёным; на светлой там закреплён цвет текста — на бумаге любой заметный оттенок подложки стоил бы одному из цветов файлов его 4,5:1. Иконки в lf — отдельный механизм (LF_ICONS или ~/.config/lf/icons), тема их не трогает. Написано под lf r31, где появились borderfmt, statfmt и rulerfmt; cursoractivefmt и соседние ключи требуют r29. В r41 rulerfmt по умолчанию пуст, в r42 rulerfmt и statfmt объявлены устаревшими — они ещё работают, но на таких сборках последние две строки фрагмента можно убрать.

Уроборосзапись о каждом вызове настоящего запускабесплатный гайд

Открыто: инструкция, три способа установки и разбор записи, общий для шести языков

  1. Поставьте инструмент любым из трёх способов. Homebrew: brew install digitable-lol/tap/ouroboros — короткая строка подключает хранилище формул сама и доставляет Python. Через uv: uv tool install git+https://github.com/digitable-lol/ouroboros. Через asdf: asdf plugin add ouroboros и asdf install ouroboros 0.4.0. Любой из трёх ставит две программы — ouroboros и ouroboros-mcp.
  2. Допишите в исходник запись о вызовах: ouroboros wrap-file stats.py. Рядом появится помощник ouroboros_runtime.py; он ввозится только из стандартной библиотеки, ставить ничего не нужно. Горячий файл целиком обмазывать не стоит — нужные записи утонут, поэтому есть выбор по именам: ouroboros wrap-functions parser.c parse_header parse_body.
  3. Запустите программу как обычно — python3 stats.py. Рядом появится debug.info: по две строки JSON на вызов, на входе и на выходе, связанные общим номером.
    {"p":"in","t":"2026-08-28T23:39:45.166","id":"e668ee33-…","fn":"average","a":"[12, 30, 18]","k":""}
    {"p":"out","id":"e668ee33-…","fn":"average","r":"20.0","d":2e-06}
  4. Читайте записи тем же инструментом: ouroboros trace debug.info --outcome raised покажет, что было брошено и с какими доводами, ouroboros trace-stats debug.info — сводку по всем вызовам. Всего команд семнадцать, список — ouroboros --help.
  5. Прогоните свои проверки на обмазанном коде, а не только на исходном. Обмазка — это правка исходника, и она умеет менять поведение программы, а не только время её работы. Не хотите трогать рабочее дерево — заведите отдельный черновик: ouroboros create, затем write, execute и finish.

Проверка ouroboros trace-stats debug.info

Инструмент и гайд открыты, как Digit: покупать Workbench ради них не нужно, лицензия BSD 2-Clause. Языков шесть — Python, JavaScript/TypeScript, C, C++, Elixir, Go, — и схема записи у всех одна. Умеет работать сервером MCP: ouroboros-mcp, семнадцать инструментов. Цена снята прогоном: добавка на вызов 63,5 мкс у Python, 20,3 у JavaScript, 19,8 у C, 22,0 у C++, 30,0 у Go и 179,7 у Elixir, от 238 до 270 байт на вызов при коротких доводах. Польза тоже измерена, и она узкая: на шестистах ответах модели о том, что программа сделала на конкретном запуске, доля верных выросла с 61,0 до 83,0 %, а доля уверенно неверных упала с 38,7 до 17,0 %; но вся прибавка приходится на вопросы о значениях (46,4 → 84,3 %), а на вопросе «вызывалась ли функция вообще» обе доли равны 100 % — там запись не даёт ничего. Что остаётся платой, а не поломкой: C++ не записывает возвращённый объект классового типа, иначе теряется пропуск копирования; имён доводов нет в записи ни у одного языка; обмазка Python добавляет кадр стека на вызов, поэтому глубокая рекурсия мельчает вдвое. Написано под 0.4.0.

Powerlevel10kцвета сегментов промпта

В архиве: 3 файла .p10k.zsh

  1. Скопируйте один файл в ~/.config/p10k/. Если ~/.p10k.zsh ещё нет, сначала выполните p10k configure и выберите любой стиль.
  2. Допишите строку в самый конец ~/.p10k.zsh. Порядок обязателен: файл начинается с того, что сбрасывает все параметры POWERLEVEL9K_*, и строка выше по файлу была бы стёрта.
    source ~/.config/p10k/digitable-focus-carbon.p10k.zsh
  3. Перезагрузите промпт: source ~/.p10k.zsh или exec zsh.

Проверка typeset -p POWERLEVEL9K_DIR_FOREGROUND

Конфиги кладутся в ~/.config/p10k/

Файлы задают только POWERLEVEL9K_*_FOREGROUND для сегментов, которые p10k несёт сам: раскладка, иконки, разделители и набор сегментов остаются вашими. Цвета записаны как #rrggbb — p10k передаёт их zsh как %F{#rrggbb}, а это требует zsh 5.7.1 и терминала с truecolor. Проверить можно так: print -P '%F{#ff0000}red%f' должен напечатать красное слово, а не текст. Если печатает текст, поставьте перед строкой source переключатель DIGITABLE_FOCUS_P10K_256=1 — каждая роль получит ближайший индекс xterm-256. Фрагмент выставляет POWERLEVEL9K_BACKGROUND=, то есть прозрачные сегменты, как в стилях lean и pure: фон приходит от терминала. На rainbow и classic, где заливается каждый сегмент, эту строку надо удалить и расставить _BACKGROUND по сегментам самому — цвета текста здесь посчитаны на контраст с фоном палитры, а не с произвольной заливкой. Написано под Powerlevel10k 1.20.17; hex понимает 1.15 и новее, более старые релизы берут только индексы.

starshipпалитра ролей в промпте

В архиве: 3 файла .toml

  1. Сохраните текущий конфиг: cp ~/.config/starship.toml{,.bak}.
  2. Скопируйте один файл поверх или допишите его содержимое, если модули уже настроены. Строка palette = "..." должна остаться одна, вверху файла.
  3. Перезагрузите оболочку.

Проверка starship print-config | head -20

Конфиги кладутся в ~/.config/starship.toml

В каждом файле есть блок [palettes.digitable_focus_*], поэтому стили модулей записаны ролями: accent, info, ok, warn, alert, magic, danger, muted, subtle. Чтобы оставить свой промпт и взять только цвета, скопируйте строку palette и блок [palettes.*], а дальше используйте имена ролей в своих значениях style. Символы — обычный ASCII, Nerd Font не нужен. Именованные палитры — фича starship 1.16; на более старой версии промпт работает, но роли падают в цвет терминала по умолчанию.

vifmцветовая схема файлового менеджера

В архиве: 3 файла .vifm

  1. Скопируйте .vifm-файлы в ~/.config/vifm/colors/, создав папку, если её нет. На сборке со старой раскладкой каталог другой: ~/.vifm/colors/.
  2. Примерьте прямо в работающей программе: :colorscheme digitable-focus-carbon.
  3. Чтобы схема осталась, добавьте ту же строку без двоеточия в ~/.config/vifm/vifmrc: colorscheme digitable-focus-carbon.

Проверка vifm --version | head -1

Конфиги кладутся в ~/.config/vifm/colors/

Каждое правило несёт и индекс xterm-256, и точное 24-битное значение, но gui*-значения vifm читает только тогда, когда terminfo объявляет прямой цвет, — обычно это запуск TERM=xterm-direct vifm. Без него берутся cterm*-индексы, каждый из которых уже посчитан как ближайшая запись куба 6x6x6 или серой шкалы; больше менять ничего не нужно. Что схема применилась, видно по :highlight Directory: guifg там равен акценту палитры. На тёмных палитрах правило CurrLine задаёт только фон, поэтому под курсором файл сохраняет свой цвет — каталог остаётся акцентным, исполняемый файл зелёным; на светлой там закреплён цвет текста, потому что на бумаге любой заметный оттенок подложки стоил бы одному из цветов файлов его 4,5:1. Хотите, чтобы сквозь vifm просвечивал фон терминала, — замените ctermbg= и guibg= в строке Win на default. Написано под vifm 0.12 и требует 0.11: группы HardLink, LineNr и OddLine появились в 0.11, TabLine и TabLineSel — в 0.10. Незнакомую группу vifm не пропускает, а отвергает, поэтому на более старой сборке соответствующие строки нужно удалить.

zshподсветка ввода и промпт

В архиве: 3 файла .zsh

  1. Поставьте zsh-syntax-highlighting, если его ещё нет: git clone https://github.com/zsh-users/zsh-syntax-highlighting ~/.zsh/zsh-syntax-highlighting.
  2. Скопируйте файл палитры в ~/.config/zsh/.
  3. Добавьте две строки в конец ~/.zshrc именно в этом порядке — плагин должен подключаться первым, он ставит свои хуки и умолчания, а наш файл перекрывает их следом.
    source ~/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
    source ~/.config/zsh/digitable-focus-carbon.zsh
  4. Перезагрузите оболочку: exec zsh.

Конфиги кладутся в ~/.config/zsh/

Файлы задают ZSH_HIGHLIGHT_STYLES, цвета редактора строки (zle_highlight), цвета списка автодополнения и двухстрочный промпт на vcs_info. Уже используете Powerlevel10k, oh-my-posh или starship — удалите секцию # Prompt внизу файла, остальное оставьте. Цвета записаны как fg=#rrggbb: это понимает zsh 5.3 и новее, более старый выведет текст вместо цвета. italic намеренно не используется — его поддержка зависит и от сборки zsh, и от терминала.

Редакторы и IDE8

Полноценные схемы: интерфейсные скоупы, синтаксис, диагностика LSP и гаттеры диффа. Ставятся штатным импортом схемы или копированием файла в каталог тем — сторонние менеджеры плагинов не нужны.

Emacsdeftheme со шрифт-локом

В архиве: 3 файла -theme.el

  1. Скопируйте темы в каталог, о котором знает Emacs: mkdir -p ~/.emacs.d/themes && cp *-theme.el ~/.emacs.d/themes/.
  2. Зарегистрируйте каталог в init-файле и загрузите тему.
    (add-to-list 'custom-theme-load-path "~/.emacs.d/themes/")
    (load-theme 'digitable-focus-carbon t)
  3. Или попробуйте одну интерактивно: M-x load-theme RET digitable-focus-paper.

Конфиги кладутся в ~/.emacs.d/themes/

Покрыты встроенные лица, font-lock (включая лица Emacs 29 для чисел, операторов и скобок), диффы, Flymake и Flycheck, Org, Markdown, Dired и популярные всплывающие списки автодополнения. Перед загрузкой другой темы отключите предыдущую: M-x disable-theme RET digitable-focus-carbon. Требуется Emacs 26 или новее; атрибут :extend в диффах и Org-блоках — Emacs 27.

Helixтема ui и синтаксиса

В архиве: 3 файла .toml

  1. Скопируйте темы: mkdir -p ~/.config/helix/themes && cp *.toml ~/.config/helix/themes/.
  2. Выберите одну в ~/.config/helix/config.toml: theme = "digitable-focus-carbon".
  3. Или посмотрите вживую прямо в Helix: :theme digitable-focus-paper.

Конфиги кладутся в ~/.config/helix/themes/

Покрыты интерфейсные скоупы ui.*, синтаксические (keyword, function, string, type и далее), диагностика LSP и гаттеры диффа; каждый цвет объявлен один раз в секции [palette]. У Helix нет альфа-канала для цветов темы, поэтому цвет выделения задан непрозрачным тоном. Требуется Helix 23.10 или новее.

JetBrains IDEсхема редактора .icls

В архиве: 3 файла .icls

  1. Откройте Settings → Editor → Color Scheme.
  2. Нажмите шестерёнку рядом с именем схемы и выберите Import Scheme...
  3. Укажите один .icls-файл и подтвердите.
  4. Выберите импортированную схему в списке Scheme и примените.

Конфиги кладутся в импорт в Settings → Editor → Color Scheme или ~/.config/JetBrains/<Product><Version>/colors/

Альтернатива импорту — положить файлы в каталог конфигурации IDE и перезапустить её: ~/.config/JetBrains/<Product><Version>/colors/ в Linux, ~/Library/Application Support/JetBrains/<Product><Version>/colors/ в macOS. Тёмные схемы наследуются от Darcula, Paper — от светлой Default, поэтому всё, что схема не переопределяет, остаётся читаемым. Схема меняет только редактор: тему окна IDE переключают отдельно в Settings → Appearance. Проверено на IntelliJ IDEA, GoLand, PyCharm, WebStorm, RubyMine, CLion, Rider и Android Studio 2023.1 и новее.

Neovimcolorscheme на чистом Lua

В архиве: 3 файла в colors/

  1. Скопируйте схемы в каталог конфигурации: cp colors/*.lua ~/.config/nvim/colors/.
  2. Включите truecolor и выберите палитру в init.lua.
    vim.opt.termguicolors = true
    vim.cmd.colorscheme('digitable-focus-carbon')
  3. Или переключайтесь на ходу: :colorscheme digitable-focus-paper.

Конфиги кладутся в ~/.config/nvim/colors/

Менеджер плагинов не нужен. Покрыты встроенные синтаксические группы, захваты Treesitter (@function, @keyword, @string и далее), диагностика LSP и палитра :terminal. Paper выставляет background=light, остальные две — background=dark. Каждый файл дополнительно возвращает таблицу палитры, поэтому те же цвета может переиспользовать строка состояния. Требуется Neovim 0.9 или новее.

Sublime Textцветовая схема редактора

В архиве: 3 файла .sublime-color-scheme

  1. Откройте Preferences → Browse Packages...
  2. Скопируйте .sublime-color-scheme-файлы в открывшуюся папку User.
  3. Откройте Preferences → Select Color Scheme... (Ctrl+Shift+P / Cmd+Shift+P, затем UI: Select Color Scheme).
  4. Выберите Digitable Focus Carbon, Paper или Signal.

Конфиги кладутся в папка User из Preferences → Browse Packages...

Цвета лежат в блоке variables, поэтому форк правится сверху файла. Для Paper переключите ещё и интерфейс на светлый: Preferences → Theme..., иначе боковая панель останется тёмной при светлом редакторе. Требуется сборка Sublime Text 3149 или новее — это формат .sublime-color-scheme. Sublime Merge читает те же файлы из своего пакета User.

Vimcolorscheme с фолбэком 256 и подсветка FTS

В архиве: 5 файлов: colors/, syntax/, ftdetect/

  1. Скопируйте всё разом: cp -r colors syntax ftdetect ~/.vim/.
  2. Добавьте в ~/.vimrc включение termguicolors и выбор схемы.
    if has('termguicolors')
      set termguicolors
    endif
    colorscheme digitable-focus-carbon
  3. Или переключайтесь на ходу: :colorscheme digitable-focus-signal.
  4. Файлы .fts подхватятся сами — ftdetect ставит тип, syntax красит.

Конфиги кладутся в ~/.vim/

Каждый ctermfg и ctermbg — ближайший xterm-цвет из куба 6x6x6 (16-231) или серой шкалы (232-255), посчитанный из hex. Без termguicolors Vim падает на это 256-цветное приближение, поэтому схемы остаются пригодными по SSH. В светлом терминале берите Paper: он выставляет background=light. Подсветка FTS — единственная в наборе, которой нет ни в одном редакторе из коробки: .fts слишком молод, чтобы попасть в чужие грамматики. Роли в ней раскрашены по-разному намеренно: объявление вводит сущность, шаг вывода её использует, и различить их — первое, что делаешь, читая спецификацию. Приезжает сюда копией из репозитория языка digitable-lol/flang, каталог editors/vim-fts/ (ftdetect/fts.vim ставит тип, syntax/fts.vim красит). Проверять этот адрес нужно НА ТЕГЕ v0.4.7: в главной ветке и в выпуске, который ставит brew install digitable-lol/tap/flang, каталога editors/vim-fts больше нет — там editors/vim/, и красит он .flang, а не .fts. То есть копия здесь пережила свой источник: чинится это переносом схемы на .flang, а не правкой адреса.

VS Codeрасширение с тремя темами

В архиве: папка расширения

  1. Скопируйте папку в ~/.vscode/extensions/digitable.focus-0.1.0.
  2. Перезапустите VS Code.
  3. Откройте Preferences: Color Theme.
  4. Выберите Carbon, Paper или Signal.

Конфиги кладутся в ~/.vscode/extensions/digitable.focus-0.1.0/

Расширение не исполняет код и не собирает телеметрию.

Zedсемейство тем одним файлом

В архиве: digitable-focus.json

  1. Скопируйте файл семейства в папку тем: mkdir -p ~/.config/zed/themes && cp digitable-focus.json ~/.config/zed/themes/.
  2. Откройте выбор темы: Cmd+K Cmd+T на macOS или Ctrl+K Ctrl+T на Linux.
  3. Выберите Digitable Focus Carbon, Paper или Signal.

Конфиги кладутся в ~/.config/zed/themes/

Один файл содержит все три темы: хром рабочей области, редактор, ANSI-палитру терминала и стили синтаксиса. Zed перечитывает темы из этой папки при сохранении, поэтому правки видны в работающем редакторе сразу. Чтобы следовать системному переключателю, задайте оба варианта в ~/.config/zed/settings.json через "theme": { "mode": "system", "light": "Digitable Focus Paper", "dark": "Digitable Focus Carbon" }.

Приложения15

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

Chromeтема окна браузеранужен режим разработчика

В архиве: 3 папки расширения

Ручная досборка Chrome при каждом запуске показывает предупреждение «Отключить расширения в режиме разработчика», пока распакованная тема загружена. Чтобы оно исчезло, папку нужно упаковать (Pack extension на той же странице) и опубликовать в Chrome Web Store под собственным аккаунтом разработчика: локальный .crx, пришедший не из Store, Chrome ставить отказывается. Публикация — шаг покупателя, и регистрация в Web Store стоит разового взноса.

  1. Откройте chrome://extensions.
  2. Включите Developer mode справа сверху.
  3. Нажмите Load unpacked и выберите папку палитры — именно папку с manifest.json, а не сам файл.
  4. Тема применяется сразу.

Конфиги кладутся в любая папка, дальше Load unpacked в chrome://extensions

Цвета записаны RGB-триплетами: темы Chrome не принимают hex. Так же работает в Chromium, Brave, Vivaldi и других Chromium-браузерах — страница chrome://extensions там та же. Смена палитры — загрузить другую папку, Chrome держит одну тему. Удаление — chrome://extensions или Настройки → Внешний вид → Восстановить тему по умолчанию.

Dark Readerцвета затемнения сайтов

В архиве: 3 палитры: .json и .drfix.txt

  1. Откройте попап Dark Reader, шестерёнка → Manage settings.
  2. Нажмите Import Settings и выберите digitable-focus-<палитра>.json.
  3. Подтвердите предупреждение. В файле только ключ theme, поэтому списки сайтов, автоматизация и настройки синхронизации остаются вашими.
  4. Убедитесь, что движок стоит на Dynamic, а режим совпадает с палитрой: Dark для Carbon и Signal, Light для Paper.
  5. Акценты — необязательный шаг: попап → шестерёнка → Dark Reader developer tools → Dynamic Theme Editor. Первый блок начинается со строки из одной звёздочки, это глобальный фикс. Допишите объявления из секции CSS файла .drfix.txt в конец секции CSS этого блока и нажмите Apply.

Конфиги кладутся в импорт в попапе Dark Reader → Manage settings → Import Settings

Не заменяйте всё содержимое редактора фиксов: остальное — пофайловый список, который держит обычные сайты читаемыми. Динамический движок Dark Reader берёт из настроек только фон и цвет текста, поэтому акцент, ссылки, выделение и код приходят отдельным блоком фиксов. Цвета записаны как #rrggbb — другого формата Dark Reader не принимает, поэтому полупрозрачный слот selection сплющен до непрозрачного. Dark Reader меняет страницы, а не рамку браузера: для самого окна берите темы Firefox, Chrome или Thunderbird из этого же набора. Откат — Manage settings → Reset settings для цветов и Reset changes в редакторе для фиксов.

Digitable Chatтема веб-приложениянужна своя сборка или Stylus

В архиве: 3 файла .css

Ручная досборка У Digitable Chat нет настройки темы. Приложение отдаётся статикой, поэтому файл подключается либо строкой <link> в index.html вашего развёртывания, либо пользовательским стилем через расширение вроде Stylus. На чужом развёртывании — включая chat.digitable.life — работает только второй путь, и расширение ставит покупатель.

  1. Своя сборка: скопируйте один файл палитры в каталог, который сервер отдаёт как корень сайта, — рядом с index.html.
  2. Добавьте одну строку перед </head> в index.html. Она обязана идти после собранного стиля приложения, иначе тема проиграет.
    <link rel="stylesheet" href="/digitable-focus-carbon.css" />
  3. Жёсткая перезагрузка: Ctrl/Cmd + Shift + R.
  4. Чужая сборка: Stylus → Write new style, вставьте содержимое файла, задайте Applies to → URLs on the domain и укажите хост, например chat.digitable.life. Stylus подставляет пользовательские стили после стилей страницы — именно это теме и нужно.

Конфиги кладутся в каталог сборки рядом с index.html — или вставка в расширение пользовательских стилей

Файл красит оба слоя приложения: собственные переменные --digitable-* и --dt-chat-* на главной и глобальные классы MUI (.MuiPaper-root, .MuiOutlinedInput-notchedOutline) в комнате. Режим приложения угадывать не нужно: один файл задаёт законченный вид независимо от переключателя light/dark, поэтому наполовину применённого вида не бывает. Честно про Carbon: тёмная палитра самого приложения — это уже те же токены Digitable, поэтому Carbon почти ничего не меняет, а реально перекрашивают Paper и Signal. Часть цветов приходит из MUI-пропа sx и компилируется в классы с хешем сборки — до них тема не дотягивается, но они взяты из тех же токенов и не выглядят неоформленными. Комнату, встроенную через <script src="…/sdk.js">, перекрасить со страницы-хоста нельзя: это <iframe> внутри shadow-root, красьте то развёртывание, на которое он смотрит. Откат — удалить строку <link> и файл или выключить стиль в Stylus.

Discordтема клиента через модтребует мод, против ToS

В архиве: 3 файла .theme.css

Ручная досборка У Discord нет поддержки тем. Перекрасить клиент можно только клиентским модом — BetterDiscord или Vencord, — а их использование нарушает условия обслуживания Discord. Это решение покупателя, и мы не берёмся советовать его вместо предупреждения.

  1. BetterDiscord: User Settings → Themes → Open Themes Folder, скопируйте туда один .theme.css и включите переключатель рядом с темой.
  2. Vencord: User Settings → Vencord → Themes → Open Themes Folder, скопируйте файл, вернитесь на вкладку Themes, нажмите иконку обновления и включите тему.
  3. Смена палитры — включить другой файл и выключить предыдущий: две темы Digitable Focus подрались бы за одни переменные.

Конфиги кладутся в папка тем BetterDiscord или Vencord

Палитра выбирается файлом, а не переключателем light/dark в самом Discord: каждый файл красит и .theme-dark, и .theme-light, поэтому наполовину применённого вида не бывает. Discord часто переименовывает свои CSS-переменные и сейчас несёт два их поколения сразу: тема задаёт и старое семейство --background-primary, и новые --background-base-*, --text-*, --border-*. После крупного редизайна часть поверхностей может вернуться к штатным цветам, пока имена переменных не обновлены.

Firefoxтема окна браузерапостоянная установка — своя подпись

В архиве: 3 папки с manifest.json

Ручная досборка Firefox держит неподписанные расширения только в Developer Edition, Nightly и ESR, где помогает xpinstall.signatures.required = false в about:config. На релизной сборке тему нужно подписать самому: для этого нужен аккаунт Mozilla, и за вас этот шаг набор не сделает.

  1. Примерить без подписи: откройте about:debugging#/runtime/this-firefox, нажмите Load Temporary Add-on и укажите manifest.json внутри папки палитры. Тема применяется сразу и снимается при перезапуске Firefox.
  2. Поставить навсегда: заархивируйте содержимое папки палитры так, чтобы manifest.json лежал в корне архива, а не в подпапке, и переименуйте архив в .xpi.
  3. Загрузите его на addons.mozilla.org как unlisted-дополнение и скачайте подписанный .xpi.
  4. Откройте подписанный файл в Firefox и подтвердите установку.

Конфиги кладутся в любая папка, дальше Load Temporary Add-on в about:debugging

Смена палитры — about:addons → Темы, включить другую: Firefox держит активной одну тему. Удаление — там же, потом верните свою прежнюю тему. Временные дополнения исчезают при перезапуске сами.

IT Toolsтема набора веб-утилитнужна своя сборка или Stylus

В архиве: 3 файла .css

Ручная досборка У it-tools нет настройки темы. Приложение отдаётся статикой, поэтому файл подключается либо строкой <link> в index.html вашего развёртывания, либо пользовательским стилем через расширение вроде Stylus. На чужом инстансе — включая it-tools.tech — работает только второй путь, и расширение ставит покупатель.

  1. Своя сборка: скопируйте один файл палитры в каталог, который сервер отдаёт как корень сайта, — рядом с index.html. У официального образа это /usr/share/nginx/html: docker cp digitable-focus-carbon.css it-tools:/usr/share/nginx/html/. В Compose монтируйте файл томом, иначе он исчезнет при пересборке контейнера.
  2. Добавьте одну строку перед </head> в index.html. Она обязана идти после собственных стилей приложения, иначе тема проиграет. Не хотите править index.html — вставьте тот же тег обратным прокси: sub_filter в nginx, replace в Caddy.
    <link rel="stylesheet" href="/digitable-focus-carbon.css" />
  3. Жёсткая перезагрузка: Ctrl/Cmd + Shift + R.
  4. Чужой инстанс: Stylus → Write new style, вставьте содержимое файла, задайте Applies to → URLs on the domain и укажите хост. Stylus подставляет пользовательские стили после стилей страницы — именно это теме и нужно.

Конфиги кладутся в каталог, который сервер отдаёт как корень сайта, — рядом с index.html

it-tools — чужое приложение под лицензией GPL-3.0-only, исходники: https://github.com/CorentinTh/it-tools. В архиве лежит тема, а не форк: это отдельный CSS рядом с неизменённым инстансом, кода приложения в нём нет. Наш собственный инстанс https://tools.digitable.life/ — уже форк, https://github.com/digitable-lol/it-tools, с этой темой внутри сборки; GPL-3.0-only обязывает нас держать его исходники открытыми, и они по этой ссылке. Палитра выбирается файлом, а не переключателем в приложении: тёмный режим у it-tools — это <html class="dark">, поэтому carbon и signal красят html.dark, а paper — html:not(.dark). Если режим не совпал с файлом, тема просто не применяется, а не выдаёт нечитаемую смесь. Держите подключённым один файл: две тёмные палитры дрались бы за одни объявления. Честное ограничение: собственный набор компонент it-tools (src/ui/c-*) передаёт цвета через Vue v-bind(), а тот компилируется в инлайн-переменные с именем из хеша сборки, и имена меняются от релиза к релизу — поэтому варианты c-button (default, primary, warning, error) из CSS неразличимы и получают одну нейтральную заливку; c-alert свой цвет текста и рамки сохраняет, так что предупреждение и ошибка по-прежнему читаются по-разному. И поскольку naive-ui пишет свою тему в атрибут style, каждое объявление здесь идёт с !important — иначе таблица стилей проигрывает инлайн-переменной. Имена переменных взяты из src/<component>/styles/light.ts naive-ui и сверены с живым инстансом; если в следующем мажоре их переименуют, поверхность за ними вернётся к штатным цветам, пока тема не обновлена. Откат — удалить строку <link> и файл или выключить стиль в Stylus.

Logseqcustom.css для графа

В архиве: 3 файла .css

  1. Откройте граф, затем Settings → Custom configuration → Edit custom.css. Можно править logseq/custom.css в папке графа напрямую.
  2. Положите файл палитры рядом с custom.css, например logseq/digitable-focus-carbon.css.
  3. Добавьте одну строку в самое начало custom.css: @import url("./digitable-focus-carbon.css");@import обязан идти до любых других правил.
  4. Перезагрузите окно: t r или Settings → Advanced → Refresh.
  5. Выставьте режим через t t: Carbon и Signal стилизуют data-theme="dark", Paper — data-theme="light".

Конфиги кладутся в logseq/ в папке графа, рядом с custom.css

Каждый файл трогает только свой режим, поэтому собственный переключатель Logseq продолжает работать. Держите один @import: две палитры на один режим будут драться за одни переменные. Покрыт полный набор --ls-* из vars-classic.css и радикс-шкалы --lx-gray-01..12 и --lx-accent-01..12, на которых в свежих сборках держатся фон, границы и ссылки. Отдельно стилизованы детали цеттелькастена: ссылки на страницы, ссылки на блоки, теги (прозрачность принудительно выставлена в 1 — Logseq гасит их до 0.7) и свойства key:: value. Откат — удалить строку @import и перезагрузить окно; больше ничего не меняется. Проверено на именах переменных Logseq 0.10.x.

ObsidianCSS-сниппет хранилища

В архиве: 3 файла .css

  1. Скопируйте один CSS-файл в .obsidian/snippets/ вашего хранилища.
  2. Откройте Settings → Appearance → CSS snippets.
  3. Включите выбранный сниппет Digitable Focus.

Конфиги кладутся в .obsidian/snippets/ вашего хранилища

Держите включённой одну палитру за раз.

qutebrowserцвета интерфейса браузера

В архиве: 3 фрагмента .py

  1. Скопируйте один файл в ~/.config/qutebrowser/.
  2. Добавьте одну строку в ~/.config/qutebrowser/config.py. Если у вас есть вызов config.load_autoconfig(), строка обязана идти после него: он заново применяет всё, что вы когда-либо меняли через :set, включая цвета, и иначе перекроет палитру.
    config.source('digitable-focus-carbon.py')
  3. Перечитайте конфиг из работающего окна командой :config-source или перезапустите qutebrowser.

Проверка qutebrowser --version | head -1

Конфиги кладутся в ~/.config/qutebrowser/

Тема красит рамку браузера, а не содержимое страниц: colors.webpage.bg задаёт фон только тем страницам, которые не объявили свой, а colors.webpage.preferred_color_scheme сообщает сайтам, какой prefers-color-scheme им отдавать — dark для carbon и signal, light для paper. Группа colors.webpage.darkmode.* намеренно не тронута: принудительное затемнение отрисованных страниц — отдельное решение, оно меняет вид каждого сайта, и принимать его за читателя тема не должна. Три присваивания выглядят цветами, но ими не являются: colors.downloads.system.fg, colors.downloads.system.bg и colors.tabs.indicator.system выбирают способ интерполяции двух цветов (none оставляет оттенки палитры как есть), а colors.prompts.border — это сокращённая запись CSS-рамки. Что изменилось на самом деле, покажет :config-diff. Написано под qutebrowser 2.5 и сверено с его configdata.yml: присваиваются только существующие там настройки, поэтому config.py грузится без ошибок.

Slackстрока цветов интерфейсачасть панелей остаётся штатной

В архиве: 3 файла .txt

Ручная досборка После редизайна Slack строка красит уже не все поверхности: клиент раскладывает слоты на свои встроенные цвета, поэтому боковая панель, активный элемент и бейдж упоминаний следуют палитре, а часть панелей остаётся штатной. Это ограничение Slack, а не пробел в файле — поддерживаемого способа перекрасить остальное без патча десктоп-клиента нет.

  1. Откройте файл нужной палитры и скопируйте строку из десяти слотов.
  2. В Slack нажмите на свой аватар → Preferences → Appearance.
  3. Выберите Dark или Light под палитру — Paper светлая, остальные две тёмные, — затем Custom theme.
  4. Рядом с Theme Colors нажмите Import theme, выберите Paste your legacy theme colors, вставьте строку и нажмите Apply.

Конфиги кладутся в строка вставляется в Preferences → Appearance → Import theme

В старых сборках диалога импорта нет: там разверните Create a custom theme в разделе Colors и вставьте строку в поле с подписью про копирование значений. Такие сборки игнорируют последние два слота, поэтому в том же файле лежит и строка из восьми. Slack хранит одну пользовательскую тему на клиент. Откат — Preferences → Appearance и любая встроенная тема.

Telegram Desktopпалитра клиентаобои — своя упаковка в архив

В архиве: 3 файла .tdesktop-palette

Ручная досборка Сама палитра ставится файлом, распаковывать нечего. Архив .tdesktop-theme нужен только если вы хотите приложить к палитре фоновое изображение: набор его не собирает, потому что пришлось бы угадывать ваши обои. Собрать самому — переименовать файл палитры в colors.tdesktop-theme, положить рядом обои с именем background.jpg, background.png, tiled.jpg или tiled.png, заархивировать оба файла так, чтобы схема лежала в корне архива, и переименовать .zip в .tdesktop-theme.

  1. Откройте Settings → Chat settings → Chat background.
  2. Нажмите Choose file и выберите digitable-focus-<палитра>.tdesktop-palette. В диалоге он перечислен рядом с .tdesktop-theme.
  3. Telegram покажет предпросмотр — нажмите Save theme.

Конфиги кладутся в Settings → Chat settings → Chat background → Choose file

Файл можно просто перетащить в любой чат, затем открыть загруженный файл и подтвердить в окне предпросмотра. Палитра Telegram объявляет около 510 констант, пропущенное берётся из встроенного умолчания. Покрыты рамка окна, заголовок, меню, список чатов, пузыри сообщений, поле ввода, просмотрщик медиа, боковая панель и тосты — всё, что видно при обычной работе. Редко открываемые экраны (окна звонков, графики статистики, экраны Telegram Stars, подчёркивания проверки орфографии) остаются штатными, но они акцентные, а не белые, поэтому не читаются как неоформленные. Откат — Settings → Chat settings и любая встроенная тема.

Thunderbirdтема почтового клиентапостоянная установка — своя подпись

В архиве: 3 папки с manifest.json

Ручная досборка Thunderbird на релизных сборках требует подписи дополнений, поэтому постоянная установка возможна только с подписанным пакетом. Подпись — шаг покупателя, для него нужен аккаунт на addons.thunderbird.net.

  1. Примерить без подписи: Tools → Developer Tools → Debug Add-ons или about:debugging#/runtime/this-thunderbird в адресной строке контентной вкладки, дальше Load Temporary Add-on и manifest.json внутри папки палитры. Тема применяется сразу и снимается при следующем запуске.
  2. Поставить навсегда: заархивируйте содержимое папки палитры с manifest.json в корне архива и переименуйте его в .xpi.
  3. Загрузите архив на addons.thunderbird.net как unlisted-дополнение и скачайте подписанный .xpi.
  4. Поставьте его через Add-ons and Themes → шестерёнка → Install Add-on From File.

Конфиги кладутся в любая папка, дальше Load Temporary Add-on в about:debugging

Смена палитры — Add-ons and Themes → Themes, включить другую запись: активной остаётся одна. Откат — удалить запись и вернуть System theme, Light или Dark.

Digit Agentоткрытый агент и проектный контекстбесплатный гайд

Открыто: инструкция, встроенный скин digitable, шаблон AGENTS.md и ACP-конфигурация

  1. Установите Digit официальным скриптом: curl -fsSL https://raw.githubusercontent.com/digitable-lol/digit/main/scripts/install.sh | bash.
  2. Запустите digit setup, выберите локальную модель или собственный OpenAI-совместимый endpoint. Отдельная чужая cloud-интеграция не требуется.
  3. Для Ollama на Apple Silicon: ollama pull qwen3.5:4b, затем закрепите пресет — digit config set model.default digit-local; на один запуск хватит digit -m digit-local. Команда digit model — интерактивный выбор и аргумента не принимает.
  4. В корне проекта создайте AGENTS.md: опишите назначение продукта, команды сборки и тестов, ограничения и критерии готовности. Digit загрузит его как проектный контекст.
    # AGENTS.md
    ## Product
    Коротко опишите продукт и пользователей.
    
    ## Commands
    - build: команда сборки
    - test: команда тестов
    
    ## Constraints
    - не менять пользовательские данные без подтверждения
    - проверять результат перед завершением
  5. Для Zed, JetBrains и других ACP-клиентов укажите команду digit-acp. Для терминала запускайте digit, для Desktop — digit desktop.
  6. Проверьте установку: digit doctor, затем попросите Digit назвать активный каталог данных и доступные skills Digitable.

Проверка digit doctor

Digit и этот гайд открыты: покупать Workbench для установки агента не нужно. Workbench добавляет готовые темы, Engineering Compendium и расширенные SDD/ADR/review-шаблоны. Digit хранит конфиг, память и ключи отдельно в ~/.digit; старый ~/.hermes автоматически не импортируется.

Blender MCPагент лепит 3D прямо в Blenderбесплатный гайд

Открыто: инструкция, run.sh, startup.py и аддон с патчем скриншотов

  1. Склонируйте набор: git clone https://github.com/digitable-lol/blender-mcp.
  2. Поставьте Blender 4.5 LTS или новее — обычную сборку с интерфейсом, не blender-headless. Проверено на 4.5.11 LTS.
  3. На сервере без монитора доставьте xvfb: sudo apt install xvfb. run.sh сам поднимет виртуальный дисплей и программный рендерер llvmpipe.
  4. Запустите Blender: ./run.sh start. Скрипт ищет бинарь в $BLENDER, затем в PATH, затем в ~/opt/blender/blender — свой путь передайте как BLENDER=/путь/к/blender ./run.sh start.
  5. Зарегистрируйте MCP-сервер в агенте. Путь до uvx обязан быть абсолютным: десктопный клиент не наследует PATH вашей интерактивной оболочки.
    claude mcp add blender --scope user \
      -e DISABLE_TELEMETRY=1 -e BLENDER_MCP_DISABLE_TELEMETRY=1 -e MCP_DISABLE_TELEMETRY=1 \
      -- "$(command -v uvx)" blender-mcp@1.6.4
  6. Убедитесь, что порт слушает, и попросите агента сделать скриншот вьюпорта — он обязан прийти цветным, а не чёрным.

Проверка ./run.sh status

Набор и гайд открыты, как и Digit: покупать Workbench ради 3D-пайплайна не нужно. Два места, где оригинальный blender-mcp не работает headless, здесь уже закрыты. Первое: аддон отказывается стартовать под blender -b, потому что раздаёт команды через bpy.app.timers, а они не тикают без цикла событий — поэтому запускается настоящий GUI под xvfb-run. Второе: get_viewport_screenshot читал передний буфер окна, который без композитора остаётся чёрным, и агент получал валидный чёрный PNG со статусом success — то есть слеп и не знал об этом; в наборе аддон пропатчен на офскрин-рендер через gpu.types.GPUOffScreen. Отдельно выключена телеметрия: оригинал включает её по умолчанию с обеих сторон и шлёт промпты, куски кода и скриншоты вьюпорта на сторонний Supabase. Помните про границу доверия: execute_blender_code исполняет произвольный Python с правами вашего пользователя, поэтому держите сокет на localhost и не открывайте чужие .blend при подключённом MCP.

Digitable Chatодноранговый эфемерный чат

Открыто: инструкция: комнаты, пароль, поведение за NAT

Ручная досборка Приложение под GPL-2.0-or-later и в архив не входит намеренно: положить его код внутрь платной поставки — значит распространить всю поставку на тех же условиях. Ссылка такой границы не переходит, поэтому здесь открытый гайд, а не файлы.

  1. Откройте https://chat.digitable.life/ — учётной записи нет, регистрации нет.
  2. Публичная комната: https://chat.digitable.life/public/<имя>. Имя — единственное, что её закрывает, поэтому берите неугадываемое: head -c 12 /dev/urandom | base32 | tr A-Z a-z | tr -d =.
  3. Приватная комната: https://chat.digitable.life/private/<имя>, пароль вводится на странице и в ссылку не попадает — из него и имени комнаты выводится ключ шифрования.
  4. Ссылку и пароль передавайте разными каналами: вместе в одном сообщении они делают приватную комнату публичной.

Сервера у переписки нет: браузеры соединяются напрямую по WebRTC, сообщения не хранятся нигде и исчезают, когда закрыта последняя вкладка — не удаляются по запросу, а просто никуда не записываются. Отсюда и ограничения: истории нет, офлайн-доставки нет, участник должен быть на связи одновременно с вами. Прямое соединение иногда не устанавливается — в жёстких корпоративных сетях и при симметричном NAT; тогда комната открывается, а собеседник не появляется. Проверять это надо до того, как договорились о встрече в комнате.

MCP-серверы2

Не тема в конфиге программы, а инструмент в руках агента. Оба сервера отдают наружу детерминированный результат: та же команда с теми же аргументами даёт тот же ответ, и его можно перепроверить без модели. Подключаются одной записью в конфиге MCP-клиента.

Digit Tools95 утилит одним самодостаточным бинарёмсборка из исходников

Открыто: бинарь digit-tools-mcp и машиночитаемый каталог схем

Ручная досборка Готовых бинарей в поставке нет: собран только Linux-вариант, а каталог под GPL-3.0-only в платный архив не кладётся намеренно. Запрет не лицензионный: распространение за плату GPL-3.0-only разрешает прямо, но оживляет обязанность отдать покупателю исходники — поэтому бинарь ставит пользователь сам, из первоисточника.

  1. Соберите сервер из исходников: npm ci, затем npm run build:binary. На выходе самодостаточный бинарь dist/digit-tools-mcp на 107 МиБ — рантайм на хосте ему не нужен.
  2. Прогоните npm run smoke:binary: он исполняет через настоящий stdio все 114 примеров каталога. Юнит-тестов мало — именно этот прогон поймал дефект загрузки шрифтов, который они пропускали.
  3. Положите бинарь туда, где он будет жить, например в ~/.digit/mcp/digit-tools-mcp.
  4. Впишите запись в конфиг своего MCP-клиента. Не переписывайте файл целиком: в нём уже могут лежать чужие серверы — слияние с резервной копией делает toolchain/mcp-config.sh.
    sh toolchain/mcp-config.sh --file <конфиг вашего MCP-клиента> \
      --server digit-tools --command ~/.digit/mcp/digit-tools-mcp --plan
  5. Убедитесь, что клиент видит ровно три инструмента: tools_categories, tools_list, tools_execute. Девяноста пяти там быть не должно: каталог подаётся в два шага, иначе схемы всех утилит уезжают в контекст модели.

Проверка npm run smoke:binary

Лицензия GPL-3.0-only унаследована от it-tools: 95 утилит перенесены из 75 исходных из 86. Компонент открытый, ставить его бесплатно можно уже сейчас — заблокировано только включение в платный архив. Известное ограничение: таймаут не прерывает синхронную работу, и тяжёлое регулярное выражение всё ещё способно заблокировать процесс.

FTS Gateгейт исполняемых спецификацийсборка из исходников

Открыто: MCP-сервер, CLI fts-gate, библиотека морфизмов и GBNF-грамматика

Ручная досборка Готового артефакта в поставке нет: сервер собирается из исходников, а библиотека морфизмов собрана под материалы курсов и чужому проекту не подходит.

  1. Проверьте, что на хосте Node 20 или новее: гейт не бинарь, он исполняется рантаймом.
  2. Соберите гейт: npm install && npm run build. Тесты — 62 у гейта и 59 у самого FTS.
  3. Убедитесь, что библиотека морфизмов читается: node dist/src/cli.js morphisms --pretty печатает 29 записей с уровнями доверия.
  4. Впишите запись в конфиг клиента тем же слиянием, что и для каталога утилит.
    sh toolchain/mcp-config.sh --file <конфиг вашего MCP-клиента> \
      --server fts-gate --command node --arg ~/.digit/mcp/fts-gate/mcp.js --plan
  5. Проверьте протокол на отказе: дайте гейту спецификацию с морфизмом, которого нет в библиотеке. Отказ обязан прийти обычным результатом с кодом UNVERIFIED_MORPHISM, а не ошибкой вызова.

Проверка node dist/src/cli.js morphisms --pretty

Наружу торчат два read-only инструмента: fts_gate_check и fts_morphisms_list. FTS отвечает, согласована ли спецификация сама с собой; гейт — допустима ли каждая её предпосылка: 8 кодов отказа плюс детектор структурных логических ошибок ещё на 8. Границу гарантии надо знать заранее: гейт не проверяет истинность объявленного закона, а переносит доверие из текста в ревьюируемый список — контрпример со ставкой налога проходит весь формализм зелёным. Лицензия гейта — BSD 2-Clause, как и у языка: заявление про Apache-2.0 осталось от первой публикации репозитория и исправлено в его NOTICE. Встроенной копии FTS нет — зависимость притянута фиксированным коммитом 6dceb8d, тем самым, которым лицензия и была сменена.

Где придётся доделать руками

Эти 11 целей нельзя поставить копированием файла, и мы не прячем это за «работает везде». Остальные 42 ставятся штатным импортом схемы, строкой в конфиге или копированием в каталог тем.

  • Chromeнужен режим разработчика
  • Digitable Chatнужна своя сборка или Stylus
  • Discordтребует мод, против ToS
  • Firefoxпостоянная установка — своя подпись
  • IT Toolsнужна своя сборка или Stylus
  • Slackчасть панелей остаётся штатной
  • Telegram Desktopобои — своя упаковка в архив
  • Thunderbirdпостоянная установка — своя подпись
  • Digitable Chat
  • Digit Toolsсборка из исходников
  • FTS Gateсборка из исходников
Digitable Workbench · Founding Edition

Конфиги открыты. Платят за собранный набор.

Всё, что показано выше, можно скопировать и разложить руками. В архиве это уже разложено: 47 наборов файлов из одного источника токенов, Compendium из 9 томов, 9 рабочих шаблонов и установщик, который делает раскладку сам.

Вернуться к обзору и цене Собрать команду установки