Browse every Teams for Linux configuration option, filter by name or type, and assemble a config.json you can copy straight into your config directory. Tick the options you want, adjust their values, and copy the result.
This explorer is built from the same schema as the Configuration Options Reference, which is generated directly from the code, so it always matches the current release. For configuration file locations and examples, see the Configuration Options guide.
Each option carries a badge showing when a change takes effect: live options apply immediately, while restart options require relaunching the app. Object options expand to show their nested fields with per-field types and defaults.
72 shown
Option
Type
Default
Description
appActiveCheckIntervalrestart
number
2
A numeric value in seconds as poll interval to check if the system is active from being idle
Idle detection configuration. forceState: enables state file-based idle control (workaround for Wayland/Hyprland). stateFile: path to state file with $USER expansion support.2 nested fields
Field
Type
Default
Description
idleDetection.forceState
boolean
false
Enable state file-based idle state control (workaround for Wayland/Hyprland).
idleDetection.stateFile
string
"/tmp/teams-for-linux-idle-state-$USER"
Path to the idle state file (supports $USER expansion).
chromeUserAgentrestart
string
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<version> Safari/537.36"
Google Chrome User Agent
customBGServiceBaseUrlrestart
string
"http://localhost"
Base URL of the server which provides custom background images
customBGServiceConfigFetchIntervalrestart
number
0
A numeric value in seconds as poll interval to download background service config download
customCACertsFingerprintsrestart
array
[]
Array of custom CA Certs Fingerprints to allow SSL unrecognized signer or self signed certificate
customCSSNamerestart
string
""
custom CSS name for the packaged available css files. Currently those are: "compactDark", "compactLight", "tweaks", "condensedDark" and "condensedLight"
Custom stickers feature. enabled: master flag (off by default). folder: absolute path to the sticker folder; empty string uses <userData>/stickers/ (auto-created). formats: file extensions to scan (lowercase, no leading dot). The scanner reads the configured folder plus one level of subdirectories so packs imported under <folder>/<pack>/ are visible. urlImport: HTTPS URL import (drop or paste a URL onto the sticker panel); allowedContentTypes restricts what the wrapper will save; maxBytes caps individual file size.6 nested fields
Field
Type
Default
Description
customStickers.enabled
boolean
false
Master flag for the custom stickers feature.
customStickers.folder
string
""
Absolute path to the sticker folder; empty string uses <userData>/stickers/, created on first run if missing.
customStickers.formats
array
["png","jpg","jpeg","gif","webp"]
File extensions the scanner accepts (lowercase, no leading dot); the scanner reads the configured folder plus one level of subdirectories.
customStickers.urlImport.enabled
boolean
true
Allow importing stickers from HTTPS URLs via the panel header input or by dropping a URL on the panel.
Download manager configuration. enabled: master switch for the entire feature, defaults to false while the feature is in early development — set true to opt in. notifyOnDownloadComplete: show a system notification when a file download finishes (click opens the containing folder). showProgressBar: drive the taskbar progress bar and KDE JobView / Unity LauncherEntry signals while downloads are in flight. showTitlePrefix: also prefix the window title with [N%] as a portable fallback for environments where the other progress signals aren't rendered; set to false to keep the title untouched when KDE / Ubuntu already show progress elsewhere. saveDirectory: absolute path to always save allowed downloads into without prompting (empty string uses the OS default download directory). alwaysAskWhereToSave: show the native Save As dialog for every download (takes precedence over saveDirectory). openWhenDone: open each completed download in the OS default handler. When a download is interrupted by a Microsoft 365 / SharePoint / tenant policy the failure notification explains the likely cause and clicking it opens the file's link in your browser. All sub-flags only take effect when enabled is true.4 nested fields
Field
Type
Default
Description
download.enabled
boolean
false
Master switch for the download feedback feature; sub-flags only take effect when this is true.
download.notifyOnDownloadComplete
boolean
true
Show a system notification when a file download finishes (click opens the containing folder).
download.showProgressBar
boolean
true
Drive the taskbar progress bar and KDE JobView / Unity LauncherEntry signals while downloads are in flight.
download.showTitlePrefix
boolean
true
Prefix the main window title with download progress as a portable fallback where other progress signals are not rendered.
disableNotificationslive
boolean
false
A flag to disable all notifications
disableNotificationSoundlive
boolean
false
Disable chat/meeting start notification sound
disableNotificationSoundIfNotAvailablelive
boolean
false
Disables notification sound unless status is Available (e.g. while in a call, busy, etc.)
disableNotificationWindowFlashlive
boolean
false
A flag indicates whether to disable window flashing when there is a notification
Notification behaviour. timeoutType: how long notifications stay in the system notification center (Linux/Windows only). Choices: `default` (auto-clear per system policy) or `never` (persist until the user dismisses, useful on GNOME and other desktops that auto-remove notifications). Mirrors Electron's Notification timeoutType. May not be honoured by every notification daemon. electron.clickAction: what clicking a notification does to the main window when notificationMethod is `electron`. Choices: `show` (reveal the window, default and current behaviour), `restore` (also un-minimise and focus, which helps on GNOME where a plain show does not raise the window) or `none` (do nothing).2 nested fields
Field
Type
Default
Description
notifications.timeoutType
string
"default"
How long notifications stay in the system notification center (Linux/Windows only); may not be honoured by every notification daemon. Choices: default, never
notifications.electron.clickAction
string
"show"
What clicking an Electron notification does to the main window (notificationMethod `electron` only): `show` reveals the window (default), `restore` also un-minimises and focuses it (helps on GNOME), `none` does nothing. Choices: show, restore, none
disableBadgeCountlive
boolean
false
A flag indicates whether to disable the badge counter on the taskbar/dock icon
disableGlobalShortcutsrestart
array
[]
Array of global shortcuts to disable while the app is in focus. See https://www.electronjs.org/docs/latest/api/accelerator for available accelerators to use
globalShortcutsrestart
array
[]
Global keyboard shortcuts that work system-wide. Disabled by default (opt-in). See configuration docs for details and limitations
electronCLIFlagsrestart
array
[]
Electron CLI flags
emulateWinChromiumPlatformrestart
boolean
false
Use windows platform information in chromium. This is helpful if MFA app does not support Linux.
enableIncomingCallToastrestart
boolean
false
Enable incoming call toast
followSystemThemerestart
boolean
true
Follow the operating-system dark/light theme preference. Default is true; set false to keep Teams's own theme regardless of OS changes.
framerestart
boolean
true
Specify false to create a Frameless Window. Default is true
incomingCallCommandrestart
string
null
Command to execute on an incoming call. (caution: "~" in path is not supported)
incomingCallCommandArgsrestart
array
[]
Arguments for the incoming call command.
isCustomBackgroundEnabledrestart
boolean
false
A flag indicates whether to enable custom background or not
Network configuration. webRTCIPHandlingPolicy: WebRTC IP handling policy to control which network interfaces are used for ICE candidates. Use 'default_public_interface_only' to prevent WebRTC from advertising interfaces that have no internet route (e.g. a secondary ethernet adapter), which can cause calls to drop to OnHold due to asymmetric STUN routing. Valid values: 'default', 'default_public_and_private_interfaces', 'default_public_interface_only', 'disable_non_proxied_udp'. Disabled by default (opt-in). disableQuic: Append Chromium's --disable-quic switch at startup. Defaults to true to work around issue #2518 (concurrent SharePoint downloads abort with ERR_QUIC_PROTOCOL_ERROR on the shared QUIC session). Set to false to re-enable QUIC if a future Chromium release fixes the underlying transport bug.2 nested fields
Field
Type
Default
Description
network.webRTCIPHandlingPolicy
string
null
WebRTC IP handling policy controlling which network interfaces are used for ICE candidate gathering. Choices: default, default_public_and_private_interfaces, default_public_interface_only, disable_non_proxied_udp
network.disableQuic
boolean
true
Append Chromium's --disable-quic switch at startup to work around QUIC protocol errors (issue #2518).
spellCheckerLanguagesrestart
array
[]
Array of languages to use with Electron's spell checker (experimental)
ssoBasicAuthUserrestart
string
""
User to use for SSO basic auth.
ssoBasicAuthPasswordCommandrestart
string
""
Command to execute to retrieve password for SSO basic auth.
Media settings for microphone, camera, and video. showStatusOnDockIcon: overlay the user presence status on the Dock icon on macOS. macPerformanceMode: on macOS, force-enable native hardware/rendering optimizations (Metal ANGLE, GPU rasterization, hardware WebRTC codecs) at startup; defaults to true, set false to opt out without disabling the GPU entirely. preventDeviceSwitching: prevent automatic audio/video device switching by blocking device change notifications.17 nested fields
Field
Type
Default
Description
media.microphone.disableAutogain
boolean
false
Disable microphone auto gain control so Teams does not automatically adjust microphone volume levels.
media.microphone.speakingIndicator
boolean
false
Enable a visual overlay showing microphone state during calls (speaking/silent/muted) with WebRTC-based call state detection.
media.microphone.ignoreSystemMute
boolean
false
Stop Teams' mute button from following the operating system microphone mute on Linux. Chromium reports the OS capture-source mute to the page as a track mute event and Teams mirrors it onto its own button; enable this to keep the Teams button where you left it and rely solely on your system/hotkey mute (which still cuts the transmitted audio). Remote participants' mute state is unaffected.
media.microphone.overrideConstraints.enabled
boolean
false
Enable overriding the microphone audio constraints Teams requests via getUserMedia; only the keys you set are overridden.
When set, overrides getUserMedia's autoGainControl constraint (takes precedence over disableAutogain); omit to leave it untouched.
media.microphone.overrideConstraints.channelCount
number
undefined
When set, pins the microphone channel count (typically 1 or 2); omit to leave it untouched.
media.microphone.overrideConstraints.sampleRate
number
undefined
When set, pins the microphone sample rate in Hz (e.g. 48000); omit to leave it untouched.
media.camera.resolution.enabled
boolean
false
Enable camera resolution control.
media.camera.resolution.mode
string
"remove"
Resolution mode: remove strips Teams' constraints to allow native camera resolution, override sets a specific width/height. Choices: remove, override
media.camera.resolution.width
number
undefined
Target camera width when mode is override.
media.camera.resolution.height
number
undefined
Target camera height when mode is override.
media.camera.autoAdjustAspectRatio.enabled
boolean
false
Reapply proper aspect ratio constraints to fix camera video stretching when moving Teams between monitors with different orientations.
media.video.menuEnabled
boolean
false
Enable the menu entry for controlling video elements (PiP mode, video controls).
media.showStatusOnDockIcon
boolean
false
Overlay the user presence status on the Dock icon on macOS.
media.macPerformanceMode
boolean
true
On macOS, force-enable native hardware/rendering optimizations (Metal ANGLE, GPU rasterization, hardware WebRTC codecs) at startup; set false to opt out without disabling the GPU entirely.
mqttrestart
object
{"enabled":false,"brokerUrl":"","username":"","password":"","clientId":"teams-for-linux","topicPrefix":"teams","statusTopic":"status","commandTopic":"","statusCheckInterval":10000,"homeAssistant":{"enabled":false,"discoveryPrefix":"homeassistant","deviceName":"Teams for Linux"},"mediaTopics":{"inCall":"in-call","incomingCall":"incoming-call","camera":"camera","microphone":"microphone","microphoneControl":"microphone/control","screenSharing":"screen-sharing"}}
MQTT configuration for publishing Teams status updates and receiving action commands12 nested fields
Field
Type
Default
Description
mqtt.enabled
boolean
false
Enable the MQTT integration (status publishing and command reception).
mqtt.brokerUrl
string
""
MQTT broker URL, e.g. mqtt://host:1883 or mqtts://host:8883 for TLS.
mqtt.username
string
""
MQTT username for authentication (optional).
mqtt.password
string
""
MQTT password for authentication (optional).
mqtt.clientId
string
"teams-for-linux"
Unique MQTT client identifier.
mqtt.topicPrefix
string
"teams"
Topic prefix for all MQTT messages.
mqtt.statusTopic
string
"status"
Topic name for outbound status messages, combined with topicPrefix.
mqtt.commandTopic
string
""
Topic name for receiving inbound commands; leave empty to disable (status-only mode).
mqtt.statusCheckInterval
number
10000
Polling interval in milliseconds for the status detection fallback.
mqtt.homeAssistant.enabled
boolean
false
Enable Home Assistant MQTT auto-discovery so entities are created automatically.
mqtt.homeAssistant.discoveryPrefix
string
"homeassistant"
MQTT discovery topic prefix used by Home Assistant.
mqtt.homeAssistant.deviceName
string
"Teams for Linux"
Device name shown in Home Assistant.
quickChatrestart
object
{"enabled":false}
Quick Chat configuration for quick access to chat contacts and inline messaging via Graph API2 nested fields
Field
Type
Default
Description
quickChat.enabled
boolean
false
Enable the Quick Chat feature for quick contact search and chat access.
quickChat.shortcut
string
undefined
Keyboard shortcut to toggle the Quick Chat modal (e.g. CommandOrControl+Alt+Q); unset by default.
graphApirestart
object
{"enabled":false}
Microsoft Graph API integration for enhanced Teams functionality (calendar, user profile, etc.)1 nested field
Field
Type
Default
Description
graphApi.enabled
boolean
false
Enable the Microsoft Graph API integration for calendar and mail access.
Authentication configuration. auth.webauthn.enabled turns on hardware security key support on Linux (requires fido2-tools). auth.webauthn.debug enables verbose diagnostic logs, intended for beta testers only. auth.reauthRecovery.enabled opts into the in-app re-authentication recovery feature and is off by default; while off, renderer auth-failure signals are ignored and Teams' own stale 'sign in again' banner is left untouched (you re-authenticate by relaunching, as before this feature existed). When on, a reliable MSAL InteractionRequired signal automatically clears stale auth state and reloads to force a fresh interactive login, and clicking the stale 'sign in again' banner is intercepted to recover in-app instead of opening the login popup externally. Uncaught Teams worker 'UPR' errors are noisy and fire on healthy sessions, so they never trigger an automatic reload on their own; they only help recognise a genuinely broken session for the banner interception. Interception only happens when the session has emitted a trusted auth-failure signal within the last hour, so login popups from healthy flows (initial sign-in, consent and step-up prompts, adding an account) are never diverted. During an active call, recovery is never run silently (it would end the call): the user is asked whether to sign in now, after the call, or not at all.5 nested fields
Field
Type
Default
Description
auth.intune.enabled
boolean
false
Enable Single-Sign-On using Microsoft Intune.
auth.intune.user
string
""
User (e-mail) to use for Intune SSO.
auth.webauthn.enabled
boolean
false
Enable FIDO2 hardware security key support for WebAuthn authentication on Linux (requires fido2-tools).
Opt into in-app recovery from stale sessions by intercepting the stale 'sign in again' login popup and recovering in-app.
multiAccountrestart
object
{"enabled":false}
Multi-account profile switcher configuration (see ADR-020). enabled: opt-in flag for the single-window multi-tenant switcher. Mutually exclusive with auth.intune.enabled; when both are true a startup warning is logged and multi-account is disabled for the session.1 nested field
Field
Type
Default
Description
multiAccount.enabled
boolean
false
Opt-in flag for the single-window multi-account profile switcher; mutually exclusive with auth.intune.enabled.
waylandrestart
object
{"xwaylandOptimizations":false}
Wayland display server configuration. xwaylandOptimizations: keeps GPU enabled and skips fake media UI flag under XWayland (may fix camera issues but can break screen sharing)1 nested field
Field
Type
Default
Description
wayland.xwaylandOptimizations
boolean
false
Keep GPU enabled and skip the fake media UI flag under XWayland; may fix camera issues but can break screen sharing.