Десктоп · история буфера · без облака · превью

MyClipboard

Локальная история буфера обмена для macOS и Windows — без облака, аккаунта и аналитики

Product · macOS · Windows SwiftSwiftUIAppKit.NET 8WPF
Скриншот проекта «MyClipboard»
превью 0.1.0 Статус

Задача

Что нужно было решить

Системный буфер — один слот. Скопировали ссылку, потом код, потом email — и ссылка уже потеряна. Облачные менеджеры просят аккаунт и синхронизацию; для личных фрагментов и скриншотов это лишний риск и лишний шум.

Решение

Что я сделал

Сделал нативное приложение сразу под две платформы с одинаковым поведением: на macOS — Swift, SwiftUI и AppKit (иконка в Menu Bar, панель ⌘⌥V и быстрый цикл ⌘⇧V), на Windows — .NET 8 и WPF (трей). Цепочка от захвата буфера до вставки: мониторинг, фильтр приватности, хранилище, панель или HUD, сервис вставки. История на диске, без дублей, с избранным, пресетами и поиском; пропускаю скрытый буфер и копирование из менеджеров паролей.

Компромиссы

Чем пришлось пожертвовать

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

Результат

Что получилось

Превью 0.1.0: macOS и Windows с паритетом — панель истории, быстрый цикл, текст, изображения и файлы, без облака и аналитики. Исходники в закрытом репозитории; скачать и поставить можно из публичного MyClipboard-dist.

Итог в трёх словах

  • macOS и Windows
  • Без облака
  • Панель и цикл
  • Фильтры приватности

Стек

  • Swift
  • SwiftUI
  • AppKit
  • .NET 8
  • WPF
  • XCTest
  • xUnit
  • Sparkle