Custom status bar for macOS. Replaces the boring default bar with something actually nice to look at.
Widgets-compressed.mp4
Glance is a status bar replacement for macOS. It sits at the top of your screen and shows you the stuff you actually care about: workspaces, current track, volume, Wi-Fi, battery, time. Everything is configurable through a simple TOML file or a Settings GUI.
Built with native Swift and SwiftUI. No Electron, no web views, no bloat.
- Liquid Glass UI with blur, gradient borders, glow, and shadows
- 11 built-in presets so you can match your setup
- 16 widgets — spaces, now playing, weather, battery, volume, brightness, bluetooth, clipboard, pomodoro, and more
- Native macOS Spaces out of the box (yabai and AeroSpace also supported)
- Rich popups for every widget: calendar with events, network speed, battery health, now playing with progress bar
- 4 bar formations: full, floating, islands, pills
- Custom script widgets — run any shell command and display its output in the bar
- Auto-updates via Sparkle
- TOML config with live reload. Edit, save, see changes instantly
- Settings GUI if you don't want to touch config files
- Global hotkey (Ctrl+Option+B) to toggle bar visibility
- Fullscreen auto-hide — bar fades when apps go fullscreen
- Window gap management so maximized windows don't hide behind the bar
- Launch at Login via native macOS login items
| Widget | What it shows |
|---|---|
| Spaces | Your workspaces with app icons. Click to switch. 5 display modes, 4 highlight styles |
| Active App | Name of the frontmost app |
| Now Playing | Current track, album art, progress bar, controls (Music & Spotify) |
| Volume | Speaker icon, scroll to adjust. Popup: slider + output device |
| Brightness | Display brightness, scroll to adjust |
| Network | Wi-Fi/Ethernet status. Popup: signal, speed, IP, Tx Rate |
| Battery | Charge level. Popup: health %, cycles, temperature |
| Bluetooth | Connected devices with battery levels (AirPods, keyboards, mice) |
| Time | Customizable date/time. Popup: calendar grid + upcoming events |
| Weather | Temperature + condition. Popup: humidity, wind, feels like, 5-day forecast |
| System Monitor | CPU % + RAM usage. Popup: usage bars, memory pressure |
| Disk | Storage usage with free/total display |
| Input Language | Current keyboard layout, zero-polling |
| Clipboard | Clipboard history (20 entries), click to paste |
| Pomodoro | Focus timer with work/break cycles and notifications |
| Script | Run any shell command on an interval. Display output as text |
Plus spacer and divider for layout.
Pick one line in your config and the whole bar changes:
![]() Liquid Glass |
![]() Frosted |
![]() Tokyo Night |
![]() Dracula |
![]() Nord |
![]() Catppuccin |
![]() Gruvbox |
![]() Solarized |
![]() Neon |
![]() Flat Dark |
![]() Minimal |
No need to edit files if you don't want to. The Settings GUI covers presets, appearance tuning, widget order, and more.
![]() |
![]() |
Settings.functionality.mov
Change.Settings.mov
brew tap azixxxxx/tap
brew install --cask glanceGrab the latest .dmg from Releases, open it, drag Glance.app to /Applications. Done.
Requires Xcode 16+ and macOS 14.6+.
git clone https://github.com/azixxxxx/glance.git
cd glance
xcodebuild -project Glance.xcodeproj -scheme Glance -configuration Release \
-derivedDataPath build build \
CODE_SIGN_IDENTITY=- CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO
cp -R build/Build/Products/Release/Glance.app /Applications/
open /Applications/Glance.appConfig lives at ~/.glance-config.toml. It's created on first launch. Changes are picked up instantly.
theme = "dark"
# Switch preset and the whole look changes
preset = "liquid-glass"
# Or tweak individual values
# [appearance]
# roundness = 50 # 0 = square, 50 = capsule
# border-width = 1.0
# fill-opacity = 0.04
# foreground-color = "#ffffff"
# accent-color = "#ffffff"
[widgets]
displayed = [
"default.spaces",
"divider",
"default.activeapp",
"default.nowplaying",
"spacer",
"default.weather",
"default.systemmonitor",
"default.disk",
"default.volume",
"default.network",
"default.inputlanguage",
"default.brightness",
"default.clipboard",
"default.bluetooth",
"divider",
"default.time",
]
# Custom script widget — run any command, show output in bar
# [widgets.script.vpn]
# command = "scutil --ncs | grep -q Connected && echo '🟢 VPN' || echo '🔴 VPN'"
# interval = 10
[widgets.default.time]
format = "E d MMM, H:mm"
calendar.format = "H:mm"
calendar.show-events = true
[widgets.default.battery]
show-percentage = true
[widgets.default.spaces]
space.show-key = true
window.show-title = trueliquid-glass, frosted, flat-dark, minimal, neon, tokyo-night, dracula, gruvbox, nord, catppuccin, solarized
Uses ICU patterns: E d MMM, H:mm gives you Thu 6 Mar, 17:14. See ICU Date Format Patterns for all options.
Works with native macOS Spaces by default. Also supports:
- yabai via
yabai.path = "/opt/homebrew/bin/yabai" - AeroSpace via
aerospace.path = "/opt/homebrew/bin/aerospace"
Glance asks for a few permissions on first launch:
| Permission | Why |
|---|---|
| Accessibility | So maximized windows leave a gap for the bar instead of hiding behind it |
| Automation (Apple Events) | To control Music and Spotify for the Now Playing widget |
| Calendar | To show upcoming events in the calendar popup |
| Location | To display Wi-Fi network name and local weather (falls back to IP geolocation if denied) |
All permissions are optional. The app works without them, you just lose the specific features.
- macOS 14.6 (Sonoma) or later
- Apple Silicon or Intel Mac












