Есть встроенный в Windows Win+V. Я честно пользовался им года полтора. А потом однажды скопировал кусок кода, полез искать то, что копировал двадцать минут назад, и понял, что искать там нечем. В Win+V нет поиска. Совсем. Список, по которому ты скроллишь глазами. Двадцать пять элементов, картинки вперемешку с текстом, и ты листаешь колёсиком, как ленту, пытаясь вспомнить, как выглядела нужная строчка.

Ещё он не помнит историю между перезагрузками так, как мне хотелось, теряет то, что я закреплял, и живёт своей жизнью где‑то в облаке аккаунта Microsoft, о чём я стараюсь не думать.

В общем, в какой‑то вечер я решил, что напишу своё. Получилось то, чем я теперь пользуюсь каждый день, и мне кажется, оно вышло достаточно аккуратным, чтобы показать. Называется ClipVault. Дальше расскажу, как оно устроено внутри, что я решил в него не добавлять и почему, и где скачать, если захотите потыкать.

Что это

Фоновая утилита для Windows 10/11. Живёт в трее, окно скрыто. Ловит всё, что вы копируете: текст, картинки, файлы. По Ctrl+Shift+V всплывает окно истории с мгновенным поиском, вкладками и превью. Выбрали элемент, он лёг обратно в буфер, окно спряталось. Всё.

История хранится локально, в %APPDATA%\ClipVault. Никакого сервера, аккаунта и облака.

Почему Rust и Tauri, а не Electron

Изначально в задумке был Python с PySide6. Я от него отказался осознанно. Менеджер буфера это не то приложение, которое ты запускаешь и закрываешь. Оно висит в фоне сутками. Значит, оно не имеет права жрать сотни мегабайт оперативки и греть процессор просто фактом своего существования.

Поэтому Rust плюс Tauri 2 для бэкенда, TypeScript плюс Vite для интерфейса, SQLite для хранилища. Tauri вместо Electron ровно по той же причине: не тащить с собой целый Chromium, а использовать системный WebView2, который в Windows 10/11 и так уже есть. На выходе лёгкий нативный .exe, быстрый старт и расход памяти, за который не стыдно для фоновой утилиты.

Как ловится буфер: без polling

Первое, что хочется сделать наивно, это опрашивать буфер по таймеру: раз в секунду посмотрел, поменялось или нет. Так делать не надо. Это и лишний расход, и гонки, и задержка.

Windows умеет уведомлять об изменении буфера сама. ClipVault поднимает отдельный поток clipboard-master, который подписывается на системные события и реагирует только когда буфер реально изменился. Ноль опроса, ноль холостого хода.

Дальше по цепочке: событие пришло, прочитали содержимое (текст, потом файлы, потом картинка), посчитали SHA-256 с префиксом типа, и вот тут первый приятный момент. Хэш нужен не только для дедупликации, но и для защиты от петли. Когда вы выбираете элемент из истории, приложение само кладёт его в буфер, а значит само же провоцирует событие изменения. Чтобы не создать дубликат собственной записи, перед записью в буфер хэш запоминается, и слушатель, увидев ровно этот хэш, просто пропускает событие.

Дедупликация и поиск

Если вы копируете одно и то же по десять раз в день (а мы все копируем), плодить десять одинаковых записей глупо. В базе на content_hash висит UNIQUE, и повторное копирование не создаёт новую строку, а поднимает существующую: инкрементит счётчик использований и обновляет время. История остаётся чистой, а часто используемое само всплывает наверх.

Поиск сделан на SQLite FTS5. Это полнотекстовый движок прямо внутри SQLite, и он даёт мгновенный поиск по тексту и коду, включая кириллицу и префиксный поиск (набрали три буквы, уже нашлось). Токенайзер настроен на unicode61 со снятием диакритики, синхронизация основной таблицы с индексом висит на триггерах. Для утилиты, где поиск должен срабатывать в тот же момент, когда ты дописал слово, это ровно то, что нужно, и без единой внешней зависимости для поиска.

Картинки хранятся PNG‑файлами в отдельной папке, в базе лежит только путь и превью. В webview картинка отдаётся как data‑URL по запросу, а не тащится вся история разом.

Приватность, но по‑честному

Я не люблю, когда «приватность» это строчка на лендинге. Поэтому скажу конкретно.

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

Никакой телеметрии. Никакого аналитического SDK. И, важное решение, которое я хочу проговорить вслух: в установщик не зашит никакой сторонний браузер, тулбар или «партнёрское ПО». Была идея добавить бандл одного известного браузера ради копеечки с установок. Я от неё отказался: это ровно то, что превращает утилиту в PUP в глазах антивирусов и SmartScreen, и это противоречит всему, ради чего я это писал.

Для приватных данных есть два инструмента, и оба бесплатны навсегда: пауза записи (для паролей и всего, что не хочется видеть в истории) и игнор‑список приложений (буфер из вашего банк‑клиента или менеджера паролей просто не попадает в историю). Безопасность я принципиально не прячу за деньги.

Про лицензию без сервера

Тут инженерно любопытная часть. Я не хотел ни аккаунтов, ни сервера лицензий, ни «войдите, чтобы активировать». Поэтому лицензия сделана на офлайн‑подписи.

Ключ это подписанный payload ({tier, email}), подписанный приватным ключом Ed25519, который есть только у меня. Публичный ключ зашит в .exe. Приложение проверяет подпись локально, офлайн, один раз и навсегда. Подделать ключ без приватной пары нельзя. При этом ключ не привязан к железу, то есть вы вставляете одну и ту же строку на всех своих ПК, и на рабочем, и на домашнем. Есть экспорт и импорт лицензии.

Да, такой ключ теоретически можно передать другому человеку. Я сознательно принял этот компромисс: для утилиты за 399 ₽ городить аппаратную привязку и сервер активации это стрелять из пушки по воробьям, а тот, кто пойдёт искать чужой ключ, всё равно бы не купил. Мягкий сдерживатель это привязка к email покупателя, который показывается прямо в интерфейсе.

Что я осознанно не стал делать

Мне кажется, это самая честная часть. Продукт определяется не только тем, что в нём есть, но и тем, что вы отказались в него пихать.

Шаблоны и автозамена (text expansion). Звучит красиво, но под капотом это глобальный клавиатурный хук и инъекция ввода в чужие окна. Это отдельный класс продукта, он палится антивирусами и прямо противоречит privacy‑позиционированию. Мимо.

Авто‑вставка. Соблазн сделать так, чтобы приложение само вставляло текст в активное окно, велик. Но это та же инъекция ввода, она ненадёжна между разными приложениями и ведёт себя непредсказуемо. Я оставил честное правило: приложение готовит буфер, а Ctrl+V вы жмёте сами. Скучно, зато работает всегда и везде.

Сетевое превью ссылок. Красивая карточка с заголовком страницы требует ходить в сеть за каждой ссылкой. Это убивает «полностью офлайн». Ссылки распознаются и чистятся от UTM локально, без единого запроса.

Аккаунт, подписка, облако. См. выше про лицензию. Ничего этого нет и не будет.

Общее правило, которым я мерю любую будущую фичу: «подготовить буфер, а пользователь вставит сам» это дёшево и ложится в текущую пассивную архитектуру; «приложение печатает за пользователя» это дорого, ненадёжно и палится. Всё, что на дорогой стороне, не проходит.

Про версии

Базовая версия бесплатная и это полноценная замена Win+V: текст, картинки и файлы, автозахват, дедуп, превью, мгновенный поиск, смена горячей клавиши, пауза, игнор‑приложения, простой экспорт, автозапуск, авто‑обновления. Лимит истории 200 элементов. Большинству этого хватает с головой, и я не собираюсь ломать бесплатную версию, чтобы вынудить платить.

Есть ещё Pro за разовые 399 ₽ (без подписки и без аккаунта, активируется офлайн‑ключом и работает на всех ваших ПК). Он даёт больше для тех, кому базовой версии мало. Вот граница по возможностям:

Возможность

Free

Pro · 399 ₽ разово

История: текст, картинки, файлы, автозахват, дедуп, превью

до 200 элементов

безлимит (до 10 000) + автоочистка по возрасту и количеству

Поиск

мгновенный полнотекстовый (FTS5) + фильтр по типу

+ фасеты (дата, источник, тег), regex, умные коллекции

Горячая клавиша вызова

смена хоткея

+ свои хоткеи для Pro‑действий

Окно

список, вставка, светлая и тёмная тема, навигация стрелками

+ плавающий и компактный режим, память позиции и размера, размер шрифта

Закрепление

пины

+ категории, цветовые метки, экспорт избранного

Картинки

захват, превью, вставка

+ сохранить на диск, копировать путь, метаданные

Цвета

нет

распознавание HEX/RGB/HSL, превью, конвертация

Ссылки

нет

распознавание URL, чистка UTM, группировка по домену

Вставка без форматирования

нет

Plain Text по хоткею или по умолчанию

Слоты и быстрая вставка

нет

10 слотов + вставка N‑го элемента по хоткею

Безопасность

локально, пауза записи, игнор приложений

+ мастер‑пароль с автоблокировкой

Управление данными

удаление, очистка, экспорт TXT/JSON

+ правила автоочистки, импорт, слияние дублей

Обновления

авто‑обновление

авто‑обновление

Активация

не требуется

офлайн‑ключ, без сервера и аккаунта

И, если честно, Pro это ещё и способ поддержать проект. Я делаю ClipVault сам, и эти 399 ₽ идут не в какую‑то воронку, а на то, чтобы я продолжал его пилить и делать следующие штуки. Так что если вам зашло и хочется, чтобы развивалось дальше, это ровно тот случай. Мне будет и полезно, и, чего скрывать, приятно.

Скачать и покритиковать

Windows 10/11 x64, установщик подписан, обновления прилетают сами (и отключаются, если вы в режиме паранойи). Скачать код и собранный exe‑файл можно с Гитхаба.

Буду рад разносной критике по делу: и по продукту, и по коду, и по архитектурным решениям выше. Особенно интересно услышать, где я, на ваш взгляд, ошибся с границей Free/Pro или с отказом от той или иной фичи. Для того и пишу.


Спасибо, что дочитали.

Комментарии (16)


  1. Dhwtj
    21.09.2026 08:57

    C++ даже не рассматривался?

    Go...

    Просто интересно, какие языки "первого выбора" нынче


    1. WufCorp Автор
      21.09.2026 08:57

      Рассматривал. На C++ получилось бы быстрее и легче, но UI на Win32 или WinUI я бы писал в разы дольше. Go для десктопа с нормальным интерфейсом тоже не лучший выбор. Взял Tauri: бэкенд на Rust (буфер, хоткеи, SQLite), интерфейс на вебе. Установщик получается маленький, не как у Electron, а WebView2 уже встроен в Windows 10/11.


      1. morgot
        21.09.2026 08:57

        WebView2 уже встроен в Windows 10/11.

        А можно подробнее, где посмотреть? Мне казалось, что webview2 надо отдельно скачивать для приложений (из сайта msdn, около 70 метров), даже если в системе есть Edge. По крайней мере, так было в 2023.


  1. swame
    21.09.2026 08:57

    Приложение нужное.

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

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

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

    Слишком тонкие и бледные шрифты во всем приложении, не очень читаются.

    Возможность удалить айтемы по одному, одним кликом.

    Возможность масштабировать картинку, или хотя бы смотреть в исходном размере.

    Хорошо бы простой редактор пометок, это можно в платную версию.

    Поиск занимает много места, лучше по кнопке, и не ищет по фрагменту.

    И приложение не подписано, вопреки обещаниям.


    1. WufCorp Автор
      21.09.2026 08:57

      Спасибо, очень полезный разбор, прямо по пунктам.

      Про окно: во Free не запоминаются позиция и размер, это Pro. Но вы правы, выглядит как жадность, а открываться окно должно в нормальном месте у всех. Сделаю, чтобы оно появлялось у курсора на том мониторе, где мышь.

      Удаление одним кликом, просмотр картинки в полном размере, поиск по фрагменту: всё записал, это разумные вещи.

      Про подпись: обновления подписаны, а сам .exe пока без сертификата Authenticode, отсюда предупреждение SmartScreen. Если в статье это прозвучало как обещание, это моя ошибка в формулировке.


      1. swame
        21.09.2026 08:57

        Запоминать позицию не обязательно, главное переносить.

        И еще не согласен с отказом от автовставки.

        Должно работать ка к винде - нажать Win-V кликнуть на пункт - он сразу вставляется в приложение. Каких - то проблем в винде с этим не замечал.


  1. Uranic2
    21.09.2026 08:57

    Менеджеров буфера обмена, - как грязи (еще и бесплатные без всяких условий):

    https://github.com/sabrogden/Ditto/wiki

    https://github.com/hluk/CopyQ


    1. WufCorp Автор
      21.09.2026 08:57

      Да, и оба хорошие, сам ими пользовался. ClipVault не пытается их заменить. Он для тех, кому Ditto кажется устаревшим, а CopyQ слишком сложным: открыл по хоткею, нашёл, вставил. Если вам удобно в Ditto, менять незачем.


  1. Elaugaste
    21.09.2026 08:57

    Почему не WInUI, почему WebView..


    1. WufCorp Автор
      21.09.2026 08:57

      Вопрос справедливый. WinUI дал бы нативный вид, но тогда пришлось бы тащить .NET или Windows App SDK, а упаковка и распространение там заметно тяжелее. WebView2 и так есть в системе, так что приложение весит мало, а интерфейс я правлю за минуты, а не за часы. Цена этого решения: чуть больше памяти, чем у чисто нативного приложения. Для утилиты в трее я посчитал, что это приемлемо.


      1. Dhwtj
        21.09.2026 08:57

        WebView2 и так есть в системе,

        Windows 11 да, а в десятке по умолчанию нет. Хотя при наличии например ms office будет и в десятке.


      1. Splo1ter
        21.09.2026 08:57

        Цена этого решения: чуть больше памяти, чем у чисто нативного приложения.

        А как вы это измеряли? Подозреваю, что никак.
        Ваше "чуть больше" может быть раза в 2-3.


        1. swame
          21.09.2026 08:57

          У меня показывает 33 Mb в общей сложности, по хорощему такое приложеньице должно быть раз в 5-10 меньше, если не упарываться с размером.

          Например на Delphi. Без всяких внешних пакетов.

          Но и так терпимо. Не с браузер размером.

          У меня столько занимает приложение без данных на 1,5 млн строк своего кода + десяток пакетов сторонних компонентов.


          1. WufCorp Автор
            21.09.2026 08:57

            Это мое первое приложение полноценное, так что возможно где-то есть недочеты, ну ничего, буду учиться)


          1. Splo1ter
            21.09.2026 08:57

            Del


  1. igrblkv
    21.09.2026 08:57

    Ставится умеет только в профиль пользователя?
    В Program Files нельзя поставить, а сами настройки с историей буфера хранить в пользователе?