Skip to content
Pancak3ePublic

About

Mimic "WIN+SHIFT+V" on OSX

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

Copy Pal

A lightweight, menu-bar clipboard history manager for macOS 14+. Copy any text, then press ⌘⇧V to summon a floating panel of your recent copies — just like Windows 11's clipboard history (Win+V). Pick an item, and it becomes your active clipboard, ready to paste with ⌘V.

Built entirely with SwiftUI + AppKit, no dependencies, no build system beyond the Swift toolchain.

Features

  • ⌘⇧V floating panel — appears right at your cursor; click or press ↑ / ↓ / ⏎ / esc to navigate and copy.
  • Last 15 text copies stored in memory (newest first, nothing written to disk).
  • Duplicates collapsed — consecutive identical copies don't spam the list.
  • Menu bar icon with the most recent copies, plus:
    • Appearance (System / Light / Dark)
    • Panel size (Small / Medium / Large)
    • Launch at login
    • Optional auto-paste after selecting (Windows-style; needs Accessibility permission to inject the ⌘V keypress — handy, never required)
    • Clear history, quit
  • Text only — exactly the kind of thing you'd copy-paste between apps.

Requirements

  • macOS 14.0 or later
  • Xcode not required — just the Command Line Tools (swift) that ship on any Mac with xcode-select --install

Build & run

./build-app.sh          # compiles + assembles dist/CopyPal.app
open dist/CopyPal.app   # launch

To make "Launch at login" reliable, drag CopyPal.app into /Applications.

How it works

File Responsibility
HotkeyMonitor.swift Registers the global ⌘⇧V via Carbon RegisterEventHotKey — works system-wide with no Accessibility permission
ClipboardMonitor.swift Polls NSPasteboard.general every 250 ms, catches new text copies
HistoryStore.swift In-memory history, capped at 15, dedupes self-writes
PanelController.swift Non-activating floating NSPanel positioned near the cursor
PanelView.swift The SwiftUI list UI + keyboard/click handling
MenuBarView.swift MenuBarExtra UI, recent copies, and settings
AppModel.swift Coordinator wiring it all together

The pattern in PanelController.swift is worth a look if you're interested in non-activating panels — the clipboard stays with your foreground app while the panel still receives keyboard input.

Project layout

copy pal/
├── Package.swift              # Swift package (executable target)
├── Info.plist                 # App bundle metadata (LSUIElement → menu-bar only)
├── build-app.sh               # Build + .app bundle assembly
├── Assets/
│   ├── AppIcon.icns           # App icon
│   └── AppIcon-1024.png       # 1024 master PNG
├── Scripts/make-icon.swift    # Regenerates the app icon from scratch (pure AppKit drawing)
└── Sources/CopyPal/           # All sources

Regenerating the icon

swift Scripts/make-icon.swift   # rewrites Assets/AppIcon.icns

License

MIT — see LICENSE.

About

Mimic "WIN+SHIFT+V" on OSX

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors