Skip to content

thefinder808/macpad

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

macpad

A native macOS text editor inspired by the Windows 11 Notepad.

macpad in dark mode

Disclaimer: macpad is an independent, unofficial fan project. It is not affiliated with, endorsed by, or sponsored by Microsoft Corporation. "Windows," "Windows 11," and "Notepad" are trademarks of Microsoft Corporation. macpad ships none of Microsoft's proprietary code, fonts, or assets — only open-source components from third parties (see Credits).

Buy Me A Coffee

Features

  • Multi-tab editing with a Win11-style tab strip and per-tab undo history
  • TextKit 1 NSTextView core — smart quotes, dash substitution, autocorrect, link detection, and data detection all disabled by default (matches Win11 Notepad's "what you type is what you get" behavior)
  • Optional spellcheck — off by default; toggle on in Settings (no autocorrect — only red underlines + right-click suggestions)
  • Find / Replace overlay with regex, match-case, and whole-word toggles
  • BOM-aware file open — UTF-8 (with or without BOM), UTF-16 LE/BE, Windows-1252
  • Line-ending conversion — LF, CRLF, CR (undoable)
  • Per-tab zoom, configurable font family and size, word wrap toggle
  • Always on Top — keep the window floating above other apps for quick copy/paste (View menu or Settings)
  • Select line from the left margin — click the left margin beside a line to select the whole line; drag to select several (toggle in Settings)
  • Live status bar — line/column, character count, word count, encoding, EOL, zoom
  • Autosave — every keystroke (debounced 750 ms) writes to ~/Library/Application Support/macpad/Sessions/
  • Session restore — quit with tabs open, relaunch with the same tabs, cursor positions, and scroll offsets
  • Dark / Light / System themes (Win11 color tokens verified against the open-source microsoft-ui-xaml repo)
  • Finder integration — Open With, drag-and-drop a file onto the window to open as a new tab
  • Send to macpad — select text in any app, then right-click → Services → "Send to macpad (New Tab)" / "(Current Tab)" to stash it in macpad without leaving the app you're in, or use the default keyboard shortcuts ⌘⇧Y (New Tab) / ⌘⇧U (Current Tab). Enable once — and rebind the shortcuts to anything you like — in System Settings → Keyboard → Keyboard Shortcuts → Services.
  • Menu-bar scratchpad — a note.text icon in the menu bar pops down a quick-capture scratchpad you can paste into / copy from; push it into a new or the current tab, or open the app (toggle the icon in Settings)
  • Tab drag-reorder
  • Custom app icon designed for macpad — paper stack on a blue gradient (not Microsoft's Notepad icon)
  • Automatic updates — macpad checks for new versions and updates itself (App menu → Check for Updates…, or in the background; toggle in Settings → Software updates). Powered by Sparkle, with an EdDSA-signed appcast served from GitHub Pages.
  • Notarized .dmg distribution via ./build.sh notarize

Keyboard shortcuts

Action Shortcut
New tab ⌘T
Open file ⌘O
Save ⌘S
Save As ⇧⌘S
Close tab ⌘W
Next tab ⌘⇧]
Previous tab ⌘⇧[
Find ⌘F
Find next ⌘G
Find previous ⇧⌘G
Replace ⌥⌘F
Toggle word wrap ⌥⌘W
Zoom in ⌘=
Zoom out ⌘-
Reset zoom ⌘0
Settings (click the gear icon at the top-right of the tab strip)

Standard macOS text-editing shortcuts (⌘Z undo, ⇧⌘Z redo, ⌘A select all, ⌘X/⌘C/⌘V cut/copy/paste) all work via the responder chain.

Screenshots

Multiple tabs open

Find and replace bar with regex and match-case toggles

Win11-styled settings page

Install

Download the latest signed and notarized .dmg from Releases, drag macpad.app to /Applications, and launch.

The DMG is signed with a Developer ID and notarized by Apple, so Gatekeeper will accept it without any "untrusted developer" prompts.

Build from source

Requires Xcode command-line tools (Swift 5.9+) and macOS 14 (Sonoma) or later.

git clone https://github.com/thefinder808/macpad.git
cd macpad
./build.sh run         # debug build, exec binary with stdout visible
./build.sh open        # debug build, launch as a normal app
./build.sh release     # release .app, ad-hoc signed
./build.sh install     # release .app copied to /Applications
./build.sh clean       # remove build artifacts

For notarized distribution (requires a Developer ID cert and xcrun notarytool keychain profile):

brew install create-dmg
xcrun notarytool store-credentials macpad-notary \
    --apple-id <email> --team-id <TEAMID> --password <app-specific>
./build.sh notarize    # produces dist/macpad-<version>.dmg

Architecture

  • Swift Package Manager, single executable target — no .xcodeproj.
  • SwiftUI for layout and state; AppKit interop (NSViewRepresentable) for the editor (NSTextView), window chrome, and the NSVisualEffectView backdrop.
  • @main App + NSApplicationDelegateAdaptor + a shared AppState (static let shared) so the AppDelegate can reach the same instance SwiftUI uses for autosave flush on termination.
  • One shared NSTextView with textStorage and undoManager swapped on tab activation — O(1) views, O(N) storages, matches Sublime / VS Code.
  • Reference-type TabState because NSTextStorage and NSUndoManager have identity.
  • TextKit 1, not TextKit 2 — macOS 14.x TextKit 2 has open regressions on temporary-attribute drawing (used for find highlights) and IME composition.
  • Spellcheck yes, autocorrect no — macOS NSTextView has no per-view override for sentence-start capitalization or period substitution, so enabling isAutomaticSpellingCorrectionEnabled would silently drag along the system-wide auto-capitalization (mangling tehTeh). Spellcheck is wired to a per-tab isContinuousSpellCheckingEnabled toggle; autocorrect is hard-false.

Support

If macpad makes your Mac-life slightly nicer and you'd like to say thanks:

Buy Me A Coffee

Or just star the repo — that's also great.

Credits

macpad would not have been possible without these open-source components:

  • Fluent UI System Icons — MIT-licensed icon set by Microsoft, used for tabs, status bar, and settings.
  • Cascadia Mono — OFL-licensed monospace font by Microsoft (optional editor font).
  • microsoft-ui-xaml — MIT-licensed Win11 design token reference (Common_themeresources_any.xaml, TabView_themeresources.xaml).

All three of these are explicitly open-sourced by Microsoft under permissive licenses. No proprietary Microsoft code, fonts, or assets are bundled with macpad.

The app icon was designed with Claude Design.

The macOS-side architecture borrows conventions established in two of my earlier macOS apps, MacPerf and TraceViewbuild.sh notarize pipeline, AppTheme protocol, the isMenuTracking gate against menu-tracking flicker, and the SwiftPM-only project layout.

License

MIT © 2026 Nathaniel Graham

About

Pixel-perfect Windows 11 Notepad clone for macOS

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors