EasyBar is a lightweight, scriptable macOS status bar built with SwiftUI and Lua. It combines native widgets with custom Lua widgets and integrates with AeroSpace.
- Native widgets for Spaces, apps, system status, calendar, and more
- Scriptable Lua widgets with events, popups, groups, and context menus
- Installable Lua widgets and libraries from the official package registry
- Shared Inbox with unread state, grouping, Markdown, and widget actions
- File-based TOML themes and comment-preserving configuration updates
- AeroSpace integration and separate calendar and network helper agents
- Menu-bar controller and CLI for runtime control and diagnostics
See more screenshots in the EasyBar overview and the built-in widget guides.
- macOS 14 Sonoma or newer
- Homebrew for installation
- AeroSpace 0.21.0 or newer when using AeroSpace-backed widgets
brew tap easybar-app/tap
brew install --cask easybar-app/tap/easybar
open -a EasyBarSee the installation guide for upgrades, verification, and removal.
The full documentation is available at easybar.dev.
- Quick start
- Configuration
- Themes
- Lua widgets
- Widget packages
- Runtime and troubleshooting
- Development
The Makefile uses dev-tools v0.7.0 for help and
semantic-version tagging. The bootstrap is committed in bin/dev-tools.mk; Make downloads
modules and helpers into the ignored bin/.dev-tools/ cache on first use. This requires
curl and network access initially, and Python 3 to run the helpers.
Run make help for available targets. make tag, tag-patch, tag-minor, and tag-major
remain aliases for the shared current, patch, minor, and major targets. The shared
helper selects the highest stable semantic-version tag in the repository and creates
lightweight tags. make push-tags aliases push and pushes all local tags only; push
commits separately with git push.
Licensed under the Apache License 2.0.
