How jurek-zsl/swimble works
Swimble is a native macOS Mumble voice client. The main workflow is a user selecting or opening a server, the app connecting and maintaining server state, then presenting channel/chat activity and carrying voice between the microphone and server. The graph also preserves documented audio, identity, positional-audio, shortcuts, local control, and public-directory capabilities. Arrows are limited to relationships stated in the README or visible in supplied excerpts/index references; several unsampled subsystem links are therefore omitted or shown as unverified.
Main entry points: MumbleStore.swift Session store · client.rs Mumble protocol client · App.swift App shell · audio_mixer.rs Opus mixer
Components 28
macOS App
- App shell
MacClient/Sources/App.swift - Client preferences
MacClient/Sources/Models/ClientPreferences.swift - Settings state
MacClient/Sources/Views/Settings/SettingsState.swift - Server and chat UI
MacClient/Sources/Views/ServerSplitView.swift
Mumble Connection
- Session store
MacClient/Sources/Store/MumbleStore.swift - Mumble protocol client
rust-core/src/client.rs - Transport and framing
rust-core/src/connection.rs - DNS and server ping
rust-core/src/dns.rs - Protocol state
rust-core/src/state.rs - Certificates and identity
rust-core/src/cert.rs
Voice and Audio
- macOS audio engine
MacClient/Sources/Audio/MacAudioEngine.swift - Audio device routing
MacClient/Sources/Audio/CoreAudioDeviceManager.swift - Audio I/O
rust-core/src/audio_io.rs - Opus mixer
rust-core/src/audio_mixer.rs - Voice packets
rust-core/src/voice_packet.rs - Voice encryption
rust-core/src/crypt_ocb2.rs - WAV recording
MacClient/Sources/Audio/AudioRecorder.swift
Client Features
- Global shortcuts
MacClient/Sources/Audio/GlobalPTT.swift - Positional audio and plugins
rust-core/src/positional.rs - Plugin manager
rust-core/src/plugins.rs - Event notifications
MacClient/Sources/Utils/EventNotificationManager.swift - Text-to-speech
MacClient/Sources/Audio/TTSEngine.swift - Public server directory
MacClient/Sources/Utils/MumistService.swift - Mumble links
MacClient/Sources/Utils/MumbleURLHandler.swift - Local command control
MacClient/Sources/Utils/LocalControl.swift
Other components
- User
- Murmur server
- macOS audio and notifications
Connections 35
- User → App shell: uses
MacClient/Sources/App.swift - App shell → Session store: opens sessions
MacClient/Sources/App.swift - App shell → Settings state: loads settings
MacClient/Sources/App.swift - App shell → Server and chat UI: shows windows
MacClient/Sources/App.swift - Server and chat UI → Session store: uses session
- Client preferences → Session store: supplies preferences
MacClient/Sources/Models/ClientPreferences.swift - Settings state → Session store: configures sessions
MacClient/Sources/Views/Settings/SettingsState.swift - Session store → Mumble protocol client: controls connection
MacClient/Sources/Store/MumbleStore.swift - Mumble protocol client → Transport and framing: uses transport
rust-core/src/client.rs - Mumble protocol client → Protocol state: updates state
rust-core/src/client.rs - Mumble protocol client → DNS and server ping: resolves servers
rust-core/src/client.rs - Session store → Certificates and identity: loads identity
- Mumble protocol client → Murmur server: exchanges Mumble data
- Session store → Murmur server: connects and sends requests
MacClient/Sources/Store/MumbleStore.swift - User → Public server directory: browses servers
- Public server directory → Session store: selects server
- User → Mumble links: opens link
- Mumble links → Session store: requests connection
MacClient/Sources/Utils/MumbleURLHandler.swift - macOS audio engine → Audio device routing: routes devices
MacClient/Sources/Audio/MacAudioEngine.swift - macOS audio engine → Audio I/O: exchanges PCM
- Mumble protocol client → Opus mixer: handles voice
rust-core/src/client.rs - Opus mixer → Voice packets: encodes and decodes
rust-core/src/audio_mixer.rs - Mumble protocol client → Voice encryption: protects voice
rust-core/src/client.rs - Opus mixer → Positional audio and plugins: renders positioning
rust-core/src/audio_mixer.rs - Opus mixer → Plugin manager: uses plugins
rust-core/src/audio_mixer.rs - Session store → macOS audio engine: manages audio
MacClient/Sources/Store/MumbleStore.swift - Session store → WAV recording: manages recording
MacClient/Sources/Store/MumbleStore.swift - Settings state → macOS audio engine: configures audio
MacClient/Sources/Audio/MacAudioEngine.swift - User → Global shortcuts: triggers shortcuts
- Global shortcuts → Session store: controls transmission
MacClient/Sources/Store/MumbleStore.swift - Session store → Event notifications: reports events
MacClient/Sources/Utils/EventNotificationManager.swift - Event notifications → Text-to-speech: speaks events
MacClient/Sources/Utils/EventNotificationManager.swift - Event notifications → macOS audio and notifications: posts notifications and cues
MacClient/Sources/Utils/EventNotificationManager.swift - User → Local command control: runs CLI commands
- Local command control → Session store: dispatches commands