A floating notch and app dock for Windows and macOS. Hover the pill at the top of your screen and it opens into a dock of pinned apps; scroll and it turns into pages for your machine, the sky, your day and your music. Free, MIT licensed, no account, no telemetry.
Download · Website · Changelog · Releases · Report a bug
QuickNotch is one small pill pinned to the top-centre of the screen. Hover it and a dock of pinned apps grows out of it, leaning toward the cursor so a click always lands where you expect. Scroll over it and the same island turns into another page — no window to arrange, no tab to find, nothing to dismiss.
| State | What you get |
|---|---|
| Quickview (collapsed) | Date and time, weather, laptop and device battery, unread notifications. While music plays it becomes a vinyl disc with a marquee title and a live waveform. |
| Apps | Fisheye dock of pinned apps, one click to launch. |
| System | CPU, GPU, memory, storage, download and upload as live rings; click through to Task Manager or Activity Monitor. |
| Weather | Today plus a seven-day outlook, automatic by IP or pinned to a town you choose. |
| Calendar | Google Calendar for the day, with the next event ticking along in the pill. |
| Music | Cover art, progress, transport and volume — Windows media sessions, or MediaRemote on macOS. |
| Gaming (Windows) | A fullscreen game replaces the pill with FPS, CPU, GPU, ping and download; each cell can be switched off. |
The notch sits flush above the menu bar on macOS and above fullscreen games on Windows, and it stays quiet: the Dock icon (on macOS) and taskbar presence appear only while Settings is open.
Grab the installer for your machine from quicknotch.app/download or the latest release:
| Platform | File |
|---|---|
| Windows 10 & 11 (x64) | .msi (or .exe) |
| macOS 12+ Apple silicon | -arm64.dmg |
| macOS 12+ Intel | -x64.dmg |
The installers are not code-signed or notarized yet, so the operating system will warn
once. The app is open source, and every release publishes SHA256SUMS.txt; download only
from quicknotch.app or the GitHub releases page.
macOS
- Open the
.dmgand drag QuickNotch into Applications. - Open QuickNotch. If macOS says it cannot verify the app or that it is damaged, choose Done.
- Open System Settings → Privacy & Security. Scroll to Security, click Open Anyway for QuickNotch, and confirm with your password or Touch ID.
- If you prefer the right-click route: right-click QuickNotch in Applications, choose Open, then Open again.
Terminal alternative: xattr -dr com.apple.quarantine /Applications/QuickNotch.app.
Use it only on an installer you downloaded from the official release.
Windows
- Run the
.msior.exeinstaller. - If Microsoft Defender SmartScreen says Windows protected your PC, choose More info, then Run anyway.
- Finish the installer.
Once installed, QuickNotch updates itself: it checks GitHub in the background and swaps in the next release after you press Restart & update in Settings → Changelog.
You need JDK 17+. Everything else is downloaded by Gradle. macOS builds also compile
the small Objective-C bridges (cc is part of the Xcode command-line tools).
git clone https://github.com/StarkDroid/QuickNotch.git
cd QuickNotch
./gradlew :composeApp:run # launch overlay + tray
./gradlew :composeApp:compileKotlinDesktop # fast type check
./gradlew :composeApp:detekt # static analysis (must be green)
./gradlew :composeApp:packageDistributionForCurrentOS # installer for this OSOn Windows use gradlew.bat. Installers land in
composeApp/build/compose/binaries/main/ (.msi/.exe, or .dmg plus
app/QuickNotch.app via :composeApp:createDistributable).
Calendar sign-in in a local build opens the production site by default. To use the local
site, run npm run dev:oauth in web/, then start the app with
QUICKNOTCH_WEB_BASE=http://localhost:5173 ./gradlew :composeApp:run.
Run the app with :composeApp:run, not java -jar. The plain jar has no manifest and
the bridges are synced by the build.
Calendar sign-in needs a Google OAuth client, and this repository carries
neither half of it: the client id names this project's client, the secret
authenticates it. Official installers get both from CI. For a local build, put
them in the ignored local.properties:
googleClientId=...apps.googleusercontent.com
googleClientSecret=GOCSPX-...or export QUICKNOTCH_GOOGLE_CLIENT_ID and
QUICKNOTCH_GOOGLE_CLIENT_SECRET before building. Everything else works
without them; Calendar then reports that the build has no Google client. If you
are forking, create your own client in the Google Cloud console and use its
values.
The website has its own build entry at the repository root: npm run build
installs and builds web/, and npx wrangler deploy publishes it to
quicknotch.app. Those are the same two commands Cloudflare runs, so see
web/README.md before changing either.
composeApp/ Kotlin + Compose Multiplatform desktop app
src/commonMain pure Kotlin: calendar + weather APIs, strings, glyphs
src/desktopMain overlay, dock, widgets, media, system probes, settings
native/ Win32 PowerShell bridges and macOS Objective-C bridges
web/ SvelteKit marketing site (static, prerendered, Cloudflare Workers)
docs/ banner sources for the README
config/ detekt configuration and baseline
The app is documented where it lives: main.kt for the process and window model,
system/ for the per-platform probes, FloatingNotchOverlay for the overlay
choreography, and the media, calendar and weather packages for the rest. The
comments carry the reasons, including the traps that cost a day. Read those before
changing anything under ui/ or system/.
Every merged pull request that touches the app becomes a release. The workflow plans the
next version from the PR's labels, builds the Windows installers and both macOS DMGs,
then publishes them with SHA256SUMS.txt and a cumulative changelog.json — the same
feed the app and the website changelog read.
| Label | Bump |
|---|---|
release:major, major, breaking |
major |
release:patch, patch, fix, bug |
patch |
| anything else | minor |
A PR that only touches web/, docs or CI merges without producing a build. Local builds
report 2.0.0 unless CI passes the published number with -PappVersion=x.y.z.
- Branch from
main, keep one logical change per commit, and sign your commits (git commit -S). ./gradlew :composeApp:compileKotlinDesktop :composeApp:detektmust pass; run:composeApp:runand check the notch before you open the PR.- A feature ships on three surfaces — the overlay, the onboarding walkthrough and
web/— in the same pull request, all telling the same story. - Nothing is pushed for you: open the PR from your own fork or branch.
Issues and ideas are welcome at github.com/StarkDroid/QuickNotch/issues.
MIT — see LICENSE. Use it, fork it, ship your own notch.
QuickNotch is free and has no upsell. If it earns a place on your screen and you feel like saying thanks, buy me a coffee — it keeps the updates coming and unlocks nothing.
