Recovery¶
Use this page when EasyBar is stuck, stale, or behaving unexpectedly.
Calendar widget is empty¶
Make sure the calendar agent is running:
brew services list | grep easybar-calendar-agent
pgrep -fl easybar-calendar-agent
Then grant Calendar access in macOS settings.
EasyBar exposes menu actions to open the relevant settings pages, and the calendar agent permission state is shown in the bar context menu.
If you changed permissions and nothing updates, restart the calendar agent and EasyBar:
brew services restart gi8lino/tap/easybar-calendar-agent
brew services restart gi8lino/tap/easybar
Wi-Fi or network widget is empty¶
Make sure the network agent is running:
brew services list | grep easybar-network-agent
pgrep -fl easybar-network-agent
The network agent depends on Location Services permission. If permission is denied or unresolved, Wi-Fi-specific fields may be unavailable by design.
Restart the network agent after changing permission settings:
brew services restart gi8lino/tap/easybar-network-agent
brew services restart gi8lino/tap/easybar
AeroSpace widgets do not update¶
Make sure your AeroSpace config calls EasyBar after relevant state changes.
Workspace changes should call:
exec-on-workspace-change = [
'exec-and-forget /opt/homebrew/bin/easybar --workspace-changed'
]
Focus changes should call:
on-focus-changed = [
'exec-and-forget /opt/homebrew/bin/easybar --focus-changed'
]
If your AeroSpace mode widget does not change after switching layouts, call EasyBar after every relevant layout ... command:
alt-e = [
'layout tiles horizontal',
'exec-and-forget /opt/homebrew/bin/easybar --space-mode-changed'
]
Without these callbacks, AeroSpace-derived widgets may look stale until a manual refresh.
You can trigger one manually with:
easybar --refresh
Spaces widget misses an app launch or quit¶
The built-in spaces widget refreshes AeroSpace-derived state from a mix of AeroSpace callbacks and macOS app lifecycle notifications.
Workspace and focus changes should be wired from AeroSpace with:
easybar --workspace-changed
easybar --focus-changed
App quits are also refreshed from macOS termination notifications.
App launches use a short delayed refresh so background apps such as Docker have a chance to create their first window before EasyBar asks AeroSpace for list-windows.
If icons still look stale after a launch, trigger a manual refresh once:
easybar --refresh
Config changes do not apply¶
If watch_config = false, EasyBar will not automatically reload config changes.
Either enable config watching or reload manually:
easybar --reload-config
If a reload is rejected, EasyBar keeps the last valid config and logs the parse or validation error. Check the logs instead of assuming the new file was accepted.
Lua widgets stop updating¶
First try a normal refresh:
easybar --refresh
That refreshes the bar and widgets using the currently loaded config and pulls fresh data from agents, but it does not reload config from disk and does not restart the Lua runtime.
If the Lua side itself seems stuck, restart it explicitly:
easybar --restart-lua-runtime
The bar context menu item does the same thing:
Restart Lua Runtime
If that is still not enough, restart the whole app:
brew services restart gi8lino/tap/easybar
If a widget still fails, check your configured widgets_dir, Lua path, [app.env], and any widget-specific logs or output.
Full reset¶
A good recovery sequence is:
brew services stop gi8lino/tap/easybar
brew services stop gi8lino/tap/easybar-calendar-agent
brew services stop gi8lino/tap/easybar-network-agent
pkill -x EasyBar || true
pkill -x easybar-calendar-agent || true
pkill -x easybar-network-agent || true
brew services start gi8lino/tap/easybar-calendar-agent
brew services start gi8lino/tap/easybar-network-agent
brew services start gi8lino/tap/easybar
This clears the usual problems caused by duplicate instances, stale agent state, or mixed manual and service launches.