Skip to main content

Configuration Explorer

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
OptionTypeDefaultDescription
appActiveCheckIntervalrestartnumber2A numeric value in seconds as poll interval to check if the system is active from being idle
screenSharingrestartobject{"thumbnail":{"enabled":true,"alwaysOnTop":true},"lockInhibitionMethod":"Electron"}Screen sharing configuration. thumbnail: controls the preview window shown during active sharing. lockInhibitionMethod: screen lock inhibition method (Electron/WakeLockSentinel).
3 nested fields
FieldTypeDefaultDescription
screenSharing.thumbnail.enabledbooleantrueAutomatically show the preview thumbnail window when screen sharing starts.
screenSharing.thumbnail.alwaysOnTopbooleantrueKeep the screen sharing thumbnail window always on top.
screenSharing.lockInhibitionMethodstring"Electron"Screen lock inhibition method used while sharing. Choices: Electron, WakeLockSentinel
appIconrestartstring""Teams app icon to show in the tray
appIconTyperestartstring"default"Type of tray icon to be used
appIdleTimeoutrestartnumber300A numeric value in seconds as duration before app considers the system as idle
appIdleTimeoutCheckIntervalrestartnumber10A numeric value in seconds as poll interval to check if the appIdleTimeout is reached
appTitlerestartstring"Microsoft Teams"A text to be suffixed with page title
alwaysOnToprestartbooleantrueKeep the pop-out window always on top of other windows.
authServerWhitelistrestartstring"*"Set auth-server-whitelist value
awayOnSystemIdlerestartbooleanfalseSets the user status as away when system goes idle
idleDetectionrestartobject{"forceState":false,"stateFile":"/tmp/teams-for-linux-idle-state-$USER"}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
FieldTypeDefaultDescription
idleDetection.forceStatebooleanfalseEnable state file-based idle state control (workaround for Wayland/Hyprland).
idleDetection.stateFilestring"/tmp/teams-for-linux-idle-state-$USER"Path to the idle state file (supports $USER expansion).
chromeUserAgentrestartstring"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<version> Safari/537.36"Google Chrome User Agent
customBGServiceBaseUrlrestartstring"http://localhost"Base URL of the server which provides custom background images
customBGServiceConfigFetchIntervalrestartnumber0A numeric value in seconds as poll interval to download background service config download
customCACertsFingerprintsrestartarray[]Array of custom CA Certs Fingerprints to allow SSL unrecognized signer or self signed certificate
customCSSNamerestartstring""custom CSS name for the packaged available css files. Currently those are: "compactDark", "compactLight", "tweaks", "condensedDark" and "condensedLight"
customCSSLocationrestartstring""custom CSS styles file location
customStickersrestartobject{"enabled":false,"folder":"","formats":["png","jpg","jpeg","gif","webp"],"urlImport":{"enabled":true,"allowedContentTypes":["image/png","image/jpeg","image/gif","image/webp"],"maxBytes":5242880}}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
FieldTypeDefaultDescription
customStickers.enabledbooleanfalseMaster flag for the custom stickers feature.
customStickers.folderstring""Absolute path to the sticker folder; empty string uses <userData>/stickers/, created on first run if missing.
customStickers.formatsarray["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.enabledbooleantrueAllow importing stickers from HTTPS URLs via the panel header input or by dropping a URL on the panel.
customStickers.urlImport.allowedContentTypesarray["image/png","image/jpeg","image/gif","image/webp"]Response content-types the wrapper will accept and save when importing from a URL.
customStickers.urlImport.maxBytesnumber5242880Per-file size cap in bytes for URL imports; larger responses are rejected.
disableTimestampOnCopyrestartbooleanfalseControls whether timestamps are included when copying messages in chats
classrestartstringnullA custom value for the WM_CLASS property
cacheManagementrestartobject{"enabled":false,"maxCacheSizeMB":600,"cacheCheckIntervalMs":3600000}Cache management configuration to prevent daily logout issues
3 nested fields
FieldTypeDefaultDescription
cacheManagement.enabledbooleanfalseEnable automatic cache management to prevent daily logout issues.
cacheManagement.maxCacheSizeMBnumber600Maximum cache size in MB before cleanup runs.
cacheManagement.cacheCheckIntervalMsnumber3600000How often the cache size is checked, in milliseconds.
clearStorageDatarestartbooleannullFlag to clear storage data. Expects an object of the type https://www.electronjs.org/docs/latest/api/session#sesclearstoragedataoptions
clientCertPathrestartstring""Custom Client Certs for corporate authentication (certificate must be in pkcs12 format)
clientCertPasswordrestartstring""Custom Client Certs password for corporate authentication (certificate must be in pkcs12 format)
closeAppOnCrossrestartbooleanfalseClose the app when clicking the close (X) cross
defaultNotificationUrgencylivestring"normal"Default urgency for new notifications (low/normal/critical)
defaultURLHandlerrestartstring""Default application to be used to open the HTTP URLs
disableGpurestartbooleanfalseA flag to disable GPU and hardware acceleration (can be useful if the window remains blank)
downloadrestartobject{"enabled":false,"notifyOnDownloadComplete":true,"showProgressBar":true,"showTitlePrefix":true,"saveDirectory":"","alwaysAskWhereToSave":false,"openWhenDone":false}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
FieldTypeDefaultDescription
download.enabledbooleanfalseMaster switch for the download feedback feature; sub-flags only take effect when this is true.
download.notifyOnDownloadCompletebooleantrueShow a system notification when a file download finishes (click opens the containing folder).
download.showProgressBarbooleantrueDrive the taskbar progress bar and KDE JobView / Unity LauncherEntry signals while downloads are in flight.
download.showTitlePrefixbooleantruePrefix the main window title with download progress as a portable fallback where other progress signals are not rendered.
disableNotificationslivebooleanfalseA flag to disable all notifications
disableNotificationSoundlivebooleanfalseDisable chat/meeting start notification sound
disableNotificationSoundIfNotAvailablelivebooleanfalseDisables notification sound unless status is Available (e.g. while in a call, busy, etc.)
disableNotificationWindowFlashlivebooleanfalseA flag indicates whether to disable window flashing when there is a notification
notificationsrestartobject{"timeoutType":"default","electron":{"clickAction":"show"}}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
FieldTypeDefaultDescription
notifications.timeoutTypestring"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.clickActionstring"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
disableBadgeCountlivebooleanfalseA flag indicates whether to disable the badge counter on the taskbar/dock icon
disableGlobalShortcutsrestartarray[]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
globalShortcutsrestartarray[]Global keyboard shortcuts that work system-wide. Disabled by default (opt-in). See configuration docs for details and limitations
electronCLIFlagsrestartarray[]Electron CLI flags
emulateWinChromiumPlatformrestartbooleanfalseUse windows platform information in chromium. This is helpful if MFA app does not support Linux.
enableIncomingCallToastrestartbooleanfalseEnable incoming call toast
followSystemThemerestartbooleantrueFollow the operating-system dark/light theme preference. Default is true; set false to keep Teams's own theme regardless of OS changes.
framerestartbooleantrueSpecify false to create a Frameless Window. Default is true
incomingCallCommandrestartstringnullCommand to execute on an incoming call. (caution: "~" in path is not supported)
incomingCallCommandArgsrestartarray[]Arguments for the incoming call command.
isCustomBackgroundEnabledrestartbooleanfalseA flag indicates whether to enable custom background or not
logConfigrestartobject{"transports":{"console":{"level":"info"},"file":{"level":false}}}Electron-log configuration. See logger.js for configurable values. To disable it provide a Falsy value.
2 nested fields
FieldTypeDefaultDescription
logConfig.transports.console.levelstring|boolean"info"electron-log level for the console transport (error/warn/info/verbose/debug/silly); set to false to disable console logging.
logConfig.transports.file.levelstring|booleanfalseelectron-log level for the file transport (error/warn/info/verbose/debug/silly); false (the default) disables file logging.
meetupJoinRegExrestartstring"^https://teams\\.(?:microsoft\\.com|live\\.com|cloud\\.microsoft)/(v2/\\?meetingjoin=|meet/|l/(?:app|call|channel|chat|entity|file|meet(?:ing|up-join)|message|task|team)/)"Regex for Teams meetup-join and related links
menubarrestartstring"auto"A value controls the menu bar behaviour
minimizedrestartbooleanfalseStart the application minimized
minimizeOnCloserestartbooleanfalseMinimize the window when clicking the close (X) cross instead of hiding it to the tray (ignored when closeAppOnCross is true)
notificationMethodrestartstring"web"Notification method to be used by the application (web/electron/custom)
customNotificationrestartobject{"toastDuration":5000}Custom in-app notification system configuration
1 nested field
FieldTypeDefaultDescription
customNotification.toastDurationnumber5000Time in milliseconds before a custom toast notification auto-dismisses.
onNewWindowOpenMeetupJoinUrlInApprestartbooleantrueOpen meetupJoinRegEx URLs in the app instead of the default browser
partitionrestartstring"persist:teams-4-linux"BrowserWindow webpreferences partition
proxyServerrestartstringnullProxy Server with format address:port
networkrestartobject{"webRTCIPHandlingPolicy":null,"disableQuic":true}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
FieldTypeDefaultDescription
network.webRTCIPHandlingPolicystringnullWebRTC 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.disableQuicbooleantrueAppend Chromium's --disable-quic switch at startup to work around QUIC protocol errors (issue #2518).
spellCheckerLanguagesrestartarray[]Array of languages to use with Electron's spell checker (experimental)
ssoBasicAuthUserrestartstring""User to use for SSO basic auth.
ssoBasicAuthPasswordCommandrestartstring""Command to execute to retrieve password for SSO basic auth.
trayIconEnabledrestartbooleantrueEnable tray icon
msTeamsProtocolsrestartobject{"v1":"^msteams:/(?:meet/|l/(?:app|call|channel|chat|entity|file|meet(?:ing|up-join)|message|task|team)/)","v2":"^msteams://teams\\.(?:microsoft\\.com|live\\.com|cloud\\.microsoft)/(?:meet/|l/(?:app|call|channel|chat|entity|file|meet(?:ing|up-join)|message|task|team)/)"}Regular expressions for Microsoft Teams protocol links (v1 and v2).
2 nested fields
FieldTypeDefaultDescription
msTeamsProtocols.v1string"^msteams:/(?:meet/|l/(?:app|call|channel|chat|entity|file|meet(?:ing|up-join)|message|task|team)/)"Regular expression matching legacy msteams: scheme protocol links.
msTeamsProtocols.v2string"^msteams://teams\\.(?:microsoft\\.com|live\\.com|cloud\\.microsoft)/(?:meet/|l/(?:app|call|channel|chat|entity|file|meet(?:ing|up-join)|message|task|team)/)"Regular expression matching host-based msteams:// scheme protocol links.
urlrestartstring"https://teams.cloud.microsoft"Microsoft Teams URL
useMutationTitleLogicrestartbooleantrueUse MutationObserver to update counter from title
watchConfigFilerestartbooleanfalseWatch for changes in the config file and reload the app
webDebugrestartbooleanfalseEnable debug at start
mediarestartobject{"microphone":{"disableAutogain":false,"speakingIndicator":false,"ignoreSystemMute":false,"overrideConstraints":{"enabled":false}},"camera":{"resolution":{"enabled":false,"mode":"remove"},"autoAdjustAspectRatio":{"enabled":false}},"video":{"menuEnabled":false},"showStatusOnDockIcon":false,"macPerformanceMode":true,"preventDeviceSwitching":false}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
FieldTypeDefaultDescription
media.microphone.disableAutogainbooleanfalseDisable microphone auto gain control so Teams does not automatically adjust microphone volume levels.
media.microphone.speakingIndicatorbooleanfalseEnable a visual overlay showing microphone state during calls (speaking/silent/muted) with WebRTC-based call state detection.
media.microphone.ignoreSystemMutebooleanfalseStop 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.enabledbooleanfalseEnable overriding the microphone audio constraints Teams requests via getUserMedia; only the keys you set are overridden.
media.microphone.overrideConstraints.echoCancellationbooleanundefinedWhen set, overrides getUserMedia's echoCancellation constraint; omit to leave it untouched.
media.microphone.overrideConstraints.noiseSuppressionbooleanundefinedWhen set, overrides getUserMedia's noiseSuppression constraint; omit to leave it untouched.
media.microphone.overrideConstraints.autoGainControlbooleanundefinedWhen set, overrides getUserMedia's autoGainControl constraint (takes precedence over disableAutogain); omit to leave it untouched.
media.microphone.overrideConstraints.channelCountnumberundefinedWhen set, pins the microphone channel count (typically 1 or 2); omit to leave it untouched.
media.microphone.overrideConstraints.sampleRatenumberundefinedWhen set, pins the microphone sample rate in Hz (e.g. 48000); omit to leave it untouched.
media.camera.resolution.enabledbooleanfalseEnable camera resolution control.
media.camera.resolution.modestring"remove"Resolution mode: remove strips Teams' constraints to allow native camera resolution, override sets a specific width/height. Choices: remove, override
media.camera.resolution.widthnumberundefinedTarget camera width when mode is override.
media.camera.resolution.heightnumberundefinedTarget camera height when mode is override.
media.camera.autoAdjustAspectRatio.enabledbooleanfalseReapply proper aspect ratio constraints to fix camera video stretching when moving Teams between monitors with different orientations.
media.video.menuEnabledbooleanfalseEnable the menu entry for controlling video elements (PiP mode, video controls).
media.showStatusOnDockIconbooleanfalseOverlay the user presence status on the Dock icon on macOS.
media.macPerformanceModebooleantrueOn 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.
mqttrestartobject{"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 commands
12 nested fields
FieldTypeDefaultDescription
mqtt.enabledbooleanfalseEnable the MQTT integration (status publishing and command reception).
mqtt.brokerUrlstring""MQTT broker URL, e.g. mqtt://host:1883 or mqtts://host:8883 for TLS.
mqtt.usernamestring""MQTT username for authentication (optional).
mqtt.passwordstring""MQTT password for authentication (optional).
mqtt.clientIdstring"teams-for-linux"Unique MQTT client identifier.
mqtt.topicPrefixstring"teams"Topic prefix for all MQTT messages.
mqtt.statusTopicstring"status"Topic name for outbound status messages, combined with topicPrefix.
mqtt.commandTopicstring""Topic name for receiving inbound commands; leave empty to disable (status-only mode).
mqtt.statusCheckIntervalnumber10000Polling interval in milliseconds for the status detection fallback.
mqtt.homeAssistant.enabledbooleanfalseEnable Home Assistant MQTT auto-discovery so entities are created automatically.
mqtt.homeAssistant.discoveryPrefixstring"homeassistant"MQTT discovery topic prefix used by Home Assistant.
mqtt.homeAssistant.deviceNamestring"Teams for Linux"Device name shown in Home Assistant.
quickChatrestartobject{"enabled":false}Quick Chat configuration for quick access to chat contacts and inline messaging via Graph API
2 nested fields
FieldTypeDefaultDescription
quickChat.enabledbooleanfalseEnable the Quick Chat feature for quick contact search and chat access.
quickChat.shortcutstringundefinedKeyboard shortcut to toggle the Quick Chat modal (e.g. CommandOrControl+Alt+Q); unset by default.
graphApirestartobject{"enabled":false}Microsoft Graph API integration for enhanced Teams functionality (calendar, user profile, etc.)
1 nested field
FieldTypeDefaultDescription
graphApi.enabledbooleanfalseEnable the Microsoft Graph API integration for calendar and mail access.
authrestartobject{"intune":{"enabled":false,"user":""},"webauthn":{"enabled":false,"debug":false},"reauthRecovery":{"enabled":false}}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
FieldTypeDefaultDescription
auth.intune.enabledbooleanfalseEnable Single-Sign-On using Microsoft Intune.
auth.intune.userstring""User (e-mail) to use for Intune SSO.
auth.webauthn.enabledbooleanfalseEnable FIDO2 hardware security key support for WebAuthn authentication on Linux (requires fido2-tools).
auth.webauthn.debugbooleanfalseEnable verbose WebAuthn diagnostic logging, intended for beta testers troubleshooting key registration.
auth.reauthRecovery.enabledbooleanfalseOpt into in-app recovery from stale sessions by intercepting the stale 'sign in again' login popup and recovering in-app.
multiAccountrestartobject{"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
FieldTypeDefaultDescription
multiAccount.enabledbooleanfalseOpt-in flag for the single-window multi-account profile switcher; mutually exclusive with auth.intune.enabled.
waylandrestartobject{"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
FieldTypeDefaultDescription
wayland.xwaylandOptimizationsbooleanfalseKeep GPU enabled and skip the fake media UI flag under XWayland; may fix camera issues but can break screen sharing.