-
Notifications
You must be signed in to change notification settings - Fork 0
Configuration
Right-click the layout button (left side of menu bar) → Settings
Or open Settings via the context menu on any space indicator.
| Setting | Description |
|---|---|
| Launch at Login | Start Aegis automatically when you log in |
| Check for Updates | Manually check for new versions |
| Yabai Integration | View status and run setup if needed |
| Setting | Description | Default |
|---|---|---|
| Height | Menu bar height in pixels | 28 |
| Padding | Horizontal padding | 12 |
| Corner Radius | Rounded corners | 8 |
| Background Opacity | Transparency level | 0.9 |
| Setting | Description | Default |
|---|---|---|
| Circle Size | Size of space number circle | 20 |
| Icon Size | Size of window icons | 16 |
| Max Icons | Maximum icons before overflow | 4 |
| Show Stack Badge | Display count for stacked windows | On |
| Setting | Description | Default |
|---|---|---|
| Auto-hide Delay | Seconds before HUD hides | 1.5 |
| Progress Bar Width | Width of volume/brightness bar | 120 |
| Progress Bar Height | Height of the bar | 4 |
| Show Media HUD | Display Now Playing when media is playing | On |
| Media HUD Right Panel | Visualizer or Track Info display | Visualizer |
| Media HUD Auto-hide | Hide media HUD after showing track info | Off |
When Track Info mode is selected for the Media HUD right panel:
- Song title and artist name are displayed
- Panel expands on track change to show full text
- Panel collapses after 3 seconds to standard width
- Long text scrolls with a smooth marquee animation
- Title and artist scroll independently (only if they overflow)
- Tap album art to toggle between visualizer and track info modes
| Setting | Description | Default |
|---|---|---|
| Show Battery | Display battery indicator | On |
| Show WiFi | Display network indicator | On |
| Show Clock | Display time | On |
| Show Date | Display date | On |
| Date Format | Long (January 15) or Short (1/15) | Short |
| Battery Low Level | Threshold for yellow color | 20% |
| Battery Critical Level | Threshold for red color | 10% |
| Show Focus Name | Display Focus mode name | Off |
| Setting | Description | Default |
|---|---|---|
| Spring Response | Animation snappiness (lower = snappier) | 0.3 |
| Spring Damping | Bounciness (higher = less bounce) | 0.8 |
| Fade Duration | Opacity transition time | 0.2 |
| Setting | Description | Default |
|---|---|---|
| Expand Context Button on Scroll | Show label when scrolling context button | On |
When disabled, only the icon changes during scroll - saves CPU from SwiftUI re-renders.
| Setting | Description | Default |
|---|---|---|
| Scroll Threshold | Scroll distance to move selection (1-10) | 3 |
| Notched Scroll | Full reset after each step (vs continuous) | On |
The app switcher supports multiple input methods:
- Keyboard: Cmd+Tab / Cmd+Shift+Tab to cycle, Cmd+1-9 for direct selection
- Mouse: Hover to highlight, click to select
- Scroll: Two-finger scroll to cycle through windows
| Setting | Description | Default |
|---|---|---|
| Multi-Monitor Mode | How to display menu bars across monitors | Auto |
Available modes:
| Mode | Description |
|---|---|
| Auto | Single display = primary only, multiple = per monitor |
| Primary Only | Menu bar only on main display |
| Per Monitor | Each display shows only its own spaces |
| All Show All | Every display shows all spaces |
Display changes are detected instantly via CoreGraphics callbacks when monitors are connected or disconnected.
All Aegis configuration is stored in:
~/.config/aegis/
| File | Description |
|---|---|
config.json |
JSON config file for settings (hot-reload) |
CONFIG_OPTIONS.md |
Auto-generated documentation for all settings |
aegis-yabai-notify |
Notification script for yabai events |
yabai.pipe |
FIFO pipe for instant updates (created at runtime) |
yabairc-snippet.sh |
Snippet to add to your .yabairc |
Aegis supports editing settings via a JSON config file at ~/.config/aegis/config.json. Changes are applied automatically when you save the file (hot-reload).
Features:
- Only specify settings you want to change - defaults are used for anything not specified
- See
CONFIG_OPTIONS.mdin the same directory for all available options - Both config file and Settings panel work together (file takes priority)
Example config.json:
{
"_docs": "See CONFIG_OPTIONS.md for all available settings",
"appSwitcherEnabled": true,
"appSwitcherCmdScrollEnabled": false,
"showDeviceHUD": true,
"deviceHUDAutoHideDelay": 3.0,
"excludedBluetoothDevices": ["watch"],
"showMediaHUD": true,
"mediaHUDRightPanelMode": "visualizer",
"showFocusHUD": true,
"expandContextButtonOnScroll": true,
"maxAppIconsPerSpace": 3,
"excludedApps": ["Finder", "Aegis"],
"multiMonitorMode": "auto"
}Note: Both showMediaHUD and showMusicHUD work as config keys (alias for backward compatibility).
Settings are also stored in UserDefaults (macOS preferences system):
~/Library/Preferences/com.ccmurphy.aegis.plist
The JSON config file takes priority over UserDefaults when both specify the same setting.
~/Library/Logs/Aegis/aegis.log
Logs rotate automatically at 5MB.
defaults delete com.ccmurphy.aegisrm -rf ~/.config/aegis
# Then re-run setup on next launch# Remove preferences
defaults delete com.ccmurphy.aegis
# Remove config directory
rm -rf ~/.config/aegis
# Remove yabairc integration (edit manually)
# Delete lines between AEGIS_INTEGRATION_START and AEGIS_INTEGRATION_ENDUse Yabai's menubar_opacity setting in your .yabairc:
yabai -m config menubar_opacity 0.0Aegis doesn't define global hotkeys - use skhd for that.
Example skhd configuration:
# Focus spaces
alt - 1 : yabai -m space --focus 1
alt - 2 : yabai -m space --focus 2
alt - 3 : yabai -m space --focus 3
# Move windows to space
shift + alt - 1 : yabai -m window --space 1
shift + alt - 2 : yabai -m window --space 2
shift + alt - 3 : yabai -m window --space 3
# Layout actions
alt - r : yabai -m space --rotate 90
alt - b : yabai -m space --balance
alt - t : yabai -m window --toggle floatAegis will reflect all changes instantly via the FIFO pipe integration.
Some apps are automatically excluded from space indicators:
- Aegis itself
- Finder desktop
- System UI elements
To transfer settings between machines, copy:
-
~/.config/aegis/config.json(recommended - human-readable) -
~/.config/aegis/(includes yabai integration scripts)
Or export all current settings to JSON:
// In Xcode console or add temporarily to code:
AegisConfig.shared.saveToJSONFile()This overwrites config.json with every setting and its current value.