Barveil hides the macOS menu bar only while a full-screen video is actually playing — and brings it straight back when you pause or leave full screen.
Install · Features · How it works · Build · GitHub
| When | The menu bar |
|---|---|
| Desktop, apps, full-screen documents, windowed video | Stays exactly as you keep it |
| A full-screen video is actually playing | Steps aside for the picture |
| You pause the video (still in full screen) | Comes straight back — the default |
| The video leaves full screen | Stays with you |
| Barveil is off, or you quit it | Your original macOS setting is restored |
The menu bar is hidden only while a full-screen video is really playing. Everything else — the desktop, apps, even full-screen documents — keeps the menu bar right where you put it, and the moment playback pauses, it is back. No toggling, no shortcut to remember. (If you would rather keep the bar hidden while paused, that is a setting.)
Barveil is for you if you keep the menu bar visible on purpose — for the clock and status icons, or because full screen simply looks better with it on a MacBook with a notch. The one place you don't want it: on top of a full-screen video.
macOS's built-in setting can't express that. It is all-or-nothing, and people have been asking Apple for the missing option for years:
- “I want the menu bar all the time except when a video is playing fullscreen.” — r/MacOS
- “I can't believe Apple hasn't developed a feature to turn off the menu bar when you're in a fullscreen video.” — r/mac
- “The dock and menu bar remain visible, covering the top and bottom parts of the video.” — Ask Different
- Apple Community even has a thread titled “Hide the menu bar only during fullscreen video playback.”
You probably don't need Barveil if you already hide the menu bar everywhere, or you never watch videos in full screen.
macOS's Automatically hide and show the menu bar setting is all-or-nothing: the menu bar stays visible everywhere — including on top of full-screen video — or it hides everywhere. There is no “keep it, except while the video plays” in between.
Barveil adds exactly that missing option, and stays deliberately narrow: it waits until the frontmost app is actually producing playback and the picture really fills the display. Full-screen documents, games, and ordinary windows keep their menu bar. Some menu-bar utilities hide the bar for every full-screen window; Barveil does not.
No account. No analytics. No “smart” cloud service.
- Only while playing — the menu bar hides only when a full-screen video is actually playing; desktop, apps, full-screen documents, and windowed video are untouched.
- Back on pause — pause the video or leave full screen and the menu bar returns immediately. Prefer to keep it hidden while paused? That is one setting away.
- Notch-friendly — on a MacBook with a notch, the menu bar can keep filling the top row; Barveil clears it only for actual playback.
- Browser-aware — Safari, Chrome, and other browsers are handled conservatively; Accessibility access improves exact browser-content detection.
- Manual control — use the menu-bar panel or the global shortcut when you want to override automatic behavior for the current app.
- App exceptions — keep automation away from apps where you prefer manual control.
- Native settings — a compact sidebar with General, Privacy, Advanced, and Info.
- Local-first — preferences and the short diagnostics log stay on this Mac.
- No Dock icon — Barveil lives in the menu bar.
The panel — light and dark, shown while it is hiding the bar for a full-screen video.
Settings — General, Privacy, Advanced, and About.
- macOS 14.4 or later
- Accessibility access is optional, but recommended for exact browser detection
Download the latest Barveil-<version>.dmg or Barveil-<version>.zip from
GitHub Releases, then drag
Barveil.app into Applications.
The free builds are ad-hoc signed and not notarized. On first launch, right-click
Barveil.app and choose Open. If macOS says the app is damaged, remove the
quarantine attribute once:
xattr -dr com.apple.quarantine /Applications/Barveil.app- Launch Barveil and click the menu-bar icon.
- Keep Automatic enabled, and leave your menu bar setting as it is — Barveil only changes it during playback.
- Play a video in full screen; the menu bar steps aside.
- Pause the video or leave full screen; the menu bar comes right back.
- If an app should never be automated, add it to General → Excluded Apps.
- Barveil uses macOS Accessibility access only to distinguish a full-screen browser window from a video that fills the browser content area.
- On first use, macOS shows its own registration prompt. Barveil does not open System Settings at the same time; you choose when to continue.
- If Barveil is not listed in Accessibility, use the
+button in System Settings. - Barveil does not read page content, passwords, messages, or files.
- The app does not require an account and does not collect analytics.
- Barveil itself makes no network requests. Info → Check for Updates opens the GitHub Releases page in your browser.
Barveil combines several local signals:
- the frontmost application and its windows;
- whether macOS is showing a native full-screen Space;
- whether a browser still has its chrome or the picture fills the content area;
- whether the app is actually producing playback.
The detectors can briefly disagree while entering or leaving full screen, so a stabilizer waits for the state to settle before touching the system setting. When the answer is uncertain, Barveil keeps the menu bar visible instead of guessing.
| Page | What it contains |
|---|---|
| General | Control mode, paused behavior, language, launch at login, app exceptions |
| Privacy | Accessibility status and a direct link to System Settings |
| Advanced | Unusual-player detection, system recovery, diagnostics |
| Info | Version, GitHub, and Check for Updates |
The app menu's About Barveil item opens the Info page.
Requirements:
- macOS 14.4 or later
- Xcode 26 or later
git clone https://github.com/CC5103/Barveil.git
cd Barveil
# Debug build (ad-hoc signed)
./scripts/build.sh Debug
# Release build
./scripts/build.sh Release
# Run all tests
./scripts/test.sh
# Build zip + dmg + SHA256SUMS
./scripts/package.shFor a Developer ID signed and notarized build, use
scripts/notarize.sh; its header documents the required
credentials and environment variables.
- Build and Test runs on pushes to
main, pull requests, and manual dispatches. Pushes tomain(and manual runs) also upload the zip, dmg, andSHA256SUMS.txtas a workflow artifact, so the newest build is always downloadable from the run page. - Package runs on
v*tags or manually. It builds the zip, dmg, and checksums; tag runs publish them to the matching GitHub Release.
Issues and pull requests are welcome. Before opening a PR:
./scripts/test.shWhen changing detection behavior, keep the default conservative: a missed hide is better than hiding the menu bar when no video is playing.
MIT © 2026 Yunhao Zhou. See LICENSE.
If Barveil makes full-screen video nicer on your Mac, consider starring the repository — it helps other people find it.


