How satrik/togglemute works
toggleMute is a macOS menu-bar microphone controller. A user click, global shortcut, or supported hardware-mute change reaches AppDelegate, which delegates state transitions to MuteController. That controller updates the default CoreAudio input, persists state and volume, and optionally triggers sounds, HUD feedback, and menu-bar styling. MainController exposes settings and shortcut configuration. AppDelegate also polls hardware state and checks GitHub for releases. The graph reflects sampled Swift sources and README capabilities; some update and launch-at-login details are represented at their documented integration boundary.
Components 21
User Interaction
- Menu Bar UI
toggleMute/toggleMute/Bootstrap/AppDelegate.swift - Event Monitor
toggleMute/toggleMute/Bootstrap/EventMonitor.swift - Settings Panel
toggleMute/toggleMute/Controllers/MainController.swift
App Orchestration
- App Delegate
toggleMute/toggleMute/Bootstrap/AppDelegate.swift - Mute Controller
toggleMute/toggleMute/Controllers/MuteController.swift - Update Checker
toggleMute/toggleMute/Bootstrap/AppDelegate.swift
Audio State
- Audio Input
toggleMute/toggleMute/Support/AudioInputController.swift
Settings Feedback
- Preferences
toggleMute/toggleMute/Support/Preferences.swift - UserDefaults Store
toggleMute/toggleMute/Support/Preferences.swift - HUD Controller
toggleMute/toggleMute/Controllers/HUDController.swift
External Integrations
- CoreAudio
- macOS Display
- Sound Feedback
- Keyboard Shortcuts
- Launch At Login
- GitHub Releases
- Update Notifications
toggleMute/toggleMute/Bootstrap/AppDelegate.swift - macOS Notifications
Other components
- User
- Keyboard User
- Hardware Button
Connections 28
- User → Menu Bar UI: clicks
- Keyboard User → Keyboard Shortcuts: presses
- Hardware Button → CoreAudio: changes mute
- Menu Bar UI → App Delegate: dispatches click
- App Delegate → Mute Controller: toggles state
- App Delegate → Settings Panel: opens settings
- App Delegate → Event Monitor: manages monitor
- Event Monitor → App Delegate: reports events
- App Delegate → Keyboard Shortcuts: registers shortcut
- Keyboard Shortcuts → App Delegate: delivers shortcut
- Settings Panel → Mute Controller: sets volume
- Settings Panel → Preferences: changes settings
- Settings Panel → Audio Input: reads device
- Settings Panel → Keyboard Shortcuts: records shortcut
- Preferences → UserDefaults Store: persists settings
- Mute Controller → UserDefaults Store: persists state
- Mute Controller → Audio Input: writes mute volume
- Mute Controller → HUD Controller: shows state
- Mute Controller → Sound Feedback: plays sound
- Mute Controller → Menu Bar UI: updates icon
- Audio Input → CoreAudio: controls device
- App Delegate → Audio Input: polls state
- HUD Controller → macOS Display: renders HUD
- Preferences → Launch At Login: configures login
- App Delegate → Update Checker: schedules checks
- Update Checker → GitHub Releases: fetches release
- Update Checker → Update Notifications: requests notice
- Update Notifications → macOS Notifications: delivers alert