Доступно для macOS

Ваш буфер обмена.
Прокачанный.

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

npm install && npm run build just now
https://github.com/copystr/releases 2m
Встреча в 15:00, не забыть повестку 14m
const handler = async (req, res) => { 31m

Всё что нужно.
Ничего лишнего.

Создан для скорости и ясности. CopyStr не мешает работать, пока он вам не нужен.

История буфера

Каждое копирование сохраняется автоматически: свежее сверху, вся история в одной прокрутке. Задайте, сколько клипов хранить, закреплённые остаются всегда.

Быстрый поиск

Находите что угодно с мгновенным нечётким поиском.

Повторное использование

Один клик, и любой скопированный текст вставлен.

Минимальный UI

Чистый попап у курсора. CopyStr живёт только в строке меню: без значка в Dock и в переключателе приложений.

Картинки и скриншоты

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

Слоты вставки

Cmd+Shift+1, 2 и 3 вставляют три последние копии прямо у курсора, не открывая окно.

Приватный режим

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

Закрепить и передвинуть

Закрепите окно, чтобы оно не закрывалось, и перетащите куда удобно за ручку рядом с полем поиска.

Английский и русский

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

Свой значок в строке меню

Десять нарисованных под это значков на выбор, чтобы CopyStr выглядел в строке меню так, как вам нравится.

Папки сниппетов

Правый клик по клипу кладёт его в папку. Папки стоят под историей: наведите на папку, чтобы увидеть сниппеты, и кликните для вставки. Экспорт в JSON и импорт обратно.

Скрытые клипы

Отметьте клип как чувствительный, и видны будут только первые и последние символы, в истории и в папках. Глазок показывает его до закрытия окна.

Три шага до идеального буфера.

1

Скопируйте что угодно

Копируйте текст, ссылки, код где угодно на Mac. CopyStr фиксирует всё незаметно.

2

Нажмите хоткей

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

3

Выберите и вставьте

Просмотрите или найдите в истории, нажмите для вставки. Готово меньше чем за секунду.

Красиво. Работает ещё лучше.

Настоящие скриншоты, а не макеты. Отточенный интерфейс, который ощущается родным в macOS, в любой теме.

История буфера CopyStr с закреплённой ссылкой, миниатюрой изображения и кодом История с текстом, ссылками и картинками
Настройки CopyStr: горячие клавиши, изображения, приватный режим и обновления Все настройки на одной странице
CopyStr in the macOS menu bar with private mode on В строке меню, приватный режим включён

Скопированное остаётся вашим.

История лежит в локальной базе SQLite на вашем Mac. Ни аккаунта, ни синхронизации, ни сервера: в сеть CopyStr выходит только за проверкой обновления, а офлайн-режим отключает и её.

Private mode switched on in the CopyStr menu bar item Приватный режим включён: значок притухает и получает знак запрета

Приватный режим в один клик

Включите его из строки меню или из настроек, и CopyStr перестаёт записывать: ничего скопированного не попадёт в историю, пока вы не выключите режим обратно. Значок в строке меню показывает состояние, ничего открывать не нужно, и выбор переживает перезапуск.

Пароли и ключи не сохраняются

Пароли, скопированные из 1Password, Bitwarden, KeePassXC или «Паролей» Apple, в историю не попадают: эти приложения помечают каждый скопированный пароль, и CopyStr эту пометку соблюдает. Содержимое в типичных форматах секретов (API-ключи, токены, приватные ключи, номера карт) тоже отсеивается. Пароль, скопированный откуда-то ещё, например из заметки, выглядит как обычный текст, поэтому для таких случаев включайте приватный режим.

Картинки только если нужно

Один переключатель в настройках держит скриншоты и скопированные картинки вне истории и прячет те, что уже сохранены.

Очистить в любой момент

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

Путь одной копии через CopyStr.

Каждый шаг ниже выполняется на вашем Mac. Вот что именно приложение делает со скопированным и когда единственный раз выходит в сеть.

Схема потока данных: внутри вашего Mac копия идёт из буфера в CopyStr, через фильтр приватности, в локальную базу и обратно при вставке. Ваши записи никак не связаны с интернетом. Единственное соединение: проверка обновлений на copystr.com.
Ваш Mac
  1. Вы копируете

    Cmd+C в любом приложении. macOS кладёт данные в системный буфер обмена, как и без CopyStr.

    NSPasteboard

  2. CopyStr замечает изменение

    Дважды в секунду он сверяет счётчик изменений буфера. Только когда счётчик сдвинулся, он читает новый текст, картинку или список файлов и имя активного приложения. Пустые копии и повторы отбрасываются.

    changeCount каждые 500 мс

  3. Фильтр приватности

    Срабатывает до любой записи.

    Копия пропускается, если:

    • включён приватный режим;
    • приложение, которое её скопировало, пометило её как скрытую или временную, как менеджеры паролей делают с каждым паролем (org.nspasteboard.ConcealedType). Такую копию CopyStr даже не читает;
    • текст совпадает с известным форматом секрета: API-ключи и токены (sk-, ghp_, AWS, JWT, Bearer), блоки приватных ключей, строки password=, адреса баз данных с паролем, номера карт, одноразовые коды;
    • это картинка, а «Сохранять изображения» выключено;
    • она из приложения в списке исключений (excluded_apps в config.toml; по умолчанию там 1Password, Bitwarden, KeePassXC, «Связка ключей» и «Пароли»).

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

  4. Запись в локальную базу

    Обычный файл SQLite в вашей папке Library. По умолчанию хранятся последние 500 записей («Максимум записей» в настройках), а настройка «Хранить историю» может удалять записи старше 1-90 дней; закреплённые и избранные остаются. Записи, скрытые звёздочками, можно настроить на самоудаление через 5 минут, час или день после последнего копирования или вставки.

    ~/Library/Application Support/copystr/copystr.db

  5. Поиск и вставка

    Поиск идёт по этому файлу на вашем Mac. Когда вы выбираете запись, CopyStr возвращает её в буфер и сам нажимает Cmd+V в приложении, где вы работали (для этого нужно разрешение в «Универсальном доступе»).

Проверка обновлений

Единственная часть CopyStr, которая ходит в сеть, и к истории она не обращается. Срабатывает через 5 секунд после запуска (отключается переключателем «Проверять обновления автоматически») и когда вы нажимаете «Проверить обновления». Офлайн-режим выключает её полностью.

Интернет

Облака CopyStr нет

У приложения нет ни сервера аккаунтов, ни сервера синхронизации, ни аналитики, ни отчётов о сбоях. Записям просто некуда уходить.

copystr.com

Отдаёт один маленький JSON-файл и пакет обновления, через Cloudflare. Как любой сайт, видит ваш IP-адрес и время проверки.

Что остаётся на вашем Mac

  • Ваши записи, с приложением-источником и временем.
  • История: ~/Library/Application Support/copystr/copystr.db, файл SQLite с файлами-спутниками -wal и -shm.
  • Настройки: ~/Library/Preferences/copystr/config.toml, обычный текстовый файл.
  • CopyStr не шифрует базу сам. Она защищена как остальные ваши файлы: учётной записью macOS и FileVault.
  • Чтобы удалить: очистите историю в настройках или закройте CopyStr и удалите папку copystr.

Единственный сетевой запрос

  • Что: HTTPS GET https://copystr.com/update/latest.json
  • Когда: через 5 секунд после запуска и когда вы нажимаете «Проверить обновления». Автоматическую проверку можно выключить в настройках, а офлайн-режим выключает обе: тогда CopyStr не устанавливает ни одного соединения.
  • Отправляется: только сам запрос с общим User-Agent модуля обновлений. Ни записей, ни истории, ни настроек, ни ID устройства, даже версии приложения. Как любое соединение, он раскрывает ваш IP-адрес.
  • Приходит: номер последней версии, ссылка на загрузку и подпись.
  • Установка: только после нажатия «Установить» и только если подпись пакета сходится с открытым ключом, встроенным в CopyStr (minisign, Ed25519). Пакет, не прошедший проверку, отклоняется.

Чего приложение не делает

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

Проверьте сами

Не верьте на слово. Вставьте эти команды в Терминал.

Посмотрите на сетевой трафик

nettop -p copystr
lsof -i -n -P -a -c copystr

Процесс приложения называется copystr. nettop показывает его соединения в реальном времени, lsof перечисляет открытые прямо сейчас. Вне проверки обновлений оба списка пусты.

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

ls -la ~/Library/Application\ Support/copystr/
sqlite3 -readonly ~/Library/Application\ Support/copystr/copystr.db "SELECT COUNT(*) FROM clipboard_items;"

Вся ваша история это один файл, его читает утилита sqlite3, встроенная в macOS.

Прочитайте ответ сервера обновлений

curl -s https://copystr.com/update/latest.json

Тот же файл, что скачивает проверка обновлений: номер версии, ссылка и подпись. Ничего о вас.

Проверьте подпись приложения

codesign --verify --strict --verbose=2 /Applications/CopyStr.app
codesign -dv --verbose=4 /Applications/CopyStr.app

Ожидайте «valid on disk»: после подписи в приложении ничего не менялось. Вторая команда покажет Authority=CopyStr Release Signing, наш собственный сертификат релизов. Это не Apple Developer ID, поэтому spctl сообщает, что приложение не нотаризовано.

Или поставьте файрвол

LuLu (бесплатный, с открытым кодом) или Little Snitch покажут проверку обновлений на copystr.com как единственное соединение CopyStr. Заблокируйте его, и всё остальное продолжит работать, перестанут приходить только обновления.

Ответы на вопросы.

CopyStr бесплатный?

Да. CopyStr скачивается бесплатно и работает без аккаунта и подписки.

На каких Mac работает?

macOS 13 Ventura и новее на Apple Silicon. Приложение это компактный нативный бинарник на Rust и Tauri.

Данные буфера покидают Mac?

Нет. История хранится в локальной базе SQLite на вашем Mac. В сеть CopyStr выходит только чтобы проверить обновление на copystr.com.

Что делает приватный режим?

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

Как открыть историю буфера?

Нажмите горячую клавишу, по умолчанию Cmd+Shift+V, и история откроется у курсора. Ещё можно нажать значок в строке меню или задать свой хоткей в настройках.

Что с паролями и API-ключами?

Пароли из менеджеров паролей не сохраняются: 1Password, Bitwarden, KeePassXC и «Пароли» Apple помечают их, и CopyStr эту пометку соблюдает. Токены, API-ключи и приватные ключи распознаются по формату и тоже пропускаются. Для пароля, скопированного откуда-то ещё, используйте приватный режим: пока он включён, запись полностью отключена.

Как работают сниппеты?

Кликните правой кнопкой по клипу, выберите «В сниппеты» и укажите или создайте папку. Каждый сниппет это полная копия, поэтому он переживает очистку истории. Папки можно переименовать, удалить, выгрузить в JSON и загрузить на другом Mac.

Зачем ему доступ к Универсальному доступу?

Чтобы вставить выбранный клип, CopyStr нажимает за вас Cmd+V, а macOS разрешает это только с Универсальным доступом. Релизы подписаны одним сертификатом, поэтому разрешение сохраняется после обновлений. Без него клип всё равно скопирован, и CopyStr подскажет, как всё исправить.

Как работают обновления?

CopyStr проверяет copystr.com при запуске и по команде из строки меню, затем ставит подписанное обновление на месте, сохраняя историю и настройки.

Готовы прокачать буфер обмена?

Присоединяйтесь к тысячам разработчиков, дизайнеров и авторов, которые больше не теряют скопированное.

Скачать для macOS Бесплатно · Без регистрации