Paper-grain texture overlay for macOS — make your screen feel like paper
19
stars
52
commits
Swift
primary language
Sep 6, 2026
updated
projects.akshatkatiyar.com/projects/deckle
A free, open-source macOS menu bar app that lays a subtle paper-grain texture over your entire screen, making long reading and writing sessions feel more like paper than glass. Choose a built-in paper, tune it, or blend and preview your own before saving.

If Deckle makes your screen nicer, a star helps other people find it ⭐
A deckle is the wooden frame used in hand papermaking — it leaves behind the soft, feathered "deckle edge" that marks real handmade paper.
Not a calibrated blue-light filter — a matte texture overlay. The grain breaks up the perfectly uniform backlight glow that makes screens feel harsh, while every pixel of your work stays interactive because the overlay is fully click-through. Paper Mill reports estimated blue-channel reduction and contrast retention as design guidance, not a medical claim.
![]() | ![]() |
| Everything at a glance. Status, intensity, quick controls, and a scrollable paper library. | Preview before you commit. Blend a paper on the real display, inspect its contrast, then create it. |
deckle:// URL commands work from Shortcuts, Raycast, Alfred, cron, or Terminal
Search switches directly to a full results grid; clearing it restores the status dashboard.
brew tap yellowfoxh4xor/tap
brew trust yellowfoxh4xor/tap # Homebrew 6+ asks once for third-party taps
brew install --cask deckle
Grab the DMG from the latest release, open it, and drag Deckle into Applications. The app is signed with a Developer ID and notarized by Apple, so it launches without any Gatekeeper warning.
Requires Xcode command line tools, macOS 13+:
git clone https://github.com/<you>/deckle.git
cd deckle
make install # builds, copies Deckle.app to /Applications, and launches
Or make run to try it from dist/ without installing. Look for the paper-sheet icon in your menu bar.
NSWindow per display at .screenSaver level. Each window ignores mouse events, joins every Space, and tiles one small paper image through Core Animation, so memory does not grow with display resolution.alphaValue; identical render inputs reuse bounded caches.NSBackgroundActivityScheduler; ordinary overlay changes are coalesced, and Paper Mill draft pushes are debounced to avoid regenerating spectral fields for every slider event.Anything that can open a URL can drive Deckle — Shortcuts' "Open URL" action, open in Terminal, Raycast, Alfred, cron:
deckle://on | off | toggle
deckle://snooze?minutes=30 deckle://resume
deckle://texture?name=Ink%20Stone
deckle://intensity?percent=25
deckle://grain?size=2&strength=1.2
Examples: a Shortcuts personal automation "At sunset → Open URL deckle://on" gives you circadian scheduling; "When Work Focus turns on → deckle://texture?name=Soft%20Wove" pairs papers with contexts.
swift run # run unbundled (dev)
make app # build dist/Deckle.app
make clean
No dependencies; pure Swift + AppKit + SwiftUI.
deckle://on)The easiest PR: share a paper recipe — 10 lines of JSON, no Swift needed. For code, see CONTRIBUTING.md and the good first issues. Questions and ideas → Discussions.
49 commits
3 commits
Swift
98.7%
Makefile
1.3%
Paper-grain texture overlay for macOS — make your screen feel like paper
19
stars
52
commits
Swift
primary language
Sep 6, 2026
updated
projects.akshatkatiyar.com/projects/deckle
A free, open-source macOS menu bar app that lays a subtle paper-grain texture over your entire screen, making long reading and writing sessions feel more like paper than glass. Choose a built-in paper, tune it, or blend and preview your own before saving.

If Deckle makes your screen nicer, a star helps other people find it ⭐
A deckle is the wooden frame used in hand papermaking — it leaves behind the soft, feathered "deckle edge" that marks real handmade paper.
Not a calibrated blue-light filter — a matte texture overlay. The grain breaks up the perfectly uniform backlight glow that makes screens feel harsh, while every pixel of your work stays interactive because the overlay is fully click-through. Paper Mill reports estimated blue-channel reduction and contrast retention as design guidance, not a medical claim.
![]() | ![]() |
| Everything at a glance. Status, intensity, quick controls, and a scrollable paper library. | Preview before you commit. Blend a paper on the real display, inspect its contrast, then create it. |
deckle:// URL commands work from Shortcuts, Raycast, Alfred, cron, or Terminal
Search switches directly to a full results grid; clearing it restores the status dashboard.
brew tap yellowfoxh4xor/tap
brew trust yellowfoxh4xor/tap # Homebrew 6+ asks once for third-party taps
brew install --cask deckle
Grab the DMG from the latest release, open it, and drag Deckle into Applications. The app is signed with a Developer ID and notarized by Apple, so it launches without any Gatekeeper warning.
Requires Xcode command line tools, macOS 13+:
git clone https://github.com/<you>/deckle.git
cd deckle
make install # builds, copies Deckle.app to /Applications, and launches
Or make run to try it from dist/ without installing. Look for the paper-sheet icon in your menu bar.
NSWindow per display at .screenSaver level. Each window ignores mouse events, joins every Space, and tiles one small paper image through Core Animation, so memory does not grow with display resolution.alphaValue; identical render inputs reuse bounded caches.NSBackgroundActivityScheduler; ordinary overlay changes are coalesced, and Paper Mill draft pushes are debounced to avoid regenerating spectral fields for every slider event.Anything that can open a URL can drive Deckle — Shortcuts' "Open URL" action, open in Terminal, Raycast, Alfred, cron:
deckle://on | off | toggle
deckle://snooze?minutes=30 deckle://resume
deckle://texture?name=Ink%20Stone
deckle://intensity?percent=25
deckle://grain?size=2&strength=1.2
Examples: a Shortcuts personal automation "At sunset → Open URL deckle://on" gives you circadian scheduling; "When Work Focus turns on → deckle://texture?name=Soft%20Wove" pairs papers with contexts.
swift run # run unbundled (dev)
make app # build dist/Deckle.app
make clean
No dependencies; pure Swift + AppKit + SwiftUI.
deckle://on)The easiest PR: share a paper recipe — 10 lines of JSON, no Swift needed. For code, see CONTRIBUTING.md and the good first issues. Questions and ideas → Discussions.
49 commits
3 commits
Swift
98.7%
Makefile
1.3%