Skip to main content

Configuration Options

This document details all available configuration options for the Teams for Linux application. These options can be set via command-line arguments or in a config.json file located in the application's configuration directory.

Table of Contents

Quick Start

Command Line Example

teams-for-linux --partition nopersist

Basic Config File

Create a config.json file with your desired settings:

{
"closeAppOnCross": true,
"disableNotifications": false,
"customCSSName": "compactDark"
}

Configuration Locations

Place your config.json file in the appropriate location based on your installation type:

  • Vanilla: ~/.config/teams-for-linux/config.json
  • Snap: ~/snap/teams-for-linux/current/.config/teams-for-linux/config.json
  • Flatpak: ~/.var/app/com.github.IsmaelMartinez.teams_for_linux/config/teams-for-linux/config.json

[!NOTE] yargs supports multiple configuration methods—refer to their documentation if you prefer using a configuration file over command-line arguments.

Configuration Options Reference

Core Application Settings

OptionTypeDefaultDescription
urlstring"https://teams.microsoft.com/v2"Microsoft Teams URL
appTitlestring"Microsoft Teams"Text to be suffixed with page title
partitionstring"persist:teams-4-linux"BrowserWindow webpreferences partition
closeAppOnCrossbooleanfalseClose the app when clicking the close (X) cross
minimizedbooleanfalseStart the application minimized
framebooleantrueSpecify false to create a Frameless Window
menubarstring"auto"Menu bar behaviour. Choices: auto, visible, hidden
webDebugbooleanfalseEnable debug at start

Authentication & Security

OptionTypeDefaultDescription
authServerWhiteliststring"*"Set auth-server-whitelist value
clientCertPathstring""Custom Client Certs for corporate authentication (certificate must be in pkcs12 format)
clientCertPasswordstring""Custom Client Certs password for corporate authentication
customCACertsFingerprintsarray[]Array of custom CA Certs Fingerprints to allow SSL unrecognized signer or self signed certificate
ssoBasicAuthUserstring""User to use for SSO basic auth
ssoBasicAuthPasswordCommandstring""Command to execute to retrieve password for SSO basic auth
ssoInTuneEnabledbooleanfalseEnable Single-Sign-On using Microsoft InTune
ssoInTuneAuthUserstring""User (e-mail) to use for InTune SSO
proxyServerstringnullProxy Server with format address:port

Notifications & UI

OptionTypeDefaultDescription
disableNotificationsbooleanfalseDisable all notifications
disableNotificationSoundbooleanfalseDisable chat/meeting start notification sound
disableNotificationSoundIfNotAvailablebooleanfalseDisables notification sound unless status is Available
disableNotificationWindowFlashbooleanfalseDisable window flashing when there is a notification
notificationMethodstring"web"Notification method. Choices: web, electron
defaultNotificationUrgencystring"normal"Default urgency for new notifications. Choices: low, normal, critical
enableIncomingCallToastbooleanfalseEnable incoming call toast
customCSSNamestring""Custom CSS name. Options: "compactDark", "compactLight", "tweaks", "condensedDark", "condensedLight"
customCSSLocationstring""Custom CSS styles file location
followSystemThemebooleanfalseFollow system theme

Screen Sharing & Media

OptionTypeDefaultDescription
disableAutogainbooleanfalseDisable microphone auto gain control - prevents Teams from automatically adjusting microphone volume levels. Useful for professional audio setups or when manual gain control is preferred
screenSharingThumbnailobject{ enabled: true, alwaysOnTop: true }Automatically show thumbnail window when screen sharing
screenLockInhibitionMethodstring"Electron"Screen lock inhibition method. Choices: Electron, WakeLockSentinel
videoMenubooleanfalseEnable menu entry for controlling video elements
isCustomBackgroundEnabledbooleanfalseEnable custom background feature
customBGServiceBaseUrlstring"http://localhost"Base URL of the server which provides custom background images
customBGServiceConfigFetchIntervalnumber0Poll interval in seconds to download background service config

System Integration

OptionTypeDefaultDescription
trayIconEnabledbooleantrueEnable tray icon
appIconstring""Teams app icon to show in the tray
appIconTypestring"default"Type of tray icon. Choices: default, light, dark
useMutationTitleLogicbooleantrueUse MutationObserver to update counter from title
awayOnSystemIdlebooleanfalseSets user status as away when system goes idle
appIdleTimeoutnumber300Duration in seconds before app considers system as idle
appIdleTimeoutCheckIntervalnumber10Poll interval in seconds to check if idle timeout is reached
appActiveCheckIntervalnumber2Poll interval in seconds to check if system is active from being idle
disableGlobalShortcutsarray[]Array of global shortcuts to disable while app is in focus

Advanced Options

OptionTypeDefaultDescription
electronCLIFlagsarray[]Electron CLI flags
chromeUserAgentstringMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${process.versions.chrome} Safari/537.36Google Chrome User Agent
emulateWinChromiumPlatformbooleanfalseUse windows platform information in chromium (helpful if MFA app doesn't support Linux)
disableGpubooleanfalseDisable GPU and hardware acceleration
clearStorageDatabooleannullFlag to clear storage data
watchConfigFilebooleanfalseWatch for changes in config file and reload the app
classstringnullCustom value for the WM_CLASS property
defaultURLHandlerstring""Default application to open HTTP URLs
spellCheckerLanguagesarray[]Array of languages to use with Electron's spell checker
logConfigobject{ transports: { console: { level: "info" }, file: { level: false } } }Electron-log configuration
meetupJoinRegExstring^https://teams.(microsoft|live).com/.*(?:meetup-join|channel|chat)Meetup-join and channel regular expression
msTeamsProtocolsobject{ v1: "^msteams:\/l\/(?:meetup-join|channel|chat|message)", v2: "^msteams:\/\/teams\.microsoft\.com\/l\/(?:meetup-join|channel|chat|message)" }Regular expressions for Microsoft Teams protocol links
onNewWindowOpenMeetupJoinUrlInAppbooleantrueOpen meetupJoinRegEx URLs in the app instead of default browser
disableTimestampOnCopybooleanfalseControls whether timestamps are included when copying messages
cacheManagementobject{ enabled: true, maxCacheSizeMB: 600, cacheCheckIntervalMs: 3600000 }Cache management configuration

Usage Examples & Guides

Basic Setup Examples

Minimal Configuration

{
"closeAppOnCross": true
}

Dark Theme with Notifications Disabled

{
"customCSSName": "compactDark",
"disableNotifications": true,
"followSystemTheme": true
}

Enterprise Setup

{
"ssoInTuneEnabled": true,
"ssoInTuneAuthUser": "user@company.com",
"clientCertPath": "/path/to/cert.p12",
"clientCertPassword": "password",
"proxyServer": "proxy.company.com:8080"
}

Professional Audio Setup

{
"disableAutogain": true
}

[!NOTE] The disableAutogain option prevents Teams from automatically adjusting your microphone volume. This is particularly useful for users with professional audio equipment, external mixers, or specific hardware configurations where manual gain control is preferred.

System-wide Configuration

Teams for Linux supports system-wide configuration files for enterprise and multi-user environments.

Configuration Precedence

  1. System-wide config: /etc/teams-for-linux/config.json
  2. User config: User's config directory (e.g., ~/.config/teams-for-linux/config.json)
  3. Default values: Built-in application defaults

[!NOTE] User configurations take precedence over system-wide configurations. This allows administrators to set organization-wide defaults while still allowing individual users to customize their settings.

Example System-wide Config

Create /etc/teams-for-linux/config.json to set organization-wide defaults:

{
"closeAppOnCross": false,
"disableNotifications": false,
"screenSharingThumbnail": {
"enabled": true
},
"customCSSName": "compactDark",
"ssoInTuneEnabled": true,
"proxyServer": "proxy.company.com:8080"
}

Related GitHub Issues: Issue #1773

Electron CLI Flags

The configuration file can include Electron CLI flags that will be added when the application starts.

{
"electronCLIFlags": [
["ozone-platform", "wayland"],
"disable-software-rasterizer"
]
}

[!NOTE] For options that require a value, provide them as an array where the first element is the flag and the second is its value. If no value is needed, you can use a simple string.

Incoming Call Command

To use the incoming call command feature, a command or executable needs to be configured.

{
"incomingCallCommand": "/home/user/incomingCallScript.sh",
"incomingCallCommandArgs": ["-f", "1234"]
}

This will execute the following on an incoming call:

/home/user/incomingCallScript.sh -f 1234 NAME_OF_CALLER SUBTEXT IMAGE_OF_CALLER

[!NOTE]

  • Only the property incomingCallCommand is necessary, incomingCallCommandArgs is completely optional
  • This feature has no connection to the incoming call toast feature. These two features can be used separately

Cache Management

[!IMPORTANT] The Cache Manager is enabled by default and prevents daily issues caused by cache overflow (issue #1756).

The cache management feature automatically cleans cache files when they grow too large and cause token corruption:

{
"cacheManagement": {
"enabled": true,
"maxCacheSizeMB": 600,
"cacheCheckIntervalMs": 3600000
}
}
OptionTypeDefaultDescription
enabledbooleantrueEnable/disable automatic cache management
maxCacheSizeMBnumber600Maximum cache size in MB before cleanup
cacheCheckIntervalMsnumber3600000How often to check cache size in milliseconds (1 hour)

What Gets Cleaned vs Preserved

Click to expand cleanup details

Cleaned:

  • Cache directories (main Cache, GPUCache, Code Cache)
  • Partition-specific cached data for your configured partition (e.g. Partitions/teams-4-linux/{Cache,GPUCache,Code Cache})
  • Temporary WAL/journal files that are known to cause token corruption

Preserved:

  • IndexedDB and WebStorage for the Teams partition (these contain authentication tokens and session state)
  • Authentication tokens and login credentials
  • User preferences and settings
  • Other essential persistent storage

Manual Cache Cleanup

Enable debug logging to monitor cache activities:

teams-for-linux --logConfig='{"level":"debug"}'

Option 1: Safe cleanup (won't sign you out)

This mirrors what the app's automatic cleaner does:

# Stop Teams for Linux first
pkill -f "teams-for-linux"

# Remove top-level caches
rm -rf ~/.config/teams-for-linux/Cache/*
rm -rf ~/.config/teams-for-linux/GPUCache/*
rm -rf ~/.config/teams-for-linux/"Code Cache"/*

# Remove partition-specific caches (default partition name is teams-4-linux)
rm -rf ~/.config/teams-for-linux/Partitions/teams-4-linux/Cache/*
rm -rf ~/.config/teams-for-linux/Partitions/teams-4-linux/GPUCache/*
rm -rf ~/.config/teams-for-linux/Partitions/teams-4-linux/"Code Cache"/*

# Remove problematic temporary files
rm -f ~/.config/teams-for-linux/DIPS-wal
rm -f ~/.config/teams-for-linux/SharedStorage-wal
rm -f ~/.config/teams-for-linux/Cookies-journal

Option 2: Full reset for Teams origin (will sign you out)

Use the in-app menu to clear storage for just the Teams website origin:

  • Open the app menu → Debug → Reset Teams Cache

[!WARNING] You'll be logged out and will need to sign in again. Use this only if you suspect corrupted site data or repeated auth failures.

Tray Icon Behavior by Desktop Environment

The tray icon functionality varies depending on your Linux desktop environment:

Visual Badge Support

  • Unity (Ubuntu 12.04-18.04): ✅ Shows visual launcher badges with unread count
  • KDE Plasma: ✅ Shows taskbar badge overlays with unread count
  • GNOME: ✅ Limited support via extensions
  • Cinnamon/MATE: ❌ No visual badges - unread count shown in tooltip only
  • XFCE: ❌ Limited badge support
  • macOS: ✅ Dock badges (full support)
  • Windows: ✅ Taskbar overlay badges (full support)

Cinnamon Users

If you're using Linux Mint Cinnamon or other Cinnamon-based distributions:

  • Hover over the tray icon to see unread count in tooltip: "Teams for Linux (5)"
  • Click the tray icon to show/focus the Teams window
  • Window flashing indicates new notifications
  • Right-click for context menu options

[!NOTE] A visual icon overlay solution for Cinnamon is planned to draw notification counts directly on the tray icon image.