How briar/briar-desktop works
Briar Desktop is a Compose-based desktop client for Briar secure messaging. The user-facing journey begins at startup and account access, then enters the main interface for contacts and private conversations; the repository also has distinct screens and view models for forums, blogs, private and threaded groups, mailbox setup, and settings. The sampled conversation view model shows message composition, optional image compression, and message-item creation. Several feature connections are inferred from the file tree rather than inspected source, so those links are marked dashed and unevidenced.
Main entry points: ConversationViewModel.kt Private conversation · ContactList.kt Contact list · Main.kt Application entry · MainScreen.kt Main interface
Components 22
Startup and shell
- Application entry
briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/Main.kt - Core wiring
briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/DesktopCoreModule.kt - Main interface
briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/MainScreen.kt - Sidebar navigation
briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/navigation/BriarSidebar.kt
Contacts and chat
- Contact list
briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ContactList.kt - Add contact
briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/add/remote/AddContactViewModel.kt - Private conversation
briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt - Conversation screen
briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationScreen.kt - Image compression
briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/attachment/media/ImageCompressor.kt - Avatar loading
briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/attachment/media/AvatarManager.kt - Profile display
briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/contact/ProfileCircle.kt
Community content
- Forum discussions
briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/ForumScreen.kt - Forum conversation
briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/forum/conversation/ForumConversationViewModel.kt - Blog and feeds
briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/blog/FeedScreen.kt - Blog sharing
briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/blog/sharing/BlogSharingViewModel.kt - Private groups
briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/privategroup/PrivateGroupScreen.kt - Threaded groups
briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/threadedgroup/ThreadedGroupScreen.kt
Account and services
- Login and registration
briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/login/LoginScreen.kt - Mailbox setup
briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/mailbox/MailboxScreen.kt - Preferences
briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/settings/SettingsScreen.kt - Encrypted settings
briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/settings/EncryptedSettingsImpl.kt
Other components
- Desktop user
Connections 21
- Desktop user → Application entry: starts app
README.md - Application entry → Core wiring: initializes core
briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/Main.kt - Desktop user → Login and registration: authenticates
- Login and registration → Main interface: enters app
- Main interface → Sidebar navigation: shows navigation
- Sidebar navigation → Contact list: opens contacts
- Contact list → Add contact: adds contact
- Contact list → Private conversation: opens chat
- Private conversation → Image compression: compresses image
briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt - Private conversation → Conversation screen: updates messages
- Private conversation → Conversation screen: creates message items
briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationViewModel.kt - Avatar loading → Profile display: supplies avatar
- Desktop user → Forum discussions: views forums
- Forum discussions → Forum conversation: opens discussion
- Desktop user → Blog and feeds: views feeds
- Blog and feeds → Blog sharing: shares blog
- Desktop user → Private groups: views groups
- Desktop user → Threaded groups: views threads
- Desktop user → Mailbox setup: configures mailbox
- Desktop user → Preferences: changes settings
- Preferences → Encrypted settings: persists preferences