Products¶
EasyBar has two user-facing macOS frontends. They share EasyBarKit's Lua API, renderer, package manager, and CLI core, but they are separate applications with separate commands and user data.
Which frontend should I use?¶
Choose EasyBar when you want to replace the menu-bar layout with one designed, full-width surface. Choose EasyBar Native when you want Lua widgets to live beside ordinary macOS menu-bar apps as independent status items.
| Capability | EasyBar | EasyBar Native |
|---|---|---|
| Presentation | One custom full-width top bar | Independent macOS NSStatusItems |
| Public widget model | Native built-ins and Lua widgets | Lua widgets |
| Host-owned built-in | Spaces, battery, Wi-Fi, calendar, volume, CPU, Inbox, more | Inbox only |
| Layout control | Left, center, and right regions; groups; bar geometry | Relative item order; macOS owns final placement |
| Lua API and packages | Shared EasyBarKit contract | Shared EasyBarKit contract |
| Calendar/network agents | Installed and managed | Not installed, required, or managed |
| CLI | easybar |
easybar-native |
| Config | ~/.config/easybar/config.toml |
~/.config/easybar-native/config.toml |
| Manual widgets | ~/.config/easybar/widgets |
~/.config/easybar-native/widgets |
| Managed packages | ~/.local/share/easybar/packages |
~/.local/share/easybar-native/packages |
| Runtime | ~/.local/state/easybar/runtime |
~/.local/state/easybar-native/runtime |
| Main log | ~/.local/state/easybar/easybar.out |
~/.local/state/easybar-native/easybar-native.out |
EasyBar Native's built-in boundary
EasyBar Native does not expose EasyBar's regular Swift built-ins as status items. Its public extension surface is Lua widgets, with Inbox retained as the one host-owned built-in so Lua publisher packages have a common destination.
Can I install both?¶
Yes. Installing both is useful when you want to compare presentation styles or migrate gradually. They do not share config files, runtime sockets, logs, package activation state, or CLI names.
Installing the same package twice creates two independent installations:
easybar widgets install tailscale
easybar-native widgets install tailscale
Use the matching command to reload the frontend you changed:
easybar config reload
easybar-native config reload
Package compatibility¶
Most packages that use only the shared Lua API work in either frontend. Installation through a frontend's CLI does not by itself guarantee that every external requirement is available there. Check each package page for required commands and frontend-specific behavior.
A package is not portable to EasyBar Native when it requires an EasyBar-only helper agent, built-in,
or the easybar executable. Inbox publisher packages are portable when they use the shared Inbox API
and do not otherwise depend on an EasyBar-only capability.
Start here¶
| Goal | Guide |
|---|---|
| Build a complete custom bar | EasyBar Quick Start |
| Add Lua widgets to the normal macOS status area | EasyBar Native Quick Start |
| Compare the two command-line tools | Command-line tools |
| Browse shared packages | Widget Store |