Impactite: консольный Markdown-блокнот для тех, кто предпочитает клавиатуру
Если вы проводите большую часть дня в терминале и ведёте заметки в Markdown, то, наверняка, смотрели на Obsidian и думали: «Хороший инструмент, но не хочется покидать командную строку». Именно эту нишу и пытается закрыть Impactite. Это терминальный просмотрщик и редактор Markdown, написанный на Python. Основная идея проста: инструмент для заметок должен быть быстрым, управляемым с клавиатуры и удобным в том же окне, где уже работают оболочка, редактор и система контроля версий.
Репозиторий проекта: https://github.com/NeonSalamander/Impactite
Что это такое, простыми словами
Impactite — не веб-приложение, не расширение для браузера и не облачный сервис. Это одна программа на Python с текстовым интерфейсом (TUI). Вы указываете ей папку с Markdown-файлами — ваши заметки — и получаете рабочее пространство из трёх панелей: дерево файлов слева, отрендеренная или редактируемая заметка по центру, облако тегов или статусная панель снизу. Вы перемещаетесь по заметкам с клавиатуры, открываете файлы, редактируете их, ищете по тегам и создаёте ежедневные заметки, не прикасаясь к мыши, если не хотите.
Проект специально небольшой. Он не пытается заменить все функции современного приложения для базы знаний. Вместо этого он сосредоточен на том, что большинство людей делает каждый день: читает заметки, пишет заметки, помечает тегами, ищет заметки и иногда запускает простой запрос по коллекции заметок.
Зачем терминальный инструмент?
Для рабочего стола есть хорошие Markdown-редакторы, а для ведения заметок — отличные программы с развитыми ссылками. Но у них свои недостатки: обёртки на Electron, проприетарная синхронизация, требование аккаунта, экосистемы плагинов, которые ломаются при обновлениях. У терминального приложения другие компромиссы.
- Оно запускается мгновенно.
- Работает по SSH.
- Использует ту же папку с обычными `.md`-файлами, которую вы уже храните в Git.
- Не лезет в интернет и не требует регистрации.
- Предсказуемо работает на маломощных машинах.
Impactite подойдёт тем, кто ценит эти качества и готов обойтись без встроенного просмотра изображений или drag-and-drop редактирования.
Что с ним можно делать:
Читать и редактировать Markdown
У каждой заметки в Impactite два режима: просмотр и редактирование. В режиме просмотра Markdown отрисовывается с заголовками, списками, блоками кода, таблицами и встроенным форматированием. В режиме редактирования вы видите исходный Markdown в области с подсветкой синтаксиса. Над редактором есть небольшая панель инструментов, которая одним сочетанием вставляет жирный текст, курсив, заголовки, списки, ссылки, задачи, блоки кода и горизонтальные линии. Если выделить текст перед нажатием кнопки — форматирование обернёт выделение, иначе вставится шаблон, а курсор встанет туда, куда нужно.
Интерактивные чекбоксы
Списки задач отображаются не просто как текст — по ним можно кликать. Щелчок по `- [ ]` в режиме просмотра переключает его в `- [x]`, и файл сразу сохраняется. Для быстрых обновлений статуса — список прочитанного, файл с задачами, чеклист проекта — это убирает лишние действия с переключением в режим редактирования.
Теги, поиск и граф связей
Теги распознаются либо из frontmatter заметки (`tags:`), либо из inline-`#хэштегов`. При запуске все теги индексируются в локальную базу данных и показываются в облаке тегов, каждый со своим устойчивым цветом. Клик по тегу запускает поиск по всем заметкам.
Также есть граф связей — иерархическое дерево отношений между заметками и тегами. Из него можно открывать заметки и запускать поиск по тегам. Обратные ссылки тоже учитываются: видно, какие заметки ссылаются на текущую.
Ежедневные заметки и шаблоны
Одним сочетанием клавиш создаётся ежедневная заметка с заполненным frontmatter (`type: daily_note`, `date`), которая сохраняется в настраиваемую папку. Есть и шаблонный движок на основе Jinja2. Шаблоны живут в папке `templates/` внутри каталога заметок и могут использовать переменные вроде `{{title}}`, `{{date}}`, `{{time}}`, `{{author}}` и другие. Новую заметку по шаблону можно создать прямо из интерфейса.
Формы ввода внутри заметок
Заметка, у которой первый ключ frontmatter — `type: form`, в режиме просмотра превращается в интерактивную форму ввода данных. Поля задаются в frontmatter: строки, многострочный текст, целые числа, даты, переключатели, а также выпадающие списки и множественный выбор. При сохранении форма может либо создать новый Markdown-файл, либо сохранить запись в локальную базу данных. Это удобно для регулярных структурированных записей: обзоров книг, проектных задач, замеров веса, встреч с фиксированной структурой.
Псевдо-SQL запросы
Внутри любой заметки можно добавить блок кода с языком `query` или `dataview` и написать небольшой SQL-подобный запрос по заметкам или записям форм. Например:
```query
FROM notes/books
WHERE read = true
SELECT title, author, rating
ORDER BY rating DESC
```
Движок запросов поддерживает `WHERE`, `GROUP BY`, `HAVING`, `SELECT`, `ORDER BY`, `LIMIT` и агрегатные функции `COUNT`, `SUM`, `MIN`, `MAX`, `AVG`. Можно запрашивать frontmatter Markdown-файлов или JSON-записи, сохранённые формами. Если вы пользовались плагином Dataview для Obsidian, концепция покажется знакомой, хотя синтаксис здесь проще.
Избранное, темы и локализация
Заметки можно добавлять в избранное и открывать их из отдельного узла в боковой панели. Интерфейс поддерживает светлую и тёмную темы, причём текущий выбор автоматически сохраняется в конфигурационный файл. Само приложение локализовано на английский, русский и немецкий языки.
Табличные формулы в духе электронных таблиц
Для тех, кто ведёт структурированные таблицы в заметках, Impactite включает небольшой движок табличных формул, вдохновлённый TBLFM из Emacs Org-mode. После Markdown-таблицы можно добавить комментарий и вычислять суммы столбцов, произведения, средние значения и выражения по ячейкам. Это специфическая функция, но она по-настоящему полезна, если вы отслеживаете бюджеты, часы или баллы прямо в заметках.
Технологический стек
Impactite написан на Python и рассчитан на Python 3.14 и новее. Он построен поверх двух известных библиотек:
- Textual — для текстового интерфейса, виджетов, обработки событий и тем.
- Rich — для рендеринга Markdown, подсветки синтаксиса, таблиц и стилизованного текста.
Среди прочих зависимостей:
- `markdown` и `PyYAML` — для разбора Markdown и frontmatter.
- `Pygments` — для подсветки блоков кода.
- `Jinja2` — для шаблонного движка.
- `ladybug` — для локального индекса тегов и базы записей форм.
Проект использует `uv` для управления зависимостями и сборки, а также стандартный `pyproject.toml`. Установить как самостоятельную команду можно через `uv tool install .`.
Установка и первый запуск
После клонирования репозитория:
```bash
uv sync
uv run impactite
```
Или установить как системную команду:
```bash
uv tool install .
impactite
```
Настройки хранятся в `config.yaml`. В нём указывается путь к заметкам, язык интерфейса, горячие клавиши, настройки редактора и тема. Относительный `notes_path` разрешается относительно файла конфигурации, а не текущей директории, поэтому Impactite можно запускать откуда угодно — он всё равно откроет тот же блокнот.
Кому это подойдёт
Impactite будет хорошим выбором, если:
- Вы уже храните заметки как Markdown-файлы в папке, которую контролируете.
- Много времени проводите в терминале и предпочитаете работу с клавиатуры.
- Хотите теги и ссылки в духе Obsidian, но без полноценного настольного приложения.
- Нужен небольшой самодостаточный способ собирать структурированные данные через формы.
- Хотите, чтобы заметки оставались обычными файлами, которые открываются любым текстовым редактором или Git.
Скорее всего, это не подойдёт, если вы активно используете изображения, PDF, Canvas-доски или совместное редактирование в реальном времени. Инструмент ориентирован на текст и терминал.
Вместо заключения
Impactite — это практичный и предсказуемый Markdown-блокнот для терминала. Он не обещает «изменить ваше мышление»; он просто даёт чистый и быстрый способ читать, писать, организовывать и запрашивать ваши Markdown-заметки, не покидая командной строки. Если такой подход вам близок — попробуйте.
Репозиторий проекта: https://github.com/NeonSalamander/Impactite

















