Skip to content

satsdisco/ledge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ledge icon

Ledge

A native macOS utility that turns the notch into a calm, useful surface.
File Shelf · Now Playing · Timer · Stopwatch · World Clocks · Bitcoin · Clipboard · Notes

Release macOS 14+ Swift Downloads

satsdisco.github.io/ledge · Download · Changelog


What it does

Ledge lives invisibly inside your MacBook notch. Hover or press ⌃⌥Space to expand a clean drawer with your active module. Right-click for quick actions. Close the drawer and it disappears — no Dock icon, no menu bar clutter.

Modules

Module What it does
File Shelf Drag files onto the notch to park them temporarily. Drag out to any app, copy path, reveal in Finder, pin items across relaunches.
Now Playing Album art, track title, artist, and transport controls for Apple Music and Spotify.
Timer / Stopwatch Focus presets (5 / 10 / 25 / 60 min) with start / pause / reset and a completion sound, plus a count-up stopwatch with drift-free pause and resume.
World Clocks Up to 6 configurable timezones with analog or digital faces, live-updating.
Bitcoin Live BTC/USD from CoinGecko — price, 24h change, and a sparkline chart.
Clipboard Manual stash for text, images, and files. Press ⌃⌥V, click Capture, or drag onto the notch. Rich text + HTML preserved, on-device OCR on stashed images (text becomes searchable), pinning, snippet editing, full keyboard nav (↑↓ ⏎ ⌫ ⌘F ⌘1–9 space). Concealed-clipboard hints from password managers are honored — secrets get skipped.
Notes Daily notepad with auto-rollover. Today's note is always editable and autosaves; at midnight it slides into a scrollable archive that renders markdown (headers, lists, bold, code, links).

Each module can be enabled or disabled independently in Settings.

Install

Download the latest DMG (macOS 14 Sonoma or later)

  1. Open the DMG.
  2. Drag Ledge to Applications.
  3. Launch Ledge. Grant Automation permission when prompted (needed for Now Playing).
  4. Enable "Launch at login" in Settings if you'd like.

Ledge is Developer ID signed and Apple notarized — no Gatekeeper warnings.

Usage

Action How
Expand Hover the notch, or press ⌃⌥Space
Collapse Move the cursor away, or press ⌃⌥Space again
Switch modules Click the tabs in the expanded header
Stash to clipboard Drag onto the notch, or press ⌃⌥V to capture the system clipboard
Drop files Drag any file onto the notch
Quick actions Right-click the notch area
Open Settings Right-click → Settings, or expand + ⌘,
Quit Right-click → Quit Ledge

Both global shortcuts are rebindable in Settings → Shortcuts. The full Clipboard keyboard cheat sheet lives there too.

Build from source

Requires Xcode 16+ and macOS 14+.

git clone https://github.com/satsdisco/ledge.git
cd ledge
swift build
./scripts/make-app.sh
open build/Ledge.app

To build a signed release DMG:

./scripts/release.sh              # Developer ID signed
./scripts/release.sh --notarize   # + Apple notarized

Architecture

Ledge is built with Swift + SwiftUI for content and AppKit (NSPanel) for the floating window layer. The module system uses a protocol-based architecture — each module is a self-contained unit with its own views, state, and persistence.

App/                 Entry point, AppDelegate, RootCoordinator
Window/              NSPanel, geometry, display coordination
Interaction/         Hover engine, expansion controller, keyboard shortcuts
ModuleHost/          Module protocol, registry, persistence, enable/disable
Modules/             FileShelf, NowPlaying, Timer, Clocks, Bitcoin, Clipboard, Notes
Services/            Logging, feature flags, login item, Sparkle updater
DesignSystem/        Motion tokens, palette, typography
Settings/            SwiftUI settings panes

See docs/ARCHITECTURE.md for the full design, and docs/ADRs/ for key engineering decisions.

Privacy

Ledge is local-first. The only network calls are:

  • CoinGecko API — public price data for the Bitcoin module (no auth, no tracking).
  • Sparkle — checks https://satsdisco.github.io/ledge/appcast.xml once a day for new versions. Updates are signed with an EdDSA key and only installed if the signature matches.

Clipboard images run through the on-device Vision framework for OCR. Nothing leaves your Mac.

No telemetry, no analytics, no accounts, no cloud sync. Your data stays on your Mac in ~/Library/Application Support/Ledge/.

Requirements

  • macOS 14 Sonoma or later
  • Apple silicon or Intel Mac (universal binary)
  • A Mac with a notch (works on non-notch Macs with the synthetic-notch option in Settings → Advanced)

License

All rights reserved. Free to download and use.

Credits

Built by @satsdisco.

Uses KeyboardShortcuts by Sindre Sorhus and Sparkle by Andy Matuschak / the Sparkle Project.

About

A native macOS utility that turns the notch into a calm, useful surface.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors