A macOS app that turns the MacBook camera notch into a live panel. It's built with .NET MAUI on the AppKit head (maui-labs) and Shiny Controls' NotchView / INotchWindowService.
Hover the notch to open it, and move away to let it fold back into the camera. Apple silicon only.
The notch itself is shared code (ShinyNotch.Core) over a small set of platform interfaces. The macOS app is the one that ships; Windows and Linux heads build from the same code and are still being tested.
Designed, built and maintained by ShinySoft Technologies · powered by Shiny .NET open source
Shiny Notch is not open source. The code is published so you can read it, learn from it and build it for yourself, but you may not copy, repackage, rebrand or redistribute it. See License. The Shiny libraries it's built on are open source (MIT); see Built on Shiny open source.
Signed and notarized builds are on the Releases page. These are the only official builds. If you got Shiny Notch from anywhere else, it isn't ours.
While collapsed, the notch shows a "wing" either side of the camera:
- Left: what's playing: the artwork, and bars in the artwork's colour (flat when paused).
- Right: a running timer, a meeting starting in the next 15 minutes, or the weather where you are, in that order.
With nothing to show, the notch disappears into the camera housing.
Artwork, title, a scrubber and previous/play/next for Apple Music and Spotify, on a card tinted with the artwork's colour.
Like the iOS widget: the conditions now, the next twelve hours, and the week. Each day's low-to-high bar sits on the week's range, and today's bar has a dot at the current temperature. It works from where you are, or any cities you add in Settings; switch between them with ‹ ›. Temperatures are °C or °F, automatic by region: change it in Settings, or tap the temperature to flip it.
Drop files onto the notch to shelve them. Copy them back out (⌘V in Finder pastes them), AirDrop them, reveal or open them, or clear the tray. Files that move or are deleted drop off on their own. Photos from the mirror and voice notes can be put here too.
CPU, GPU and memory as rings, a chart of the last 24 seconds of CPU, and network and disk rates, updated once a second while the tab is open.
One-click shortcuts into macshot, the open-source screenshot app: area, screen, scrolling, text (OCR), recording, and its latest captures to open in its editor. The notch folds away before each capture so it isn't in the shot. The tab only appears when macshot is installed.
Your camera as a mirror, flipped the way a mirror is. Step through looks (Mono, Noir, Sepia, Vivid, Chrome and more), pick the camera when you have more than one, and take a photo: it's saved to Pictures/Shiny Notch with the look applied, and dropped in the File Tray. Brightness works on the camera itself for a USB webcam, so Teams and browsers see it too; on the built-in camera it brightens the mirror only, and the slider says which. The camera only runs while the tab is open.
Record a note with one click, with the time and a level meter while it runs, from whichever microphone you pick. The latest notes are listed to play, put in the tray, reveal or delete. The panel stays open while you record.
A to-do list. Check a task off and it's struck through, then cleared away a day later on its own. New tasks are typed into a quick entry popup over whatever app you're in (the notch never takes the keyboard): Return adds one and clears the box for the next.
The rest of today and tomorrow, from every calendar you have.
A ring that drains as the countdown runs, presets from 1 to 45 minutes, plus +1 min, pause and cancel. The countdown shows in the peek, and the notch chimes and opens for a few seconds when it ends.
Your script scrolls right under the camera, so you read while looking at the lens. There's play/pause, nudge, speed and text size, and the notch stays open while it runs. Edit the script in Settings.
Play/pause, volume and display brightness sit under every tab, and follow the keys and Control Centre. The sliders are Shiny's: their colour warms as the level rises.
Changes from the keys or Control Centre flash in the notch.
- Pin (⦿) keeps the panel open.
- Open at login is turned on the first time the app runs, and after that it's yours to change in Settings. If macOS asks you to approve it in System Settings ▸ General ▸ Login Items, Settings says so and opens that page. If you turn it off there later, Settings shows that too, rather than a switch that's lying.
- Settings (⚙ in the panel) holds the notch size, which tabs show, the teleprompter script, weather places and units, the HUD toggles, permissions and open at login. Turn off the tabs you don't use and the rest spread out across the strip.
- It's an agent app (
LSUIElement) with no Dock or menu-bar icon. To get back to Settings when the notch isn't handy, open Shiny Notch again (from Finder, Spotlight or Launchpad) while it's running. Quit it from Settings.
dotnet build
open src/ShinyNotch/bin/Debug/net10.0-macos/osx-arm64/ShinyNotch.appFor a release build:
dotnet build -c Release
open src/ShinyNotch/bin/Release/net10.0-macos/osx-arm64/ShinyNotch.appDebug builds accept --open <Media|Weather|Tray|Stats|Capture|Mirror|Notes|Tasks|Calendar|Timer|Prompter> to start with the panel pinned open on a tab, which makes the UI drivable without a mouse:
src/ShinyNotch/bin/Debug/net10.0-macos/osx-arm64/ShinyNotch.app/Contents/MacOS/ShinyNotch --open WeatherThe icon's source is src/ShinyNotch/Resources/AppIcon/appicon.svg. After editing it, re-render the PNG the build uses:
rsvg-convert -w 1024 -h 1024 src/ShinyNotch/Resources/AppIcon/appicon.svg -o src/ShinyNotch/Resources/AppIcon/appicon.png| Package | Version | Used for |
|---|---|---|
| Microsoft.Maui.Controls | 10.0.100 | The UI framework |
| Microsoft.Maui.Platforms.MacOS | 0.1.0-preview.13 | .NET MAUI on native AppKit (net10.0-macos), not Mac Catalyst |
| Microsoft.Maui.Platforms.MacOS.Essentials | 0.1.0-preview.13 | MAUI Essentials for the AppKit head |
| Shiny.Core | 6.3.1-beta-0001 | IAppStartupInstaller: open at login (an SMAppService login item), with the approval and turned-off states |
| Shiny.Calendar | 6.3.1-beta-0001 | The Calendar tab and the meeting peek: calendars and today's and tomorrow's events, with permissions through Shiny.Core |
| Shiny.Maui.Controls | 2.0.0-beta-0010 | NotchView, the surface that morphs to fit its content; MotionIconView for the music bars; TableView for Settings |
| Shiny.Maui.Controls.Desktop | 2.0.0-beta-0010 | INotchWindowService (the notch window, hover tracking, camera cut-out size), window-level file drop, and the quick entry window tasks are typed into |
| Shiny.Maui.Controls.Camera | 2.0.0-beta-0010 | CameraView for the mirror: preview, looks, camera choice and photos |
| Shiny.Audio | 3.0.0-beta | Voice notes: recording from a chosen microphone, and playback |
| Shiny.Extensions.Stores | 6.0.1 | Settings, on NSUserDefaults (a settings file on other platforms) |
| Shiny.Extensions.DependencyInjection | 6.0.1 | [Singleton]-attributed services, registered by a source generator |
| Microsoft.Maui.DevFlow.Agent | 0.1.0-preview.13 | Debug builds only: UI inspection and automation |
| Apple framework / service | Used for |
|---|---|
AppKit (NSAppleScript, NSWorkspace, NSPasteboard, NSSharingService) |
Now Playing in Music and Spotify; the file tray's copy, reveal, open and AirDrop |
| AVFoundation | The mirror's camera and voice notes' microphone |
| IOKit USB (UVC) | A USB webcam's own brightness |
| CoreAudio / AudioToolbox | Output volume and mute |
| DisplayServices (private) | Built-in display brightness; there is no public API on Apple silicon |
IOKit, mach host_statistics, sysctl, getifaddrs |
GPU utilisation, disk bytes, CPU and memory, network bytes |
| EventKit | Calendar events |
CoreLocation (CLLocationManager, CLGeocoder) |
Where you are for the weather, and its name |
| Open-Meteo | Forecasts and city search: free, no API key |
| Feature | Asks for | Notes |
|---|---|---|
| Now Playing | Automation (Music, Spotify) | Asked once per player, the first time it's running. A player that isn't running is never contacted, because asking it would launch it. |
| Weather | Location | Only when "Show the weather where I am" is on. Cities you add need nothing. |
| Calendar | Calendars, full access | From the Calendar tab or Settings. |
| Mirror | Camera | The first time the Mirror tab opens. |
| Voice Notes | Microphone | The first time you record. |
| Everything else | nothing |
-
Low power. Nothing polls while nothing changes. Music and Spotify announce every play, pause and track change in a distributed notification; CoreAudio listeners report volume, mute and output-device changes; DisplayServices reports brightness. The notch's clock ticks once a second only while something on screen counts seconds (a running timer, a playing track's position, the System tab) and once a minute otherwise. A countdown is a single timer set for its end.
-
The look is Apple's dark system palette, SF Symbols (drawn once into cached images, so no icon assets ship), and Maui.Graphics drawing for the rings, bars and charts, which repaint in place without rebuilding anything.
-
NotchControllerruns the notch in one of three modes (peek, panel, HUD). It rebuilds the content when its structure changes and updates text in place otherwise. The AppKit head never creates native views for children added to an on-screen layout, so a content swap is a fresh page, and so is a change to the Settings page's lists. -
Now Playing uses AppleScript, not MediaRemote. Since macOS 15.4 the system-wide now-playing API returns nothing to apps without an Apple entitlement, so only Music and Spotify are seen.
-
Weather comes from Open-Meteo, which converts units server-side, so switching °C/°F refetches. Forecasts are cached for 20 minutes per place.
-
Text entry lives in Settings, an ordinary window, and in the quick entry popup for tasks. The notch window is borderless and can never take keyboard focus.
-
One codebase, three desktops.
ShinyNotch.Coreholds the views, the controller, Settings and the services; each head (ShinyNotchfor macOS,ShinyNotch.Windows,ShinyNotch.Linux) implements a handful ofPlatforminterfaces (volume, brightness, system counters, now playing, files, location, icons) and registers them with Shiny's DI source generator. macshot's Capture tab is the one feature only the Mac has.
- Now Playing only sees Apple Music and Spotify (see above).
- Brightness is the built-in display only; most external monitors don't report it.
- The mirror can only change the camera's own brightness on a USB (UVC) webcam. A MacBook's built-in camera has no setting an app can change, so there the slider brightens the mirror alone.
- Open at login registers the app wherever it is when you switch it on. Move it to
/Applicationsfirst, or the login item points at the old location. - Files can't be dragged out of the tray yet (the AppKit head has no drag source). Use Copy, then paste in Finder.
Shiny Notch is a showcase for Shiny .NET, the free, MIT-licensed family of libraries for .NET MAUI, Blazor, ASP.NET Core and native apps that ShinySoft Technologies maintains. They supply the device, background, data and UI layers so an app can concentrate on what it does. The notch itself, the music bars, the settings page, open at login and the calendar all come from Shiny packages anyone can use in their own apps.
| Shiny library | What Shiny Notch uses it for | Docs | Source |
|---|---|---|---|
| Shiny.Maui.Controls | NotchView: the black surface that grows out of the camera housing and morphs to fit the peek, the panel and the HUD |
shinylib.net/controls | shinyorg/controls |
| Shiny.Maui.Controls.Desktop | INotchWindowService (the borderless notch window, hover tracking and the camera cut-out's size), and file drop onto the tray |
Desktop controls | shinyorg/controls |
| Shiny.Core | Hosting and DI, platform permissions, and IAppStartupInstaller for open at login |
Core | shinyorg/shiny |
| Shiny.Calendar | Every calendar you have, and the events in the Calendar tab and the "meeting soon" peek | Calendar | shinyorg/shiny |
Shiny Notch also runs on .NET MAUI for macOS (AppKit), the native AppKit backend for .NET MAUI (not Mac Catalyst). Shiny also maintains community MAUI backends for macOS and Apple TV in mauiplatforms.
If you're building with .NET, the rest of the Shiny ecosystem is free to use:
- Foundation: Mediator, Actors, Dependency Injection, Reflector, Localization Generator
- Hardware and connectivity: BluetoothLE, BLE Hosting, Beacons, Locations, OBD, Network Discovery, Wi-Fi
- Device data: Music, Health, Contacts, Calendar, App Store
- AI: AI Conversations, Speech
- Background: Jobs, Local Notifications, Push, HTTP Transfers
- UI: 80+ MAUI and Blazor controls, MAUI Shell
- Data and server: DocumentDb, Data Sync, Stores, HTTP Server, ASP.NET Extensions
Browse everything at shinylib.net or on GitHub at github.com/shinyorg. Packages are on NuGet.
Shiny Notch was designed and built by ShinySoft Technologies, the company behind Shiny .NET. We've spent 25+ years shipping software for people who work away from a desk: fleets, warehouses, job sites, hospitals and connected hardware. We build apps like this one for clients, and we maintain the open-source libraries that make them possible.
| Engagement | What you get |
|---|---|
| Fractional CTO | Senior technical leadership without a full-time hire: architecture, roadmap, build-vs-buy, hiring and code review |
| Team Augmentation | Senior engineers who ship from day one, unblock stalled or inherited codebases, and leave standards that last |
| Idea to Product | Discovery and analysis that turn a rough concept into a scoped, costed, buildable plan |
What we build:
- Mobile and desktop with .NET MAUI: iOS, Android, Windows and macOS, including native AppKit apps like this one
- IoT and Bluetooth: BLE central and peripheral, device fleets and hardware integration
- Fleet and field operations: location tracking, geofencing and telematics where connectivity isn't guaranteed
- Cloud and web: the ASP.NET Core services behind the device
- Modernization: legacy .NET Framework and Xamarin apps moved onto current platforms
- AI: practical, measured, and your data stays yours
Want something like Shiny Notch for your product or team? shinysoft.biz · allan@shinysoft.biz · LinkedIn · BlueSky · YouTube
Copyright © 2026 ShinySoft Technologies. All rights reserved.
Shiny Notch is source-available, not open source. The full terms are in LICENSE.md. In short:
| You may | You may not |
|---|---|
| Read and study the source code | Copy the app, or substantial parts of it, into another product |
| Build and run it on your own Macs for your own personal, non-commercial use | Repackage, rebrand, rename or re-sign it and distribute it |
| Download and use the official builds from Releases | Publish it, or anything derived from it, to the Mac App Store, Setapp, Homebrew or any other channel |
| Fork on GitHub only to send a pull request back to this repository | Sell it, bundle it, or offer it as a hosted or paid service |
| Report issues and suggest features | Remove or change the ShinySoft Technologies name, logo, copyright or license notices |
"Shiny Notch", "ShinySoft Technologies" and the ShinySoft and Shiny Notch logos are trademarks of ShinySoft Technologies and are not licensed for your use.
The Shiny .NET libraries Shiny Notch depends on are separate projects under the MIT license, and you're free to use them in your own apps. Other third-party components keep their own licenses. This license covers only the Shiny Notch application.
For commercial licensing, white-labelling or a custom build, contact allan@shinysoft.biz.
Made with ✨ by ShinySoft Technologies · Ontario, Canada












