How wireapp/wire-desktop works
Wire Desktop is an Electron wrapper for the Wire webapp, providing a native desktop shell for macOS and Windows. Users launch the app, manage multiple webapp accounts, and authenticate through embedded or browser-based SSO; managed-device policy can also affect webapp behavior. The renderer’s entry point mounts the account-oriented UI, while Electron startup and window management provide the desktop runtime. The README documents MDM, SSO, logging, and platform support; many corresponding implementations are present in the tree but were not sampled, so those links are documented rather than source-verified.
Main entry points: App.tsx Account UI · mainProcess.ts Electron main process · SingleSignOn.ts Single sign-on · main.ts App bootstrap
Components 21
Desktop runtime
- App bootstrap
electron/src/main.ts - Electron main process
electron/src/mainProcess.ts - Window manager
electron/src/window/WindowManager.ts
Account interface
- Renderer entry
electron/renderer/src/index.tsx - Account UI
electron/renderer/src/components/App/App.tsx - Account actions and state
electron/renderer/src/actions/index.ts - Account selector
electron/renderer/src/selector/AccountSelector.ts - Account sidebar
electron/renderer/src/components/Sidebar/Sidebar.tsx - Webview list
electron/renderer/src/components/WebViewList/WebviewList.tsx - Webapp view
electron/renderer/src/components/WebView/Webview.tsx
Identity and policy
- Managed configuration
electron/src/managed/ManagedConfig.ts - Single sign-on
electron/src/sso/SingleSignOn.ts - macOS browser SSO
electron/src/sso/MacWebAuthentication.ts - Windows embedded SSO
electron/src/sso/BrowserSingleSignOn.ts
Desktop services
- Desktop logging
electron/src/logging/getLogger.ts - Desktop updates
electron/src/update/macosAutoUpdater.ts - Picture-in-picture calls
electron/src/calling/PictureInPictureCall.ts
Other components
- Desktop user
- Wire webapp
- Managed device policy
- Identity provider
Connections 20
- Desktop user → App bootstrap: launches
- App bootstrap → Electron main process: starts
electron/src/main.ts - Electron main process → Window manager: manages windows
- Renderer entry → Account UI: mounts
electron/renderer/src/index.tsx - Account UI → Account actions and state: dispatches account actions
electron/renderer/src/components/App/App.tsx - Account UI → Account selector: selects accounts
electron/renderer/src/components/App/App.tsx - Account UI → Account sidebar: renders
electron/renderer/src/components/App/App.tsx - Account UI → Webview list: renders
electron/renderer/src/components/App/App.tsx - Webview list → Webapp view: displays
- Webapp view → Wire webapp: hosts
- Managed device policy → Managed configuration: provides policy
- Managed configuration → Wire webapp: forwards configuration
- Desktop user → Single sign-on: authenticates
- Single sign-on → macOS browser SSO: uses browser flow
- Single sign-on → Windows embedded SSO: uses embedded flow
- macOS browser SSO → Identity provider: authenticates with
- Windows embedded SSO → Identity provider: authenticates with
- Electron main process → Desktop logging: writes logs
- Desktop user → Desktop updates: receives updates
- Wire webapp → Picture-in-picture calls: opens call picture-in-picture