Modify Thunderbird settings

From MozillaZine Knowledge Base
Jump to navigationJump to search

Thunderbird stores any settings you change or create using Tools → Account Settings and Tools → Options in the prefs.js file in the profile.

The recommended way to add or modify a setting which doesn't have its own input box, checkbox or radio button in said dialogs is to use Tools → Options → Advanced → General → Config Editor, equivalent to Firefox's about:config. You can search for any preference using the filter field, and then double click on a preference to modify it. You can also add settings by right clicking anywhere in the list, selecting new from the context menu, and then select the type (string, integer or boolean), and enter the name of the setting and its value.

Some alternatives:

  1. You can add or modify a setting by editing prefs.js directly using a text editor. However, prefs.js does not contain all of the settings, it only contains any settings that have changed. In fact, if you add a setting with a default value Thunderbird will quietly remove that line from the file the next time you run it. It is also not as tolerant of user errors as the config editor, and requires you to learn where the profile is stored.

    Do not edit this file while Thunderbird is running since it may overwrite some of the settings when it exits, losing your edits.

  2. The ViewAbout extension adds support for about:<something> windows just like those in Firefox. Its about:config window is the same as the Config Editor mentioned above.
  3. The ChromEdit extension makes it easy to edit prefs.js or user.js without knowing their location. It is no longer officially supported and you may have problems finding a version that works with future versions of Thunderbird.
  4. The MR Tech Toolkit extension, which is actively maintained, includes among others the functionalities of both ViewAbout and ChromEdit extensions mentioned above.

Example

You have a problem downloading a large message, or the webmail extension doesn't fetch all of your new mail. Increasing the timeout setting from the default 60 seconds to 120 seconds might help. However, the timeout setting, as with many preferences, cannot be set using the GUI. The first step is to figure out the name of the preference. If you can't find the preference in the knowledge base, try using the Config Editor to identify the name of the preference. If you type timeout in the filter you may see something like the following:

accessibility.typeaheadfind.enabletimeout
accessibility.typeaheadfind.timeout
mail.server.server2.timeout
mail.server.server4.timeout
mailnews.tcptimeout
network.ftp.idleConnectionTimeout
network.http.keep-alive.timeout
network.proxy.failover_timeout

along with their status, type and value. You need a preference whose name begins with mail or mailnews (it tends to have global settings). mail.server.server2.timeout and mail.server.server4.timeout are obviously server specific settings, network.* settings are normally too specialized (NTLM, dialup, cookie related settings etc.) and accessibility.* settings are clearly unrelated. That leaves the mailnews.tcptimeout setting. Double click on it, enter 120, and press the OK button. If you don't want to use the Config Editor you could have used a text editor to add user_pref("mailnews.tcptimeout", 120); to prefs.js instead.

The defaults\pref\mailnews.js file in your Thunderbird program installation directory contains most of the default settings. It uses a pref prefix rather than a user_pref prefix on any settings. For example, pref("mailnews.tcptimeout", 60); . You should not edit that file. However, it's sometimes useful to view that file to find out what preferences exist and what their default values are.

Change connection timeout

If you want to increase the connection timeout and the instructions in the example are too complex:

  • Click on the Config Editor button in Tools -> Options -> Advanced -> General
  • Type mailnews.tcptimeout at Filter:
  • It should list the settings just for mailnews.tcptimeout.
  • Look in the Value column and double click on that number. It defaults to 100 in Thunderbird 3.1.7.
  • It should display a "Enter Integer value" window .
  • Change the number to a higher value and press the OK button
  • Verify the new value is listed in the Value column. The Status column should also change from "default" to "user set".

User.js

You can also create an optional user.js file in the same directory as prefs.js. It is mainly used by administrators to set the same settings in several profiles. It is recommended that you don't use it since any settings you add to it will be merged into prefs.js when Thunderbird starts, preventing permanent changes using the Config Editor.

Default values

Settings using the default value are not stored in prefs.js, and will be automatically deleted if you add them by editing the file. This means that not every setting may be listed in the config editor.

Normally this doesn't cause a problem but it means that if you use multiple versions of Thunderbird with the same profile a modified setting could get automatically deleted. This might occur while testing, or if you ran into some bugs with the current release and experimented with installing an older version in a different directory to see if it worked around the problems.

For example, extensions.strictCompatibility has always existed, defaulting to false. In version 60 its default setting was changed to true. If while running version 60.0 you set it to false, exit and run version 52.9.1 it is now using the default value, so extensions.strictCompatibility is automatically deleted from prefs.js. If you run version 60.0 again the setting becomes true (the new default value, since its not defined in prefs.js anymore). There is no warning when this occurs. The same issue also occurred with the hardware acceleration settings (gfx.direct2d.disabled, layers.prefer-opengl , and layers.acceleration.disabled), due to the developers changing the default setting several times. So far those appear to be the only settings where this is an issue.

Normally you don't want to use user.js but if you are concerned that a setting might change behind your back the solution is to define it in user.js.

See also