Firefox: Difference between revisions

From ArchWiki
(→‎Hardware video acceleration: style, change wording and link to the actual bug report)
(update Pkg/AUR templates)
 
(468 intermediate revisions by more than 100 users not shown)
Line 1: Line 1:
[[Category:Web browser]]
[[Category:Web browser]]
[[Category:Mozilla]]
[[Category:Mozilla]]
[[ar:Firefox]]
[[cs:Firefox]]
[[de:Firefox]]
[[de:Firefox]]
[[es:Firefox]]
[[es:Firefox]]
[[fr:Firefox]]
[[it:Firefox]]
[[ja:Firefox]]
[[ja:Firefox]]
[[ko:Firefox]]
[[ru:Firefox]]
[[ru:Firefox]]
[[zh-hans:Firefox]]
[[zh-hans:Firefox]]
[[zh-hant:Firefox]]
{{Related articles start}}
{{Related articles start}}
{{Related|Browser plugins}}
{{Related|Firefox/Tweaks}}
{{Related|Firefox/Tweaks}}
{{Related|Firefox/Profile on RAM}}
{{Related|Firefox/Profile on RAM}}
{{Related|Firefox/Privacy}}
{{Related|Firefox/Privacy}}
{{Related|Browser extensions}}
{{Related|Chromium}}
{{Related|Chromium}}
{{Related|Opera}}
{{Related articles end}}
{{Related articles end}}
[https://www.mozilla.org/firefox Firefox] is a popular open source graphical web browser from [https://www.mozilla.org Mozilla].
[https://www.mozilla.org/firefox Firefox] is a popular open source graphical web browser from [https://www.mozilla.org Mozilla].
{{Note|For older versions, there may be no "Settings" but "Preferences" in their menus. You can replace "Settings" in the article with "Preferences" if need.}}


== Installing ==
== Installing ==
Line 28: Line 26:


* {{App|Firefox Developer Edition|for developers|https://www.mozilla.org/firefox/developer/|{{Pkg|firefox-developer-edition}}}}
* {{App|Firefox Developer Edition|for developers|https://www.mozilla.org/firefox/developer/|{{Pkg|firefox-developer-edition}}}}
* {{App|Firefox Extended Support Release|long-term supported version|https://www.mozilla.org/firefox/organizations/|{{AUR|firefox-esr}} or {{AUR|firefox-esr-bin}}}}
* {{App|Firefox Extended Support Release|long-term supported version|https://www.mozilla.org/firefox/organizations/|{{AUR|firefox-esr}}}}
* {{App|Firefox Beta|cutting-edge version|https://www.mozilla.org/firefox/channel/desktop/#beta|{{AUR|firefox-beta}} or {{AUR|firefox-beta-bin}}}}
* {{App|Firefox Beta|cutting-edge version|https://www.mozilla.org/firefox/channel/desktop/#beta|{{AUR|firefox-beta-bin}}}}
* {{App|Firefox Nightly|nightly builds for testing ([https://developer.mozilla.org/Firefox/Experimental_features experimental features])|https://www.mozilla.org/firefox/channel/desktop/#nightly|{{AUR|firefox-nightly}}}}  
* {{App|Firefox Nightly|nightly builds for testing ([https://developer.mozilla.org/Firefox/Experimental_features experimental features])|https://www.mozilla.org/firefox/channel/desktop/#nightly|{{AUR|firefox-nightly}}}}
* {{App|Firefox KDE|Version of Firefox that incorporates an OpenSUSE patch for better [[#KDE/GNOME integration|KDE integration]] than is possible through simple Firefox plugins.|https://build.opensuse.org/package/show/mozilla:Factory/MozillaFirefox|{{AUR|firefox-kde-opensuse}}}}
* {{App|Firefox KDE|Version of Firefox that incorporates an OpenSUSE patch for better [[#KDE integration|KDE integration]] than is possible through simple Firefox add-ons.|https://build.opensuse.org/package/show/mozilla:Factory/MozillaFirefox|{{AUR|firefox-kde-opensuse}}}}
* On top of the different Mozilla build channels, a number of forks exist with more or less special features; see [[List of applications#Gecko-based]].
* On top of the different Mozilla build channels, a number of forks exist with more or less special features; see [[List of applications/Internet#Gecko-based]].
 
A number of language packs are available for Firefox, other than the standard English. Language packs are usually named as {{ic|firefox-i18n-''languagecode''}} (where {{ic|''languagecode''}} can be any language code, such as '''de''', '''ja''', '''fr''', etc.). For a list of available language packs, see [https://archlinux.org/packages/extra/any/firefox-i18n/ firefox-i18n] for {{Pkg|firefox}}, [https://archlinux.org/packages/extra/any/firefox-developer-edition-i18n/ firefox-developer-edition-i18n] for {{Pkg|firefox-developer-edition}} and [https://aur.archlinux.org/packages/?K=firefox-nightly- firefox-nightly-] for {{AUR|firefox-nightly}}.


A number of language packs are available for Firefox, other than the standard English. Language packs are usually named as {{ic|firefox-i18n-''languagecode''}} (where {{ic|''languagecode''}} can be any language code, such as '''de''', '''ja''', '''fr''', etc.). For a list of available language packs see [https://www.archlinux.org/packages/extra/any/firefox-i18n/ firefox-i18n] for {{Pkg|firefox}},[https://www.archlinux.org/packages/community/any/firefox-developer-edition-i18n/ firefox-developer-edition-i18n] for {{Pkg|firefox-developer-edition}} and [https://aur.archlinux.org/packages/?K=firefox-nightly- firefox-nightly-] for {{AUR|firefox-nightly}}.
{{Note|1=Language packs are disabled on ''-nightly'' and ''-developer-edition'' due to frequent string changes that may cause crashes. To force a change to the UI language, you may need to set {{ic|intl.locale.requested}} in {{ic|about:config}} [https://www.reddit.com/r/firefox/comments/lx3dp9/how_to_change_interface_language/gpovlsp/?context=8&depth=9].}}


== Add-ons ==
== Add-ons ==


Firefox is well known for its large library of add-ons which can be used to add new features or modify the behavior of existing features. Firefox's "Add-ons Manager" is used to manage installed add-ons or find new ones.  
Firefox is well known for its large library of add-ons which can be used to add new features or modify the behavior of existing features. Firefox's "Add-ons Manager" is used to manage installed add-ons or find new ones.


For instructions on how to install add-ons and a list of add-ons, see [[Browser extensions]].
For instructions on how to install add-ons and a list of add-ons, see [[Browser extensions]].
Line 44: Line 44:
=== Adding search engines ===
=== Adding search engines ===


Search engines may be added to Firefox by creating bookmarks with the {{ic|Location}} field using search URLs completed with %s in place of the query and the {{ic|Keyword}} field completed with user-defined characters:
Search engines may be added to Firefox by creating bookmarks:
 
* Press the star on the address bar or {{ic|Ctrl+d}}.
* Right click on the bookmark you have created, then press ''Edit Bookmark...''
* Complete the ''URL'' field with search URLs. Complete the place of the query with {{ic|%s}}. Complete the ''Keyword'' field with user-defined characters. Like this:


  Location:
  URL:
  https://duckduckgo.com/html/?q=%s
  https://duckduckgo.com/html/?q=%s
  Keyword:
  Keyword:
  d
  d
{{Note|Older versions use "Location" instead of "URL".}}


Searches are performed by pre-pending the search term with the keyword of the specified search engine: {{ic|d archwiki}} will query DuckDuckGo using the search term {{ic|archwiki}}
Searches are performed by pre-pending the search term with the keyword of the specified search engine: {{ic|d archwiki}} will query DuckDuckGo using the search term {{ic|archwiki}}
 
Search engines may also be added to Firefox through add-on extensions, see [https://addons.mozilla.org/firefox/search-tools/ this page] for a list of available search tools and engines.
Search engines may also be added to Firefox through add-on extensions; see [https://addons.mozilla.org/firefox/search-tools/ this page] for a list of available search tools and engines.


A very extensive list of search engines can be found at the [https://mycroftproject.com/ Mycroft Project].
A very extensive list of search engines can be found at the [https://mycroftproject.com/ Mycroft Project].
Also, you can use the [https://firefox.maltekraus.de/extensions/add-to-search-bar add-to-searchbar] extension to add a search to your search bar from any web site, by simply right clicking on the site's search field and selecting ''Add to Search Bar...''


==== firefox-extension-arch-search ====
==== firefox-extension-arch-search ====
Line 65: Line 69:
== Plugins ==
== Plugins ==


The only plugin supported by Firefox is [[Browser plugins#Adobe Flash Player|Adobe Flash Player]] (NPAPI version). Other plugins are [https://support.mozilla.org/en-US/kb/npapi-plugins no longer supported].
Support for all plugins, including Flash Player, was removed in Firefox 85.[https://support.mozilla.org/kb/npapi-plugins][https://support.mozilla.org/kb/end-support-adobe-flash]
 
To find out what plugins are installed/enabled, enter:
 
about:plugins
 
in the Firefox address bar or go to the ''Add-ons'' entry in the Firefox Menu and select the ''Plugins'' tab.


== Configuration ==
== Configuration ==
Line 79: Line 77:
  about:config
  about:config


Once set, these affect the user's current profile, and may be synchronized across all devices via [https://www.mozilla.org/firefox/sync/ Firefox Sync]. Please note that only a subset of the {{ic|about:config}} entries are synchronized by this method, and the exact subset may be found by searching for {{ic|services.sync.prefs}} in {{ic|about:config}}. Additional preferences and third party preferences may be synchronized by creating new boolean entries prepending the config value with {{ic|services.sync.prefs.sync}} ([https://developer.mozilla.org/en-US/docs/Archive/Mozilla/Firefox_Sync/Syncing_custom_preferences documentation] is still applicable.) To synchronize the whitelist for the extension [https://addons.mozilla.org/firefox/addon/noscript/ NoScript]:
Once set, these affect the user's current profile, and may be synchronized across all devices via [https://www.mozilla.org/firefox/sync/ Firefox Sync]. Please note that only a subset of the {{ic|about:config}} entries are synchronized by this method, and the exact subset may be found by searching for {{ic|services.sync.prefs}} in {{ic|about:config}}. Additional preferences and third party preferences may be synchronized by creating new boolean entries prepending the value with [https://support.mozilla.org/en-US/kb/sync-custom-preferences services.sync.prefs.sync]. To synchronize the whitelist for the extension [https://addons.mozilla.org/firefox/addon/noscript/ NoScript]:


  services.sync.prefs.sync.capability.policy.maonoscript.sites
  services.sync.prefs.sync.capability.policy.maonoscript.sites
Line 85: Line 83:
The boolean {{ic|noscript.sync.enabled}} must be set to {{ic|true}} to synchronize the remainder of NoScript's preferences via Firefox Sync.
The boolean {{ic|noscript.sync.enabled}} must be set to {{ic|true}} to synchronize the remainder of NoScript's preferences via Firefox Sync.


Firefox also allows configuration for a profile via a {{ic|user.js}} file: [http://kb.mozillazine.org/User.js_file user.js] kept in the profile folder, usually {{ic|~/.mozilla/firefox/''xxxxxxxx''.default/}}. For a useful starting point, see e.g [https://github.com/pyllyukko/user.js custom user.js] which is targeted at privacy/security conscious users.
=== Settings storage ===
 
Firefox stores the configuration for a profile via a {{ic|prefs.js}} in the profile folder, usually {{ic|~/.mozilla/firefox/''xxxxxxxx''.default/}}.
 
Firefox also allows configuration for a profile via a {{ic|user.js}} file: [http://kb.mozillazine.org/User.js_file user.js] kept also in the profile folder. A {{ic|user.js}} configuration supersedes a {{ic|prefs.js}}. The {{ic|user.js}} configuration is only parsed at start-up of a profile. Hence, you can test changes via {{ic|about:config}} and modify {{ic|user.js}} at runtime accordingly. For a useful starting point, see e.g [https://github.com/pyllyukko/user.js custom user.js] which is targeted at privacy/security conscious users.


One drawback of the above approach is that it is not applied system-wide. Furthermore, this is not useful as a "pre-configuration", since the profile directory is created after first launch of the browser. You can, however, let ''firefox'' create a new profile and, after closing it again, [https://support.mozilla.org/en-US/kb/back-and-restore-information-firefox-profiles#w_restoring-a-profile-backup copy the contents] of an already created profile folder into it.  
One drawback of the above approach is that it is not applied system-wide. Furthermore, this is not useful as a "pre-configuration", since the profile directory is created after first launch of the browser. You can, however, let ''firefox'' create a new profile and, after closing it again, [https://support.mozilla.org/en-US/kb/back-and-restore-information-firefox-profiles#w_restoring-a-profile-backup copy the contents] of an already created profile folder into it.


Sometimes it may be desired to lock certain settings, a feature useful in widespread deployments of customized Firefox. In order to create a system-wide configuration, follow the steps outlined in [http://kb.mozillazine.org/Locking_preferences Locking preferences]:
Sometimes, it may be desired to lock certain settings, a feature useful in widespread deployments of customized Firefox. In order to create a system-wide configuration, follow the steps outlined in [https://support.mozilla.org/en-US/kb/customizing-firefox-using-autoconfig Customizing Firefox Using AutoConfig]:


1. Create {{ic|/usr/lib/firefox/defaults/pref/local-settings.js}}:
1. Create {{ic|/usr/lib/firefox/defaults/pref/autoconfig.js}}:


pref("general.config.filename", "firefox.cfg");
  pref("general.config.obscure_value", 0);
  pref("general.config.obscure_value", 0);
pref("general.config.filename", "mozilla.cfg");


2. Create {{ic|/usr/lib/firefox/mozilla.cfg}} (this stores the actual configuration):
2. Create {{ic|/usr/lib/firefox/firefox.cfg}} (this stores the actual configuration):


  //
  //
  //...your settings...
  //...your settings...
  // e.g to disable Pocket, uncomment the following line
  // e.g to disable Pocket, uncomment the following lines
  // lockPref("browser.pocket.enabled", false);
  // lockPref("extensions.pocket.enabled", false);
// lockPref("browser.newtabpage.activity-stream.feeds.section.topstories", false);


Please note that the first line must contain exactly {{ic|//}}. The syntax of the file is similar to that of {{ic|user.js}}.
Please note that the first line must contain exactly {{ic|//}}. The syntax of the file is similar to that of {{ic|user.js}}.
Line 107: Line 110:
=== Multimedia playback ===
=== Multimedia playback ===


Firefox uses [[FFmpeg]] for playing multimedia inside HTML5 {{ic|<audio>}} and {{ic|<video>}} elements. Go to [http://demo.nimius.net/video_test/ video-test page] or [https://hpr.dogphilosophy.net/test/ audio-test page] to check which formats are actually supported.
Firefox uses [[FFmpeg]] for playing multimedia inside HTML5 {{ic|<audio>}} and {{ic|<video>}} elements. Use https://cconcolato.github.io/media-mime-support/ to test video or https://hpr.dogphilosophy.net/test/{{Dead link|2024|03|03|status=SSL error}} to test audio, to determine which formats are actually supported.
 
Firefox uses [[PulseAudio]] for audio playback and capture. For sound to work, you need to install the {{Pkg|pulseaudio}} package.
 
In case, for whatever reason, [[PulseAudio]] is not an option for you, you can use [[Advanced Linux Sound Architecture#PulseAudio compatibility|apulse]] instead. To make this work, it is necessary to exclude {{ic|/dev/snd/}} from Firefox' sandboxing by adding it to the comma-separated list in {{ic|about:config}}:
 
security.sandbox.content.write_path_whitelist


{{Note|The trailing slash on {{ic|/dev/snd/}} is important, otherwise ''apulse'' will report "Permission denied" errors.}}
Firefox uses [[PulseAudio]] for audio playback and capture. If PulseAudio is not installed, Firefox uses [[ALSA]] instead. Note that by default, Firefox blocks all media with sound from playing automatically [https://support.mozilla.org/en-US/kb/block-autoplay].


If you have no audio even when using ''apulse'', try adding {{ic|16}} to {{ic|security.sandbox.content.syscall_whitelist}} in {{ic|about:config}}.
{{Tip|Firefox might not play video if audio is not configured. If you are intending to use [[PipeWire]] and [[WirePlumber]], make sure they are working properly and have the necessary {{Pkg|pipewire-pulse}} compatibility layer.}}


==== HTML5 DRM/Widevine ====
==== HTML5 DRM/Widevine ====


Widevine is a digital rights management tool that Netflix, Amazon Prime Video, and others use to protect their video content. It can be enabled in ''Preferences > General > Digital Rights Management (DRM) Content''. If you visit a Widevine-enabled page when this setting is disabled, Firefox will display a prompt below the address bar asking for permission to install DRM. Approve this and then wait for the "Downloading" bar to disappear, you are now able to watch videos from Widevine protected sites.
Widevine is a digital rights management tool that Netflix, Amazon Prime Video, and others use to protect their video content. It can be enabled in ''Settings > General > Digital Rights Management (DRM) Content''. If you visit a Widevine-enabled page when this setting is disabled, Firefox will display a prompt below the address bar asking for permission to install DRM. Approve this and then wait for the "Downloading" bar to disappear; now, you are able to watch videos from Widevine protected sites.


It is also required that the private mode browsing is disabled, for the window and in the preferences.
Firefox can only play 720p video (or lower) with Widevine, due to not using [https://bugzilla.mozilla.org/show_bug.cgi?id=1700815 hardware DRM playback]. It is also required that the private mode browsing is disabled, for the window and in the Settings.


==== Open With extension ====
==== "Open With" extension ====


# Install [https://addons.mozilla.org/firefox/addon/open-with/ Open With] add-on.
# Install [https://addons.mozilla.org/firefox/addon/open-with/ Open With] add-on.
# Go to ''Add-ons > Open With > Preferences''.
# Go to ''Add-ons > Open With > Preferences''.
# Proceed with instructions to install a file in your system and test the installation.  
# Proceed with instructions to install a file in your system and test the installation.
# Click ''Add browser''.
# Click ''Add browser''.
# In the dialog write a name for this menu entry and command to start a video streaming capable player (e.g. [[mpv|/usr/bin/mpv]]).
# In the dialog, write a name for this menu entry and command to start a video streaming capable player (e.g. {{ic|/usr/bin/mpv}}).
# (Optional step) Add needed arguments to the player (e.g. you may want {{ic|--force-window --ytdl}} for ''mpv'')
## Optionally, add needed arguments to the player (e.g. you may want {{ic|--force-window --ytdl}} for [[mpv]]).
# Right click on links or visit pages containing videos. Select newly created entry from Open With's menu and if the site is supported, the player will open as expected.
# Right click on links or visit pages containing videos. Select newly created entry from Open With's menu and if the site is supported, the player will open as expected.


Line 138: Line 135:


==== Hardware video acceleration ====
==== Hardware video acceleration ====
[[Hardware video acceleration]] via VA-API is available under [[Wayland]] [https://mastransky.wordpress.com/2020/06/03/firefox-on-fedora-finally-gets-va-api-on-wayland/] and [[Xorg]] [https://bugzilla.mozilla.org/show_bug.cgi?id=1619523] [https://www.phoronix.com/scan.php?page=news_item&px=Firefox-80-VA-API-X11].
To enable VA-API in Firefox:


[[Hardware video acceleration]] via VA-API is available under [[Wayland]] (see [https://mastransky.wordpress.com/2020/06/03/firefox-on-fedora-finally-gets-va-api-on-wayland/ Firefox gets VA-API on Wayland]) and X.org (see [https://bugzilla.mozilla.org/show_bug.cgi?id=1619523 bugzilla X11 implement VAAPI] and [https://www.phoronix.com/scan.php?page=news_item&px=Firefox-80-VA-API-X11 Phoronix news VA API X11]).
# Ensure that your video card is correctly configured for VA-API as described in [[Hardware video acceleration]].
# Ensure WebRender is enabled by navigating to {{ic|about:support}} and verifying the ''Compositing'' value is "WebRender". It is enabled by default in GNOME and other desktop environments [https://mastransky.wordpress.com/2021/01/10/firefox-were-finally-getting-hw-acceleration-on-linux/].
#* Ensure you are not running "Software WebRender" as that will not work as of August 2021 [https://bugzilla.mozilla.org/show_bug.cgi?id=1723540#c1].
#* If necessary, Hardware WebRender can be force enabled by setting {{ic|gfx.webrender.all}} to {{ic|true}} in {{ic|about:config}}.
# VA-API is enabled by default for [[Intel]] GPUs [https://bugzilla.mozilla.org/show_bug.cgi?id=1777430] if you are using Firefox 115 or a later version. For other GPUs, set {{ic|media.ffmpeg.vaapi.enabled}} to {{ic|true}} in {{ic|about:config}}.
# If using [[Wayland]], run Firefox with [[#Wayland|Wayland mode]] enabled.
# Optionally, to save power on multi-GPU systems (e.g. Ryzen 7000 series with IGP and GPU) and/or take advantage of more video codecs supported by a IGP/GPU: run Firefox with {{ic|MOZ_DRM_DEVICE}} environment variable set to the preferred rendering device. (Available devices can be listed with {{ic|stat /dev/dri/*}}).


{{Note|1=<nowiki></nowiki>
{{Note|1=<nowiki/>
* [[AMDGPU]] users under {{pkg|linux-hardened}} may need to rebuild ''linux-hardened'' with {{ic|1=CONFIG_CHECKPOINT_RESTORE=y}} due to {{pkg|mesa}} [https://gitweb.gentoo.org/repo/gentoo.git/tree/media-libs/mesa/mesa-9999.ebuild requiring the kcmp syscall].
* If hardware video acceleration is blocked with error code {{ic|FEATURE_HARDWARE_VIDEO_DECODING_DISABLE}} in {{ic|about:support}}, you can override it with {{ic|media.hardware-video-decoding.force-enabled{{=}}true}}. See [https://bbs.archlinux.org/viewtopic.php?id=281398] for more information. Alternatively, you can install {{AUR|firefox-vaapi}}.
* Hardware video acceleration on multi-GPU systems is affected by a [https://bugzilla.mozilla.org/show_bug.cgi?id=1622132 device selection bug].
* While NVIDIA's proprietary driver does not support VA-API, newer versions support DMA-BUF. Using {{Pkg|libva-nvidia-driver}} will allow for hardware video decoding on NVIDIA using [[CUDA]]. See the [https://github.com/elFarto/nvidia-vaapi-driver/#firefox GitHub project] for documentation on necessary environment variables and about:config changes.
* Since currently there is no DMA-BUF support for [[VDPAU]] nor {{Pkg|libva-vdpau-driver}}, this package will not enable hardware video acceleration in Firefox. In fact, as of Firefox 102, having this installed and {{ic|media.ffmpeg.vaapi.enabled}} set will make Firefox crash on startup.
* Currently, Firefox's VA-API implementation can decode H.264/AVC, VP8 & VP9, AV1 encoded video. AV1 support requires FireFox 98+ [https://bugzilla.mozilla.org/show_bug.cgi?id=1745225].
* Multi-GPU systems should automatically choose a suitable GPU for VA-API according to this [https://bugzilla.mozilla.org/show_bug.cgi?id=1588904#c36 solved issue].
* [[AMDGPU]] users under {{Pkg|linux-hardened}} may need to rebuild ''linux-hardened'' with {{ic|1=CONFIG_CHECKPOINT_RESTORE=y}} due to {{Pkg|mesa}} [https://gitweb.gentoo.org/repo/gentoo.git/tree/media-libs/mesa/mesa-9999.ebuild requiring the kcmp syscall]. This may no longer be necessary due to this [https://bugzilla.mozilla.org/show_bug.cgi?id=1624743 bug being solved].
* Wayland sometimes interferes with hardware video decoding. If video briefly flickers when you go fullscreen, you may need to set {{ic|1=widget.wayland.opaque-region.enabled=false}} in {{ic|about:config}}.
}}
}}


Before trying VA-API support in Firefox be sure to:
VA-API usage can be verified by checking Firefox's VA-API logs. Run Firefox with the {{ic|1=MOZ_LOG="FFmpegVideo:5"}} environment variable and check in the log output that VA-API is enabled and used (search for the "VA-API" string) when playing a video for example. Pay attention to these logs as they might indicate that only one of the two possible compositors described before (WebRender or OpenGL) works with VA-API on your particular setup.
 
* Install correct VA-API driver for your video card and verify VA-API has been enabled and working correctly, see [[Hardware video acceleration]];
** For Intel graphics, use the i965 driver {{Pkg|libva-intel-driver}} if your hardware supports it.
** The iHD driver {{Pkg|intel-media-driver}} (needed by Broadwell or newer) is currently broken due to sandbox violations caused by the driver ([https://bugzilla.mozilla.org/show_bug.cgi?id=1619585 see Bugzilla 1619585]). This can be worked around by setting the {{ic|security.sandbox.content.level}} flag to {{ic|0}}, at the risk of losing sandbox protection.
* Use a compositor that supports hardware acceleration, either:
** Gecko's OpenGL back-end, which can be enabled as explained in [[/Tweaks#Enable OpenGL compositor]];
** WebRender from the new Servo browser engine, which can be enabled as explained in [[/Tweaks#Enable WebRender compositor]];
* Set the following flags in {{ic|about:config}}:
** {{ic|media.ffmpeg.vaapi.enabled}} to {{ic|true}} in order to enable the use of VA-API with FFmpeg;
** {{ic|media.ffvpx.enabled}} to {{ic|false}} to disable the internal decoders for VP8/VP9.
** If your hardware doesn't support AV1, you can set {{ic|media.av1.enabled}} to {{ic|false}} to force sites like YouTube provide other formats.
* Run Firefox with the following [[environment variable]] enabled:
** In Wayland, with {{ic|1=MOZ_ENABLE_WAYLAND=1}}, see [[#Wayland]].
** In X.org, with {{ic|1=MOZ_X11_EGL=1}}.


{{Tip|
{{Tip|To allow hardware decoding in YouTube, the video codec used must be supported by the hardware. The profiles supported by your GPU can be checked with [[Hardware video acceleration#Verifying VA-API]] and the YouTube codecs used can ''sometimes'' (if offered by YouTube!) be controlled with the [https://addons.mozilla.org/firefox/addon/h264ify/ h264ify], [https://addons.mozilla.org/firefox/addon/enhanced-h264ify/ enhanced-h264ify], or [https://addons.mozilla.org/firefox/addon/refined-h264ify/ refined-h264ify] extensions.}}
* You can verify that VA-API is enabled by running Firefox with {{ic|1=MOZ_LOG="PlatformDecoderModule:5"}} environment variable and check in the log output that VA-API is enabled and used (search for the "VA-API" string) when playing a video for example. Pay attention to these logs as they might indicate that only one of the two possible compositors described before (OpenGL or WebRender) works with VA-API on your particular setup.
* For Intel GPU, the {{ic|intel_gpu_top}} utility from package {{pkg|intel-gpu-tools}} can be used to monitor the GPU activity during video playback for example.
* To allow hardware decoding in YouTube, the video codec used must be supported by the hardware. The profiles supported by your GPU can be checked with [[Hardware video acceleration#Verifying VA-API]] and the YouTube codecs used can be controlled with the [https://addons.mozilla.org/firefox/addon/h264ify/ h264ify] or [https://addons.mozilla.org/firefox/addon/enhanced-h264ify/ enhanced-h264ify] extensions. Alternatively, you can install {{AUR|firefox-h264ify}}.}}


=== Spell checking ===
=== Spell checking ===
Line 171: Line 165:
Firefox can use system-wide installed [[Hunspell]] dictionaries as well as dictionaries installed through its own extension system.
Firefox can use system-wide installed [[Hunspell]] dictionaries as well as dictionaries installed through its own extension system.


To enable spell checking for a specific language right click on any text field and check the ''Check Spelling'' box. To select a language for spell checking to you have right click again and select your language from the ''Languages'' sub-menu.
To enable spell checking for a specific language, right click on any text field and check the ''Check Spelling'' box. To select a language for spell checking, you have to right click again and select your language from the ''Languages'' sub-menu.


When your default language choice does not stick, see [[#Firefox does not remember default spell check language]].
If your default language choice does not stick, see [[#Firefox does not remember default spell check language]].


==== System-wide Hunspell dictionaries ====
==== System-wide Hunspell dictionaries ====
Line 181: Line 175:
==== Dictionaries as extensions ====
==== Dictionaries as extensions ====


To get more languages right click on any text field and just click ''Add Dictionaries...'' and select the dictionary you want to install from the [https://addons.mozilla.org/firefox/language-tools/ Dictionaries and Language Packs list].
To get more languages, right click on any text field, click ''Add Dictionaries...'' and select the dictionary you want to install from the [https://addons.mozilla.org/firefox/language-tools/ Dictionaries and Language Packs list].


{{Tip|For Russian, the extension is packaged as {{Pkg|firefox-spell-ru}}.}}
{{Tip|For Russian, the extension is packaged as {{Pkg|firefox-spell-ru}}.}}


=== KDE/GNOME integration ===
=== XDG Desktop Portal integration ===
 
Starting with version 64, Firefox can optionally use [[XDG Desktop Portal]]s to handle various desktop features, such as opening a file picker, or handling [[Default applications|MIME type]]s. Using Desktop Portals allows you to, for example, customize which program is invoked to display a dialog when you select files to upload on a webpage or when picking a download location using ''Save as...''. See [[XDG Desktop Portal#List of backends and interfaces]] for a list of available backend options.
 
Firefox has a number of independent settings for specifying whether each feature should be handled with a Desktop Portal request or whether to use the default GTK feature.
 
Each setting can have the following values:
* {{ic|0}} – Never
* {{ic|1}} – Always
* {{ic|2}} – Auto (typically depends on whether Firefox is run from within [[Flatpak]] or whether the {{ic|1=GDK_DEBUG=portals}} environment is set)
 
The settings are:
* {{ic|widget.use-xdg-desktop-portal.file-picker}} – Whether to use XDG portal for the file picker
* {{ic|widget.use-xdg-desktop-portal.mime-handler}} – Whether to use XDG portal for the mime handler
* {{ic|widget.use-xdg-desktop-portal.settings}} – Whether to try to use XDG portal for settings/look-and-feel information
* {{ic|widget.use-xdg-desktop-portal.location}} – Whether to use XDG portal for geolocation
* {{ic|widget.use-xdg-desktop-portal.open-uri}} – Whether to use XDG portal for opening to a file
 
=== KDE integration ===


* To bring the [[KDE]] look to GTK apps (including Firefox), install {{Pkg|breeze-gtk}} and {{Pkg|kde-gtk-config}}. Afterwards, go to ''System Settings > Application Style > Configure GNOME/GTK Application Style…''. Choose 'Breeze' or 'Breeze-Dark' in 'GTK2 Theme' and 'GTK3 Theme'.
* To bring the [[KDE]] look to GTK applications (including Firefox), install {{Pkg|breeze-gtk}} and {{Pkg|kde-gtk-config}}. Afterwards, go to System Settings and in ''Appearance > Application Style > Configure GNOME/GTK Application Style…'' choose 'Breeze'.
* To use the KDE file selection and print dialogs in Firefox 64 or newer, install {{Pkg|xdg-desktop-portal}} and {{Pkg|xdg-desktop-portal-kde}}, then add {{ic|1=GTK_USE_PORTAL=1}} to the [[Desktop entries#Modify environment variables|application startup command]].
* To use the KDE file picker in Firefox 64 or newer, install {{Pkg|xdg-desktop-portal}} and {{Pkg|xdg-desktop-portal-kde}}, then set {{ic|widget.use-xdg-desktop-portal.file-picker}} to {{ic|1}} in {{ic|about:config}}.  
* For integration with [[KDE]] MIME type system and file dialog, one can use {{AUR|firefox-kde-opensuse}} variant from AUR with OpenSUSE’s patches applied. Alternatively, integration with MIME types can be achieved by creating a symbolic link to the MIME database {{ic|~/.config/mimeapps.list}} from the deprecated {{ic|~/.local/share/applications/mimeapps.list}} that is used by Firefox. See [[XDG MIME Applications#mimeapps.list]].
* For integration with [[KDE]] MIME type system, proxy and file dialog, one can use {{AUR|firefox-kde-opensuse}} variant from AUR with OpenSUSE’s patches applied. Alternatively, integration with MIME types can be achieved by creating a symbolic link to the MIME database {{ic|~/.config/mimeapps.list}} from the deprecated {{ic|~/.local/share/applications/mimeapps.list}} that is used by Firefox. See [[XDG MIME Applications#mimeapps.list]].
* Extensions/add-ons may provide additional integration, such as:
* Extensions/add-ons may provide additional integration, such as:
** Browser integration in [[Plasma]]: requires {{Pkg|plasma-browser-integration}} and the [https://addons.mozilla.org/firefox/addon/plasma-integration/ Plasma Integration add-on].
** Browser integration in [[Plasma]]: requires {{Pkg|plasma-browser-integration}} and the [https://addons.mozilla.org/firefox/addon/plasma-integration/ Plasma Integration add-on].
** {{AUR|mozilla-extension-gnome-keyring-git}}{{Broken package link|package not found}} (all-JavaScript implementation) to integrate Firefox with [[GNOME Keyring]]. To make firefox-gnome-keyring use your login keychain, set {{ic|extensions.gnome-keyring.keyringName}} to {{ic|login}} in {{ic|about:config}}. Note the lowercase 'l' despite the the keychain name having an uppercase 'L' in Seahorse.
::{{Tip|To prevent duplicate entries in the Media Player widget or tray icon, set {{ic|media.hardwaremediakeys.enabled}} to {{ic|false}}. This disables the media entry from Firefox and only uses the one from the Plasma integration add-on.}}
 
=== GNOME integration ===
In order to use the GNOME file picker, you will need to install {{Pkg|xdg-desktop-portal-gnome}} and change {{ic|widget.use-xdg-desktop-portal.file-picker}} from {{ic|2}} to {{ic|1}} in {{ic|about:config}}.
 
=== Listen (text to speech) ===
 
Firefox can perform Text to Speech synthesis for web pages.
 
==== Setup ====
 
TTS must be setup for the ''Listen'' icon to appear in the Reader view.  Firefox uses [[Speech dispatcher]] which requires a speech synthesis engine. The currently recommended speech synthesis engine is [[Festival]].
 
==== Usage ====
 
See the [https://support.mozilla.org/en-US/kb/firefox-reader-view-clutter-free-web-pages illustrated steps] on Mozilla's website.
 
The ''Listen'' icon (a headphones icon) will only appear if you have performed all the configuration above, Speech Dispatcher is working, and you have started Firefox after you started the Festival server (you cannot start Firefox then Festival).
 
Furthermore, sometimes a Festival server process may linger after you have tried to kill it, but will terminate after you shut down Firefox.
 
For common issues, see [[#Web Speech API has no voices]] and [[#Narrate/Listen icon missing in Reader Mode]].
 
==== Using the festival-us voices ====
 
The voices in the package {{Pkg|festival-us}} provide better quality audio than those in {{Pkg|festival-english}} but they do not work in Firefox. They do not appear in the list of available voices in Firefox and when you open Reader view you will see error messages like this in the terminal output from the Festival server:
 
{{bc| SIOD: unknown voice cmu_us_awb_cg }}
 
To fix this you need to [[textedit|edit]] the following files:
 
* {{ic|/usr/share/festival/voices/us/cmu_us_awb_cg/festvox/cmu_us_awb_cg.scm}}
* {{ic|/usr/share/festival/voices/us/cmu_us_rms_cg/festvox/cmu_us_rms_cg.scm}}
* {{ic|/usr/share/festival/voices/us/cmu_us_slt_cg/festvox/cmu_us_slt_cg.scm}}
 
For each of these files you need to add some code to the second last line of code of each file, eg for {{ic|cmu_us_awb_cg.scm}} add code before this line:
{{bc|(provide 'cmu_us_awb_cg)}}
 
The code you need to add to {{ic|cmu_us_awb_cg.scm}} is below.  You will need to change the voice name, gender, dialect and description as appropriate for the other two files.
{{bc|
(proclaim_voice
'cmu_us_awb_cg
'((language english)
  (gender male)
  (dialect scottish)
  (description "This voice is Scottish")))
}}
 
{{Note|To avoid re-doing those changes every time {{Pkg|festival-us}} is upgraded, see [[pacman#Skip file from being upgraded]].}}


== Tips and tricks ==
== Tips and tricks ==


For general enhancements see [[Firefox/Tweaks]], for privacy related enhancements see [[Firefox/Privacy]].
For general enhancements, see [[Firefox/Tweaks]], and for privacy related enhancements, see [[Firefox/Privacy]].


=== Dark themes ===
=== Dark themes ===


If a dark [[GTK]] theme is in use (e.g. Arc Dark), it is recommended to start Firefox with a brighter one (e.g. Adwaita). See [[GTK#Themes]] and [[Firefox/Tweaks#Unreadable input fields with dark GTK themes]] for more information.
Firefox should respect your GTK theme settings and your OS-wide dark appearance settings (as in the Appearance section of GNOME's settings or KDE system settings). If the latter does not work, make sure to have a suitable {{Pkg|xdg-desktop-portal}} package installed.
 
Starting with Firefox 68, you can make all the Firefox interfaces and even other websites respect dark themes, irrespective of the system GTK theme and Firefox theme. To do this, set {{ic|ui.systemUsesDarkTheme}} to {{ic|1}} in {{ic|about:config}} [https://bugzilla.mozilla.org/show_bug.cgi?id=1488384#c23].


Alternatively, starting with Firefox 68 you can make the all Firefox interfaces and even other websites respect dark themes, irrespective of the system GTK theme and Firefox theme. To do this, set {{ic|browser.in-content.dark-mode}} to {{ic|true}} and {{ic|ui.systemUsesDarkTheme}} to {{ic|1}} in {{ic|about:config}} [https://bugzilla.mozilla.org/show_bug.cgi?id=1488384#c23].
As of Firefox 100, further control of the dark theme of web pages that opt-in (using the CSS media query [https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme prefers-color-scheme]) and Firefox's own in-content pages is possible with {{ic|layout.css.prefers-color-scheme.content-override}}. Setting this to {{ic|3}} will follow the browser theme, setting this to {{ic|2}} will follow the system wide dark-mode preference ({{ic|ui.systemUsesDarkTheme}} as above, which defaults to {{ic|0}} if the user has not changed the dark-mode preference or if a system does not support a system-wide dark-mode preference), while {{ic|1}} and {{ic|0}} will always force light-mode and dark-mode respectively. This setting can also be accessed through the user settings of Firefox under ''General'' > ''Language and Appearance'' > ''Website appearance''.


=== Frame rate ===
=== Frame rate ===
Line 214: Line 276:
=== New tabs position ===
=== New tabs position ===


To control where new tabs appears (relative or absolute), use {{ic|browser.tabs.insertAfterCurrent}} and {{ic|browser.tabs.insertRelatedAfterCurrent}}. See [https://support.mozilla.org/en/questions/1229062] for more informations.
To control where new tabs appears (relative or absolute), use {{ic|browser.tabs.insertAfterCurrent}} and {{ic|browser.tabs.insertRelatedAfterCurrent}}. See [https://support.mozilla.org/en/questions/1229062] for more information.


=== Screenshot of webpage ===
=== Screenshot of webpage ===


You can ''Take a Screenshot'' by either clicking the ''Page actions'' button (the three horizontal dots) in the address bar or by right-clicking on the webpage. See [https://support.mozilla.org/en-US/kb/firefox-screenshots] for more information.
You can ''Take a Screenshot'' by either using the screenshots button that can be added to the toolbar from the customize screen in the Hamburger menu at ''More tools'' > ''Customize toolbar'', by pressing {{ic|Ctrl+Shift+s}} or by right-clicking on the webpage. See [https://support.mozilla.org/en-US/kb/firefox-screenshots] for more information.


As an alternative you can use the screenshot button in the [https://developer.mozilla.org/en-US/docs/Tools/Taking_screenshots Developer Tools].
As an alternative, you can use the screenshot button in the developer tools, which can be added through the developer tools ''Settings'' menu, under the ''Available Toolbox Buttons'' section. The settings for the developer tools are accessible through the three horizontal dots located at the top right of the developer tools pane.


=== Wayland ===
=== Wayland ===


More recent versions of Firefox support opting into Wayland via an environment variable.
Starting with version 121, Firefox defaults to [[Wayland]] instead of XWayland and does not require any configuration. Older versions of Firefox support opting into [[Wayland]] mode via an [[environment variable]].


  $ MOZ_ENABLE_WAYLAND=1 firefox
  $ MOZ_ENABLE_WAYLAND=1 firefox


To make this permanent, see [[Environment variables#Graphical environment]] and start Firefox via the desktop launcher like you normally would. To verify it worked check the ''Window Protocol'' again.
To make this permanent, see [[Environment variables#Graphical environment]] and start Firefox via the desktop launcher like you normally would.
 
To verify that it worked, look for ''Window Protocol'' in {{ic|about:support}}. It should say {{ic|wayland}}. The presence of {{ic|x11}} means you are running Firefox under [[Xorg]] display server, while {{ic|xwayland}} means your system is running Wayland but executing Firefox as legacy X11 application.
 
If it is necessary to be regularly switching between Wayland and X.org, it may be useful to add a conditional to your shell's login [[Command-line shell#Configuration files|startup script]], e.g. {{ic|~/.bash_profile}} for [[Bash]]:


You may enter {{ic|about:support}} in the URL bar to check the ''Window Protocol''. It should say ''wayland/drm'' instead of ''x11''.
{{bc|1=
if [ "$XDG_SESSION_TYPE" = "wayland" ]; then
    export MOZ_ENABLE_WAYLAND=1
fi
}}


=== Window manager rules ===
=== Window manager rules ===
Line 236: Line 306:
To apply different configurations to Firefox windows, change the WM_CLASS string by using Firefox's {{ic|--class}} option, to a custom one.
To apply different configurations to Firefox windows, change the WM_CLASS string by using Firefox's {{ic|--class}} option, to a custom one.


==== Profiles ====
=== Profiles ===


To start new Firefox instances, multiple profiles are required. To create a new profile:
To start new Firefox instances, multiple profiles are required. To create a new profile:
Line 245: Line 315:


  $ firefox [--new-instance] -P ''profile_name'' --class=''class_name''
  $ firefox [--new-instance] -P ''profile_name'' --class=''class_name''
[https://ffprofile.com/ Firefox Profilemaker] can be used to create a Firefox profile with the defaults you like.


=== Touchscreen gestures and pixel-perfect trackpad scrolling ===
=== Touchscreen gestures and pixel-perfect trackpad scrolling ===
Line 250: Line 322:
{{Merge|Firefox/Tweaks#Enable touchscreen gestures|Same solution.}}
{{Merge|Firefox/Tweaks#Enable touchscreen gestures|Same solution.}}


To enable touch gestures (like scrolling and pinch-to-zoom) and one-to-one trackpad scrolling (as can be witnessed with GTK3 applications like Nautilus), set the {{ic|1=MOZ_USE_XINPUT2=1}} [[environment variable]] before starting Firefox.
To enable touch gestures (like scrolling and pinch-to-zoom) and one-to-one trackpad scrolling (as can be witnessed with GTK3 applications like Nautilus), set the {{ic|1=MOZ_USE_XINPUT2=1}} [[environment variable]] before starting Firefox. On Wayland, only {{ic|1=MOZ_ENABLE_WAYLAND=1}} needs to be set.
 
Kinetic scrolling feels loose on Wayland due to https://bugzilla.mozilla.org/show_bug.cgi?id=1568722, and can be turned off by going to {{ic|about:config}} and turning off {{ic|apz.gtk.kinetic_scroll.enabled}}. This will make it harder to scroll to the beginning and end of long pages, however.


=== Multiple home pages ===
=== Multiple home pages ===


To have multiple tabs opened when starting Firefox open a new window and then open the sites you want to have as "home tabs".
To have multiple tabs opened when starting Firefox, open a new window and then open the sites you want to have as "home tabs".


Now go to ''Preferences > Home'' and under ''Homepage and new windows'' click the ''Use Current Pages'' button.
Now go to ''Settings > Home'' and under ''Homepage and new windows'' click the ''Use Current Pages'' button.


Alternatively go directly to ''Preferences > Home'' and now under ''Homepage and new windows'' set the first field to ''Custom URLs..'' and enter the pages you want as new home pages in the following format:
Alternatively, go directly to ''Settings > Home'' and now under ''Homepage and new windows'' set the first field to ''Custom URLs..'' and enter the pages you want as new home pages in the following format:


  <nowiki>https://url1.com|https://url2.com|https://url3.com</nowiki>
  <nowiki>https://url1.com|https://url2.com|https://url3.com</nowiki>
=== View two pages side by side in the PDF viewer ===
To display two pages at once with the integrated PDF viewer, set {{ic|pdfjs.spreadModeOnLoad}} to {{ic|1}} in in {{ic|about:config}}.
=== Kiosk mode ===
Firefox supports kiosk mode that shows pages in full screen without browser chrome, context menus, and other features useful for typical desktop browsing. These can be seen on ATMs or information panels where users are not expected to interact with the rest of the system.
To use kiosk mode, start Firefox with:
$ firefox --kiosk ''url''
The startup page can be configured the settings or supplied as a command-line parameter.
If you need printing, you can prevent Firefox from showing paper size configuration dialogs with:
$ firefox --kiosk --kiosk-printing ''url''
=== Compact mode ===
Starting with Firefox version 89, the compact mode density option was removed from the Customize panel [https://support.mozilla.org/en-US/kb/compact-mode-workaround-firefox], but you can still use compact density. To do this, set {{ic|browser.uidensity}} to {{ic|1}} in {{ic|about:config}}.
The UI can be scaled down even further, see [[Firefox/Tweaks#Configure the DPI value]] but use values between 0 and 1 instead.
=== GNOME search provider ===
Firefox includes a search provider for GNOME Shell which exposes Firefox bookmarks and history to GNOME Shell search while Firefox is running. However, this provider is disabled by default; to enable it go to {{ic|about:config}} and set {{ic|browser.gnome-search-provider.enabled}} to {{ic|true}}.
=== Custom date and time format in Library window ===
The date and time format used in the ''Library'' window (the window showing bookmarks, history and downloads, accessible via {{ic|Ctrl+Shift+o}} and {{ic|Ctrl+Shift+h}}) can be customized by setting {{ic|intl.date_time.pattern_override.date_short}}, {{ic|intl.date_time.pattern_override.time_short}}, and {{ic|intl.date_time.pattern_override.connector_short}} in {{ic|user.js}} or {{ic|about:config}}.  For example, to get a format similar to [[RFC:3339]] ("2022-12-31 22:49"), set the three preferences to {{ic|yyyy-MM-dd}}, {{ic|HH:mm}}, and {{ic|{1} {0} }}, respectively.
Setting the {{ic|LC_TIME}} environment variable to {{ic|en_DK.UTF-8}} only worked in old Firefox versions (perhaps 57 and earlier).  Mozilla's [https://bugzilla.mozilla.org/show_bug.cgi?id=1426907 bug report 1426907] contains further information.
=== Disable the Ctrl+q keybinding for shutting down Firefox ===
Create and set the option {{ic|browser.quitShortcut.disabled}} to {{ic|true}} in {{ic|about:config}}.


== Troubleshooting ==
== Troubleshooting ==
=== Troubleshoot Mode ===
The command line switch {{ic|-safe-mode}} starts Firefox in [https://support.mozilla.org/en-US/kb/diagnose-firefox-issues-using-troubleshoot-mode Troubleshoot Mode], which disables extensions, themes, hardware acceleration, the JIT and some other features for this session.
This mode can also be enabled by pressing on the hamburger menu while Firefox is open, clicking ''Help'', selecting ''Troubleshoot Mode'' and confirming this on the modal dialog that appears. Please note this will require a browser restart.
This mode was previously named Safe Mode until Firefox 88.
=== Firefox refresh ===
Some issues experienced by users in Firefox may be caused by profile issues, such as corruption.
If you have ruled out other causes, it may be worth trying a new Firefox profile for testing purposes to see if this will resolve your issue. More information on how to create a new profile and switch between profiles can be found on the [https://support.mozilla.org/en-US/kb/profile-manager-create-remove-switch-firefox-profiles Firefox support page].
If this resolves your issue, you should switch back to your original profile and consider refreshing your Firefox.
Refreshing your profile will retain all browsing and download history, bookmarks, web form auto-fill data, cookies, personal dictionary and passwords, and will transfer them to a brand new profile without extensions, themes, extension data and preferences, among other data. A backup of your old profile will also be retained.
To refresh your profile, navigate to {{ic|about:support}}, press ''Refresh Firefox'' and confirm this on the modal dialog that appears. {{ic|about:support}} can also be accessed by pressing the Hamburger menu, selecting ''Help'' and then clicking ''More troubleshooting information''.
More information on refreshing your Firefox, including further details about what is transferred to the new profile, can be found on the [https://support.mozilla.org/en-US/kb/refresh-firefox-reset-add-ons-and-settings Firefox support page].
=== Hardware video acceleration issues ===
If you are having issues with hardware video acceleration in Firefox, e.g. in case of freezes or graphical corruption, start Firefox in [[#Troubleshoot Mode|Troubleshoot Mode]] for testing purposes to confirm that this is the issue. If this step resolves the issue, merely set {{ic|media.ffmpeg.vaapi.enabled}} to {{ic|false}} in {{ic|about:config}} to disable hardware video acceleration, and restart Firefox.


=== Extension X does not work on some Mozilla owned domains ===
=== Extension X does not work on some Mozilla owned domains ===


By default extensions will not affect pages designated by {{ic|extensions.webextensions.restrictedDomains}}. If this is not desired, this field can be cleared (special pages such as {{ic|about:*}} will not be affected).
By default, extensions will not affect pages designated by {{ic|extensions.webextensions.restrictedDomains}}. If this is not desired, this field can be cleared (special pages such as {{ic|about:*}} will not be affected). Then create and set {{ic|privacy.resistFingerprinting.block_mozAddonManager}} to true.


=== Firefox startup takes very long ===
=== Firefox startup takes very long ===


If Firefox takes much longer to start up than other browsers, it may be due to lacking configuration of the localhost in {{ic|/etc/hosts}}. See [[Network configuration#Local network hostname resolution]] on how to set it up.  
If Firefox takes much longer to start up than other browsers, it may be due to lacking configuration of the localhost in {{ic|/etc/hosts}}. See [[Network configuration#Local network hostname resolution]] on how to set it up.
 
Misbehaving Firefox extensions, or too many extensions, may be another source of slow startup. This can be confirmed through the use of [[#Troubleshoot Mode|Troubleshoot Mode]], which will disable extensions on restart.
 
A further cause of slow start-up may be a profile issue, such as corruption. For more troubleshooting steps around your Firefox profile, see [[#Firefox refresh]].


=== Font troubleshooting ===
=== Font troubleshooting ===
Line 276: Line 418:
See [[Font configuration]].
See [[Font configuration]].


Firefox has a setting which determines how many replacements it will allow from fontconfig. To allow it to use all your replacement-rules, change {{ic|gfx.font_rendering.fontconfig.max_generic_substitutions}} to {{ic|127}} (the highest possible value).
Firefox has a setting which determines how many replacements it will allow from Fontconfig. To allow it to use all your replacement rules, change {{ic|gfx.font_rendering.fontconfig.max_generic_substitutions}} to {{ic|127}} (the highest possible value).
 
Firefox ships with ''Twemoji Mozilla'' font. To use system emoji font set {{ic|font.name-list.emoji}} to {{ic|emoji}} in {{ic|about:config}}.


Firefox has problems with [[Emoji]] presentation [https://bugzilla.mozilla.org/show_bug.cgi?id=1509988]. Set {{ic|gfx.font_rendering.fontconfig.max_generic_substitutions}} to {{ic|0}} as workaround.
Firefox ships with the ''Twemoji Mozilla'' font. To use the system emoji font, set {{ic|font.name-list.emoji}} to {{ic|emoji}} in {{ic|about:config}}. Additionally, to prevent the Mozilla font interfering with your system emoji font, change {{ic|gfx.font_rendering.opentype_svg.enabled}} to {{ic|false}} or remove {{ic|/usr/lib/firefox/fonts/TwemojiMozilla.ttf}} (see also [[pacman#Skip files from being installed to system]]).


=== Setting an email client ===
=== Setting an email client ===


Inside the browser, {{ic|mailto}} links by default are opened by a web application such as Gmail or Yahoo Mail. To set an external email program, go to ''Preferences > Applications'' and modify the ''action'' corresponding to the {{ic|mailto}} content type; the file path will need to be designated (e.g. {{ic|/usr/bin/kmail}} for Kmail).
Inside the browser, {{ic|mailto}} links by default are opened by a web application such as Gmail or Yahoo Mail. To set an external email program, go to ''Settings > General > Applications'' and modify the ''action'' corresponding to the {{ic|mailto}} content type; the file path will need to be designated (e.g. {{ic|/usr/bin/kmail}} for Kmail).


Outside the browser, {{ic|mailto}} links are handled by the {{ic|x-scheme-handler/mailto}} mime type, which can be easily configured with [[xdg-mime]]. See [[Default applications]] for details and alternatives.
Outside the browser, {{ic|mailto}} links are handled by the {{ic|x-scheme-handler/mailto}} mime type, which can be easily configured with [[xdg-mime]]. See [[Default applications]] for details and alternatives.
Line 296: Line 436:
Firefox uses {{ic|~/Desktop}} as the default place for download and upload files. To change it to another folder, set the {{ic|XDG_DESKTOP_DIR}} option as explained in [[XDG user directories]].
Firefox uses {{ic|~/Desktop}} as the default place for download and upload files. To change it to another folder, set the {{ic|XDG_DESKTOP_DIR}} option as explained in [[XDG user directories]].


=== Make plugins respect blocked pop-ups ===
=== My downloads directory is full of files I do not remember saving ===
 
In Firefox version 98, the behavior of opening files in external programs was silently changed. Instead of downloading them into {{ic|/tmp}} and giving that file location to the child process, Firefox now downloads the file as if you had chosen to ''save it'', and then gives the child process the location of the file in your downloads directory. As a result, your downloads will be littered with files you only ever intended to open for viewing. This happens both when you select a program to use to open the file in a dialog and for file types you have configured to automatically open in a specific program. Notably this also happens for some file types that are opened internally in Firefox (such as PDF documents if the in-browser '''pdfJS''' viewer is enabled).
 
Due to an oversight, the dialog prompting you for what to do with the file still describes the old choices (either open ''or'' save) while it is in reality always going to save the file. Since this behavior could realistically pose a security and privacy risk to certain users who expect the files to not be saved to disk, you might want to disable the new behavior.


Some plugins can misbehave and bypass the default settings, such as the Flash plugin. You can prevent this by doing the following:
To do this, create and set {{ic|browser.download.start_downloads_in_tmp_dir}} to {{ic|true}} in {{ic|about:config}}.


# Type {{ic|about:config}} into the address bar.
{{Note|While the name of the option sounds as though it would only cache files in {{ic|/tmp}} while downloading them and then move them elsewhere, Mozilla has [https://www.mozilla.org/en-US/firefox/102.0a1/releasenotes/ confirmed] that this actually does restore the old behavior:
# Right-click on the page and select ''New > Integer''.
: There is now an enterprise policy ({{ic|StartDownloadsInTempDirectory}}) and an {{ic|about:config}} pref ({{ic|browser.download.start_downloads_in_tmp_dir}}) that will once again cause Firefox to initially put downloads in (a subfolder of) the OS temp folder, instead of the download folder configured in Firefox. Files opened from the "what should Firefox do with this file" dialog, or set to open in helper applications automatically, will stay in this folder. Files saved (not opened as previously mentioned) will still end up in the Firefox download folder.}}
# Name it {{ic|privacy.popups.disable_from_plugins}}.
# Set the value to {{ic|2}}.


The possible values are:
==== Additional settings to consider ====


* {{ic|'''0'''}}: Allow all popups from plugins.
* {{ic|browser.download.forbid_open_with}}: {{ic|true}} (only ask whether to save or cancel in the file saving dialog, never ask to open with another program)
* {{ic|'''1'''}}: Allow popups, but limit them to {{ic|dom.popup_maximum}}.
* {{ic|browser.download.always_ask_before_handling_new_types}}: {{ic|true}} (same as ''Preferences > General > Files and Applications > What should Firefox do with other files? > Ask whether to open or save files'').
* {{ic|'''2'''}}: Block popups from plugins.
* Set all known file types in ''Preferences > General > Files and Applications'' to ''Always ask'', with the possible exception of the ones set to be opened by Firefox itself.
* {{ic|'''3'''}}: Block popups from plugins, even on whitelisted sites.


=== Changes to userChrome.css and userContent.css are ignored ===
=== Changes to userChrome.css and userContent.css are ignored ===
Line 318: Line 459:
=== Middle-click behavior ===
=== Middle-click behavior ===


To use the middle mouse button to paste whatever text has been highlighted/added to the clipboard, as is common in UNIX-like operating systems, set either {{ic|middlemouse.contentLoadURL}} or {{ic|middlemouse.paste}} to {{ic|true}} in {{ic|about:config}}. Having {{ic|middlemouse.contentLoadURL}} enabled was the default behaviour prior to Firefox 57.
To disable pasting from the clipboard ([[Clipboard#Selections|PRIMARY selection]]) when the middle mouse button is clicked, set {{ic|middlemouse.paste}} to {{ic|false}} in {{ic|about:config}}.
 
To load the contents of the clipboard as a URL when the middle mouse button is clicked, {{ic|middlemouse.contentLoadURL}} to {{ic|true}} in {{ic|about:config}}. This was the default behaviour prior to Firefox 57.


To scroll on middle-click (default for Windows browsers) set {{ic|general.autoScroll}} to {{ic|true}}.
To [[autoscroll]] on middle-click (default for Windows browsers), set {{ic|general.autoScroll}} to {{ic|true}}.


=== Backspace does not work as the 'Back' button ===
=== Backspace does not work as the 'Back' button ===
Line 328: Line 471:
To make {{ic|Backspace}} go back one page in the tab's history and {{ic|Shift+Backspace}} go forward, set {{ic|browser.backspace_action}} to {{ic|0}} in {{ic|about:config}}.
To make {{ic|Backspace}} go back one page in the tab's history and {{ic|Shift+Backspace}} go forward, set {{ic|browser.backspace_action}} to {{ic|0}} in {{ic|about:config}}.


To have the {{ic|Backspace}} key scroll up one page and {{ic|Shift+Backspace}} scroll down one page, set {{ic|browser.backspace_action}} to {{ic|1}}. Setting this property to any other value will leave the key unmapped (Arch Linux defaults to {{ic|2}}, in other words, it is unmapped by default).
To have the {{ic|Backspace}} key scroll up one page and {{ic|Shift+Backspace}} scroll down one page, set {{ic|browser.backspace_action}} to {{ic|1}}. Setting this property to any other value will leave the key unmapped (Arch Linux defaults to {{ic|2}}; in other words, it is unmapped by default).


=== Firefox does not remember login information ===
=== Firefox does not remember login information ===
Line 342: Line 485:
Restart Firefox and see if it solved the problem.
Restart Firefox and see if it solved the problem.


If it didn't work, check if there exists a {{ic|cookies.sqlite.bak}} file that you could use to manually restore the cookies.
If it did not work, check if there exists a {{ic|cookies.sqlite.bak}} file that you could use to manually restore the cookies.


=== Cannot enter/leave fullscreen ===
=== Cannot enter/leave fullscreen ===


If Firefox detects an [https://specifications.freedesktop.org/wm-spec/wm-spec-latest.html EWMH/ICCCM] compliant window manager, it will try to send a WM_STATE message to the root window to request Firefox be made to enter (or leave) full-screen mode (as defined by the window manager). Window managers are allowed to ignore it, but if they do, Firefox will assume the request got denied and propagate it to the end user which results in nothing happening. This may result in not being able to full screen a video. A general workaround is to set the {{ic|full-screen-api.ignore-widgets}} to {{ic|true}} in {{ic|about:config}}.
If Firefox detects an [https://specifications.freedesktop.org/wm-spec/wm-spec-latest.html EWMH/ICCCM] compliant window manager, it will try to send a WM_STATE message to the root window to request Firefox be made to enter (or leave) full-screen mode (as defined by the window manager). Window managers are allowed to ignore it, but if they do, Firefox will assume the request got denied and propagate it to the end user which results in nothing happening. This may result in not being able to full screen a video. A general workaround is to set the {{ic|full-screen-api.ignore-widgets}} to {{ic|true}} in {{ic|about:config}}.


Related bug reports: [https://bugzilla.mozilla.org/show_bug.cgi?id=1189622 Bugzilla 1189622].
Related bug reports: [https://bugzilla.mozilla.org/show_bug.cgi?id=1189622 Bugzilla 1189622].


=== Firefox detects the wrong version of my plugin ===
=== Scrollbar is not hidden/disabled when YouTube is fullscreen ===
 
{{Accuracy|This is not supposed to happen. Adding a uBlock Origin filter is a hacky workaround something that sounds like a bug (or perhaps another extension meddling with things).}}


When you close Firefox, the latter saves the current timestamp and version of your plugins inside {{ic|pluginreg.dat}} located in your profile folder, typically in {{ic|~/.mozilla/firefox/''xxxxxxxx''.default/}}.
This can be fixed using a [https://ublockorigin.com/ uBlock Origin] filter. To add a filter, click the uBlock Origin extension icon > Three cogwheels (''Open the dashboard'') > ''My Filters''. Then, add the following to the text field:


If you upgraded your plugin when Firefox was still running, you will thus have the wrong information inside that file. The next time you will restart Firefox you will get that message {{ic|Firefox has prevented the outdated plugin "XXXX" from running on ...}} when you will be trying to open content dedicated to that plugin on the web. This problem often appears with the official [[Browser plugins#Adobe Flash Player|Adobe Flash Player plugin]] which has been upgraded while Firefox was still running.
www.youtube.com##ytd-app:style(overflow: hidden !important;)


The solution is to remove the file {{ic|pluginreg.dat}} from your profile and that is it. Firefox will not complain about the missing file as it will be recreated the next time Firefox will be closed. [https://bugzilla.mozilla.org/show_bug.cgi?id=1109795#c16]
After applying the changes and reloading the YouTube window, the filter will take effect. Note that you have to have cosmetic filtering enabled for this to work (the middle icon with the eye).


=== JavaScript context menu does not appear on some sites ===
=== JavaScript context menu does not appear on some sites ===
Line 375: Line 520:


Related bug reports: [https://bugzilla.mozilla.org/show_bug.cgi?id=776028 Bugzilla 776028], [https://bugs.launchpad.net/ubuntu/+source/firefox/+bug/1026869 Ubuntu bug 1026869]
Related bug reports: [https://bugzilla.mozilla.org/show_bug.cgi?id=776028 Bugzilla 776028], [https://bugs.launchpad.net/ubuntu/+source/firefox/+bug/1026869 Ubuntu bug 1026869]
=== Firefox does not find system-wide Hunspell spell checking dictionaries ===
Ensure that the setting {{ic|spellchecker.dictionary_path}} exists and is set to the path of the system's Hunspell dictionaries: {{ic|/usr/share/hunspell}}.


=== Some MathML symbols are missing ===
=== Some MathML symbols are missing ===
Line 380: Line 529:
You need some Math fonts, namely Latin Modern Math and STIX (see this MDN page: [https://developer.mozilla.org/en-US/docs/Mozilla/MathML_Project/Fonts#Linux]), to display MathML correctly.
You need some Math fonts, namely Latin Modern Math and STIX (see this MDN page: [https://developer.mozilla.org/en-US/docs/Mozilla/MathML_Project/Fonts#Linux]), to display MathML correctly.


In Arch Linux, these fonts are provided by {{Pkg|texlive-core}} '''and''' {{Pkg|texlive-fontsextra}}, but they are not available to fontconfig by default. See [[TeX Live#Making fonts available to Fontconfig]] for details. You can also try other [[Fonts#Math|Math fonts]].
In Arch Linux, these fonts are provided by {{Pkg|texlive-fontsextra}}, but they are not available to fontconfig by default. See [[TeX Live#Making fonts available to Fontconfig]] for details. You can also try other [[Fonts#Math|Math fonts]]. In case you encounter this bug [https://bugzilla.mozilla.org/show_bug.cgi?id=1208776], installing {{Pkg|otf-latinmodern-math}} can help.


=== Tearing video in fullscreen mode ===
=== Videos load but do not play ===


If you are using the Xorg Intel or Nouveau drivers and experience tearing video in fullscreen mode, try [[Firefox/Tweaks#Enable OpenGL compositor]].
This may be a PulseAudio issue. See the suggested fix in [[PulseAudio/Troubleshooting#Browsers load videos but do no play]].


=== Tearing when scrolling ===
=== Tearing when scrolling ===


Try disabling smooth scrolling in ''Preferences > Browsing''.
Try disabling smooth scrolling in ''Settings > General >Browsing''. Note that the pages will scroll jerkily.


=== Firefox WebRTC module cannot detect a microphone ===
=== Firefox WebRTC module cannot detect a microphone ===
Line 401: Line 550:
You can try setting {{ic|media.navigator.audio.full_duplex}} property to {{ic|false}} at {{ic|about:config}} Firefox page and restart Firefox.
You can try setting {{ic|media.navigator.audio.full_duplex}} property to {{ic|false}} at {{ic|about:config}} Firefox page and restart Firefox.


This can also help if you are using the PulseAudio [[PulseAudio/Troubleshooting#Enable Echo/Noise-Cancellation|module-echo-cancel]] and Firefox does not recognise the virtual echo canceling source.
This can also help if you are using the PulseAudio [[PulseAudio#Microphone echo/noise cancellation|module-echo-cancel]] and Firefox does not recognise the virtual echo canceling source.
 
=== WebRTC sharing indicator displays an XML parsing error ===
 
After agreeing to share a microphone or web camera, you may then see a window with a tan background and a red border in the top left corner on your primary window, displaying the following error message:
 
XML Parsing Error: no root element found
Location: chrome://browser/content/webrtcLegacyIndicator.xhtml
Line Number: 1, Column 1:
^
 
If this is the case for you, performing the following steps should resolve the issue:
 
# Navigate to {{ic|about:support}}.
# Click on the ''Clear Startup Cache'' button and agree to restart the browser.
 
See [https://bugzilla.mozilla.org/show_bug.cgi?id=1639821 Mozilla's bug report] for more information.


=== Cannot login with my Chinese account ===
=== Cannot login with my Chinese account ===
Line 409: Line 574:
=== No audio on certain videos when using JACK and PulseAudio ===
=== No audio on certain videos when using JACK and PulseAudio ===


If you are using JACK in combination with PulseAudio and cannot hear any sound on some videos it could be because those videos have mono audio. This happens if your JACK setup uses more than just stereo, but you use normal headphones. To fix this you simply have to connect the {{ic|front-center}} port from the PulseAudio JACK Sink to both {{ic|playback_1}} and {{ic|playback_2}} ports of the system output.
If you are using JACK in combination with PulseAudio and cannot hear any sound on some videos, it could be because those videos have mono audio. This happens if your JACK setup uses more than just stereo, but you use normal headphones. To fix this, you simply have to connect the {{ic|front-center}} port from the PulseAudio JACK Sink to both {{ic|playback_1}} and {{ic|playback_2}} ports of the system output.


You can also do this automatically using a script:
You can also do this automatically using a script:
Line 419: Line 584:
}}
}}


Keep in mind that the names for the sink and the ports might be different for you. You can check what your JACK setup looks like with a Patchbay like Catia from {{Pkg|cadence}}.
Keep in mind that the names for the sink and the ports might be different for you. You can check what your JACK setup looks like with a Patchbay like Catia from {{AUR|cadence}}.


=== Geolocation does not work ===
=== Geolocation does not work ===


Recently, Google limited the usage its location service for Arch Linux, which causes the following error when geolocation is enabled on a website: {{ic|Geolocation error: Unknown error acquiring position}}. Region-locked services such as [https://www.hulu.com/ Hulu] may display a similar error indicating that your location could not be determined even though you've allowed location services for the site.
Recently, Google limited the use of its location service with Arch Linux, which causes the following error when geolocation is enabled on a website: {{ic|Geolocation error: Unknown error acquiring position}}. Region-locked services such as [https://www.hulu.com/ Hulu] may display a similar error indicating that your location could not be determined even though you have allowed location services for the site.


To avoid these problems, you can switch to use the [https://location.services.mozilla.com/ Mozilla Location Service]. In {{ic|about:config}} change the {{ic|geo.provider.network.url}} setting to:
To avoid these problems, you can switch to use the [https://location.services.mozilla.com/ Mozilla Location Service]. In {{ic|about:config}} change the {{ic|geo.provider.network.url}} setting to:
Line 438: Line 603:


See [https://www.reddit.com/r/i3wm/comments/88k0yt/right_mouse_btn_instantly_clicks_first_option_in/]
See [https://www.reddit.com/r/i3wm/comments/88k0yt/right_mouse_btn_instantly_clicks_first_option_in/]
=== Firefox window does not repaint after disabling or enabling compositing ===
Unset the environment variable {{ic|MOZ_X11_EGL}}.
Related bug report: [https://bugzilla.mozilla.org/show_bug.cgi?id=1711039 Bugzilla 1711039].
=== Firefox continuously asks to be set as default browser upon launch ===
There are a couple things you can try: if you are using a [[desktop environment]], check if Firefox is set as the default browser in your system settings. If it is not, then set it, otherwise you can run the following {{man|1|xdg-settings}} command, provided by the [[xdg-utils]] package, to query which browser is set as default on your system:
$ xdg-settings get default-web-browser
If no value is returned or it is not Firefox, then run this command to set it:
$ xdg-settings set default-web-browser firefox.desktop
If Firefox still asks to be set as the default browser, then it may be quieted if it is set to handle ''http'' and ''https'' URL schemes. To do so, run these {{man|1|xdg-mime}} commands:
$ xdg-mime default firefox.desktop x-scheme-handler/http
$ xdg-mime default firefox.desktop x-scheme-handler/https
If those do not work either, check if you have set the environment variable {{ic|GTK_USE_PORTAL}} (all values trigger the bug), in which case, unset it. Related bug report: [https://bugzilla.mozilla.org/show_bug.cgi?id=1516290 Bugzilla 1516290]. If that does not work or you did not set it, navigate Firefox to {{ic|about:config}}, check if the variable {{ic|widget.use-xdg-desktop-portal}} is set to {{ic|true}} and, if so, set it to {{ic|false}}.
If you wish to disable default browser check entirely, navigate Firefox to {{ic|about:config}} and set {{ic|browser.shell.checkDefaultBrowser}} to {{ic|false}}.
=== Video stuttering ===
If you experience video stuttering and you notice that Firefox is only hitting one core at 100% when watching videos (especially higher resolution videos), this might help you.
Go into {{ic|about:config}} and search for {{ic|dom.ipc.processCount}} and change {{ic|dom.ipc.processCount.file}} from 1 to a higher number. An ad hoc method to find a good number is to increase it one at a time until you get good results, but 4 seems to be a good value.
=== Bengali font broken in some pages ===
In most cases, installing the {{Pkg|noto-fonts}} and making '''Noto Sans Bengali''' as defaults in '''Fonts and Colors''' settings solves it. However, in some social media sites, Bengali fonts may still be broken. In those cases, Mozilla provides a detailed guide on how to see all the fonts gets loaded in a page. By using [https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/How_to/Open_the_Inspector Page Inspector], find out [https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/How_to/Edit_fonts#all_fonts_on_page all the fonts] that are being loaded on that particular page. Removing fonts other than '''Noto Sans''' from the system will resolve the issue permanently.
There will be some fonts that have been installed as dependency of other package. For example, {{Pkg|chromium}} installs {{Pkg|ttf-liberation}} as dependency, which loads itself in some Firefox pages automatically and breaks Bengali fonts on those pages. To solve this issue, use the following rule in your [[font configuration]]:
{{hc|$XDG_CONFIG_HOME/fontconfig/fonts.conf|2=
<match target="pattern">
<test qual="any" name="family"><string>Liberation</string></test>
<edit mode="assign" name="family" binding="same"><string>Noto Sans Bengali</string></edit>
</match>
}}
=== Web Speech API has no voices ===
Firefox uses for text to speech (tts) speechd. You can use the command {{ic|spd-say "some test sentence"}} to test if it reads the text or {{ic|spd-say -L}} to get a list of the voices. If there are no voices, too, you can install some with the package {{Pkg|espeak-ng}}. If they do not work out of the box, you maybe have to configure them. You can use the {{ic|spd-conf}} command or edit the config file {{ic|.config/speech-dispatcher/speechd.conf}}. There should be the following lines active (without # in front of it):
AddModule "espeak-ng"                "sd_espeak-ng" "espeak-ng.conf"
DefaultModule espeak-ng
=== Narrate/Listen icon missing in Reader Mode ===
==== Enable Speech Synthesis ====
Per https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API/Using_the_Web_Speech_API, speech synthesis must be enabled (it is enabled by default). To enable, set {{ic|media.webspeech.synth.enabled}} to {{ic|true}} in {{ic|about:config}}.
==== Disable Fingerprinting Protection ====
Per https://support.mozilla.org/en-US/kb/firefox-protection-against-fingerprinting,
Fingerprinting Protection disables the WebSpeech API. If you enabled this option, you will need to disable it for the narrator to work. To disable fingerprinting protection, set {{ic|privacy.resistFingerprinting}} to {{ic|false}} in {{ic|about:config}}.
==== Disable filter voices ====
If you do not see the narrator icon, try setting {{ic|narrate.filter-voices}} to {{ic|false}} in {{ic|about:config}}.
This can be used to check whether {{ic|speech-dispatcher}} works at all. If it helps, you may miss voices for the language of the article opened in reader mode (check {{ic|spd-say -L}}). If you have voices for the reader article language installed, there may be some incorrect settings or defaults related to {{ic|speech-dispatcher}} configuration.
=== File dialogs do not open when downloading files ===
If no file chooser is shown when downloading files, even with the option "Always ask where to save files" enabled in Firefox's preferences, then you might not have both {{Pkg|xdg-desktop-portal}} and a suitable implementation. Desktop environments usually provide an implementation, but if you are using a standalone window manager such as [[i3]], then you may need to manually install one. [[Install]] {{Pkg|xdg-desktop-portal}} and for example {{Pkg|xdg-desktop-portal-gtk}}.


== See also ==
== See also ==

Latest revision as of 07:34, 23 March 2024

Firefox is a popular open source graphical web browser from Mozilla.

Note: For older versions, there may be no "Settings" but "Preferences" in their menus. You can replace "Settings" in the article with "Preferences" if need.

Installing

Firefox can be installed with the firefox package.

Other alternatives include:

  • Firefox Developer Edition — for developers
https://www.mozilla.org/firefox/developer/ || firefox-developer-edition
  • Firefox Extended Support Release — long-term supported version
https://www.mozilla.org/firefox/organizations/ || firefox-esrAUR
  • Firefox Beta — cutting-edge version
https://www.mozilla.org/firefox/channel/desktop/#beta || firefox-beta-binAUR
https://www.mozilla.org/firefox/channel/desktop/#nightly || firefox-nightlyAUR
  • Firefox KDE — Version of Firefox that incorporates an OpenSUSE patch for better KDE integration than is possible through simple Firefox add-ons.
https://build.opensuse.org/package/show/mozilla:Factory/MozillaFirefox || firefox-kde-opensuseAUR

A number of language packs are available for Firefox, other than the standard English. Language packs are usually named as firefox-i18n-languagecode (where languagecode can be any language code, such as de, ja, fr, etc.). For a list of available language packs, see firefox-i18n for firefox, firefox-developer-edition-i18n for firefox-developer-edition and firefox-nightly- for firefox-nightlyAUR.

Note: Language packs are disabled on -nightly and -developer-edition due to frequent string changes that may cause crashes. To force a change to the UI language, you may need to set intl.locale.requested in about:config [1].

Add-ons

Firefox is well known for its large library of add-ons which can be used to add new features or modify the behavior of existing features. Firefox's "Add-ons Manager" is used to manage installed add-ons or find new ones.

For instructions on how to install add-ons and a list of add-ons, see Browser extensions.

Adding search engines

Search engines may be added to Firefox by creating bookmarks:

  • Press the star on the address bar or Ctrl+d.
  • Right click on the bookmark you have created, then press Edit Bookmark...
  • Complete the URL field with search URLs. Complete the place of the query with %s. Complete the Keyword field with user-defined characters. Like this:
URL:
https://duckduckgo.com/html/?q=%s
Keyword:
d
Note: Older versions use "Location" instead of "URL".

Searches are performed by pre-pending the search term with the keyword of the specified search engine: d archwiki will query DuckDuckGo using the search term archwiki

Search engines may also be added to Firefox through add-on extensions; see this page for a list of available search tools and engines.

A very extensive list of search engines can be found at the Mycroft Project.

firefox-extension-arch-search

Install the firefox-extension-arch-searchAUR package to add Arch-specific searches (AUR, wiki, forum, packages, etc) to the Firefox search toolbar.

Plugins

Support for all plugins, including Flash Player, was removed in Firefox 85.[2][3]

Configuration

Firefox exposes a number of configuration options. To examine them, enter in the Firefox address bar:

about:config

Once set, these affect the user's current profile, and may be synchronized across all devices via Firefox Sync. Please note that only a subset of the about:config entries are synchronized by this method, and the exact subset may be found by searching for services.sync.prefs in about:config. Additional preferences and third party preferences may be synchronized by creating new boolean entries prepending the value with services.sync.prefs.sync. To synchronize the whitelist for the extension NoScript:

services.sync.prefs.sync.capability.policy.maonoscript.sites

The boolean noscript.sync.enabled must be set to true to synchronize the remainder of NoScript's preferences via Firefox Sync.

Settings storage

Firefox stores the configuration for a profile via a prefs.js in the profile folder, usually ~/.mozilla/firefox/xxxxxxxx.default/.

Firefox also allows configuration for a profile via a user.js file: user.js kept also in the profile folder. A user.js configuration supersedes a prefs.js. The user.js configuration is only parsed at start-up of a profile. Hence, you can test changes via about:config and modify user.js at runtime accordingly. For a useful starting point, see e.g custom user.js which is targeted at privacy/security conscious users.

One drawback of the above approach is that it is not applied system-wide. Furthermore, this is not useful as a "pre-configuration", since the profile directory is created after first launch of the browser. You can, however, let firefox create a new profile and, after closing it again, copy the contents of an already created profile folder into it.

Sometimes, it may be desired to lock certain settings, a feature useful in widespread deployments of customized Firefox. In order to create a system-wide configuration, follow the steps outlined in Customizing Firefox Using AutoConfig:

1. Create /usr/lib/firefox/defaults/pref/autoconfig.js:

pref("general.config.filename", "firefox.cfg");
pref("general.config.obscure_value", 0);

2. Create /usr/lib/firefox/firefox.cfg (this stores the actual configuration):

//
//...your settings...
// e.g to disable Pocket, uncomment the following lines
// lockPref("extensions.pocket.enabled", false);
// lockPref("browser.newtabpage.activity-stream.feeds.section.topstories", false);

Please note that the first line must contain exactly //. The syntax of the file is similar to that of user.js.

Multimedia playback

Firefox uses FFmpeg for playing multimedia inside HTML5 <audio> and <video> elements. Use https://cconcolato.github.io/media-mime-support/ to test video or https://hpr.dogphilosophy.net/test/[dead link 2024-03-03 ⓘ] to test audio, to determine which formats are actually supported.

Firefox uses PulseAudio for audio playback and capture. If PulseAudio is not installed, Firefox uses ALSA instead. Note that by default, Firefox blocks all media with sound from playing automatically [4].

Tip: Firefox might not play video if audio is not configured. If you are intending to use PipeWire and WirePlumber, make sure they are working properly and have the necessary pipewire-pulse compatibility layer.

HTML5 DRM/Widevine

Widevine is a digital rights management tool that Netflix, Amazon Prime Video, and others use to protect their video content. It can be enabled in Settings > General > Digital Rights Management (DRM) Content. If you visit a Widevine-enabled page when this setting is disabled, Firefox will display a prompt below the address bar asking for permission to install DRM. Approve this and then wait for the "Downloading" bar to disappear; now, you are able to watch videos from Widevine protected sites.

Firefox can only play 720p video (or lower) with Widevine, due to not using hardware DRM playback. It is also required that the private mode browsing is disabled, for the window and in the Settings.

"Open With" extension

  1. Install Open With add-on.
  2. Go to Add-ons > Open With > Preferences.
  3. Proceed with instructions to install a file in your system and test the installation.
  4. Click Add browser.
  5. In the dialog, write a name for this menu entry and command to start a video streaming capable player (e.g. /usr/bin/mpv).
    1. Optionally, add needed arguments to the player (e.g. you may want --force-window --ytdl for mpv).
  6. Right click on links or visit pages containing videos. Select newly created entry from Open With's menu and if the site is supported, the player will open as expected.

The same procedure can be used to associate video downloaders such as youtube-dl.

Hardware video acceleration

Hardware video acceleration via VA-API is available under Wayland [5] and Xorg [6] [7].

To enable VA-API in Firefox:

  1. Ensure that your video card is correctly configured for VA-API as described in Hardware video acceleration.
  2. Ensure WebRender is enabled by navigating to about:support and verifying the Compositing value is "WebRender". It is enabled by default in GNOME and other desktop environments [8].
    • Ensure you are not running "Software WebRender" as that will not work as of August 2021 [9].
    • If necessary, Hardware WebRender can be force enabled by setting gfx.webrender.all to true in about:config.
  3. VA-API is enabled by default for Intel GPUs [10] if you are using Firefox 115 or a later version. For other GPUs, set media.ffmpeg.vaapi.enabled to true in about:config.
  4. If using Wayland, run Firefox with Wayland mode enabled.
  5. Optionally, to save power on multi-GPU systems (e.g. Ryzen 7000 series with IGP and GPU) and/or take advantage of more video codecs supported by a IGP/GPU: run Firefox with MOZ_DRM_DEVICE environment variable set to the preferred rendering device. (Available devices can be listed with stat /dev/dri/*).
Note:
  • If hardware video acceleration is blocked with error code FEATURE_HARDWARE_VIDEO_DECODING_DISABLE in about:support, you can override it with media.hardware-video-decoding.force-enabled=true. See [11] for more information. Alternatively, you can install firefox-vaapiAUR.
  • While NVIDIA's proprietary driver does not support VA-API, newer versions support DMA-BUF. Using libva-nvidia-driver will allow for hardware video decoding on NVIDIA using CUDA. See the GitHub project for documentation on necessary environment variables and about:config changes.
  • Since currently there is no DMA-BUF support for VDPAU nor libva-vdpau-driver, this package will not enable hardware video acceleration in Firefox. In fact, as of Firefox 102, having this installed and media.ffmpeg.vaapi.enabled set will make Firefox crash on startup.
  • Currently, Firefox's VA-API implementation can decode H.264/AVC, VP8 & VP9, AV1 encoded video. AV1 support requires FireFox 98+ [12].
  • Multi-GPU systems should automatically choose a suitable GPU for VA-API according to this solved issue.
  • AMDGPU users under linux-hardened may need to rebuild linux-hardened with CONFIG_CHECKPOINT_RESTORE=y due to mesa requiring the kcmp syscall. This may no longer be necessary due to this bug being solved.
  • Wayland sometimes interferes with hardware video decoding. If video briefly flickers when you go fullscreen, you may need to set widget.wayland.opaque-region.enabled=false in about:config.

VA-API usage can be verified by checking Firefox's VA-API logs. Run Firefox with the MOZ_LOG="FFmpegVideo:5" environment variable and check in the log output that VA-API is enabled and used (search for the "VA-API" string) when playing a video for example. Pay attention to these logs as they might indicate that only one of the two possible compositors described before (WebRender or OpenGL) works with VA-API on your particular setup.

Tip: To allow hardware decoding in YouTube, the video codec used must be supported by the hardware. The profiles supported by your GPU can be checked with Hardware video acceleration#Verifying VA-API and the YouTube codecs used can sometimes (if offered by YouTube!) be controlled with the h264ify, enhanced-h264ify, or refined-h264ify extensions.

Spell checking

Firefox can use system-wide installed Hunspell dictionaries as well as dictionaries installed through its own extension system.

To enable spell checking for a specific language, right click on any text field and check the Check Spelling box. To select a language for spell checking, you have to right click again and select your language from the Languages sub-menu.

If your default language choice does not stick, see #Firefox does not remember default spell check language.

System-wide Hunspell dictionaries

Install Hunspell and its dictionaries for the languages you require.

Dictionaries as extensions

To get more languages, right click on any text field, click Add Dictionaries... and select the dictionary you want to install from the Dictionaries and Language Packs list.

Tip: For Russian, the extension is packaged as firefox-spell-ru.

XDG Desktop Portal integration

Starting with version 64, Firefox can optionally use XDG Desktop Portals to handle various desktop features, such as opening a file picker, or handling MIME types. Using Desktop Portals allows you to, for example, customize which program is invoked to display a dialog when you select files to upload on a webpage or when picking a download location using Save as.... See XDG Desktop Portal#List of backends and interfaces for a list of available backend options.

Firefox has a number of independent settings for specifying whether each feature should be handled with a Desktop Portal request or whether to use the default GTK feature.

Each setting can have the following values:

  • 0 – Never
  • 1 – Always
  • 2 – Auto (typically depends on whether Firefox is run from within Flatpak or whether the GDK_DEBUG=portals environment is set)

The settings are:

  • widget.use-xdg-desktop-portal.file-picker – Whether to use XDG portal for the file picker
  • widget.use-xdg-desktop-portal.mime-handler – Whether to use XDG portal for the mime handler
  • widget.use-xdg-desktop-portal.settings – Whether to try to use XDG portal for settings/look-and-feel information
  • widget.use-xdg-desktop-portal.location – Whether to use XDG portal for geolocation
  • widget.use-xdg-desktop-portal.open-uri – Whether to use XDG portal for opening to a file

KDE integration

  • To bring the KDE look to GTK applications (including Firefox), install breeze-gtk and kde-gtk-config. Afterwards, go to System Settings and in Appearance > Application Style > Configure GNOME/GTK Application Style… choose 'Breeze'.
  • To use the KDE file picker in Firefox 64 or newer, install xdg-desktop-portal and xdg-desktop-portal-kde, then set widget.use-xdg-desktop-portal.file-picker to 1 in about:config.
  • For integration with KDE MIME type system, proxy and file dialog, one can use firefox-kde-opensuseAUR variant from AUR with OpenSUSE’s patches applied. Alternatively, integration with MIME types can be achieved by creating a symbolic link to the MIME database ~/.config/mimeapps.list from the deprecated ~/.local/share/applications/mimeapps.list that is used by Firefox. See XDG MIME Applications#mimeapps.list.
  • Extensions/add-ons may provide additional integration, such as:
Tip: To prevent duplicate entries in the Media Player widget or tray icon, set media.hardwaremediakeys.enabled to false. This disables the media entry from Firefox and only uses the one from the Plasma integration add-on.

GNOME integration

In order to use the GNOME file picker, you will need to install xdg-desktop-portal-gnome and change widget.use-xdg-desktop-portal.file-picker from 2 to 1 in about:config.

Listen (text to speech)

Firefox can perform Text to Speech synthesis for web pages.

Setup

TTS must be setup for the Listen icon to appear in the Reader view. Firefox uses Speech dispatcher which requires a speech synthesis engine. The currently recommended speech synthesis engine is Festival.

Usage

See the illustrated steps on Mozilla's website.

The Listen icon (a headphones icon) will only appear if you have performed all the configuration above, Speech Dispatcher is working, and you have started Firefox after you started the Festival server (you cannot start Firefox then Festival).

Furthermore, sometimes a Festival server process may linger after you have tried to kill it, but will terminate after you shut down Firefox.

For common issues, see #Web Speech API has no voices and #Narrate/Listen icon missing in Reader Mode.

Using the festival-us voices

The voices in the package festival-us provide better quality audio than those in festival-english but they do not work in Firefox. They do not appear in the list of available voices in Firefox and when you open Reader view you will see error messages like this in the terminal output from the Festival server:

 SIOD: unknown voice cmu_us_awb_cg 

To fix this you need to edit the following files:

  • /usr/share/festival/voices/us/cmu_us_awb_cg/festvox/cmu_us_awb_cg.scm
  • /usr/share/festival/voices/us/cmu_us_rms_cg/festvox/cmu_us_rms_cg.scm
  • /usr/share/festival/voices/us/cmu_us_slt_cg/festvox/cmu_us_slt_cg.scm

For each of these files you need to add some code to the second last line of code of each file, eg for cmu_us_awb_cg.scm add code before this line:

(provide 'cmu_us_awb_cg)

The code you need to add to cmu_us_awb_cg.scm is below. You will need to change the voice name, gender, dialect and description as appropriate for the other two files.

(proclaim_voice
 'cmu_us_awb_cg
 '((language english)
   (gender male)
   (dialect scottish)
   (description "This voice is Scottish")))
Note: To avoid re-doing those changes every time festival-us is upgraded, see pacman#Skip file from being upgraded.

Tips and tricks

For general enhancements, see Firefox/Tweaks, and for privacy related enhancements, see Firefox/Privacy.

Dark themes

Firefox should respect your GTK theme settings and your OS-wide dark appearance settings (as in the Appearance section of GNOME's settings or KDE system settings). If the latter does not work, make sure to have a suitable xdg-desktop-portal package installed.

Starting with Firefox 68, you can make all the Firefox interfaces and even other websites respect dark themes, irrespective of the system GTK theme and Firefox theme. To do this, set ui.systemUsesDarkTheme to 1 in about:config [13].

As of Firefox 100, further control of the dark theme of web pages that opt-in (using the CSS media query prefers-color-scheme) and Firefox's own in-content pages is possible with layout.css.prefers-color-scheme.content-override. Setting this to 3 will follow the browser theme, setting this to 2 will follow the system wide dark-mode preference (ui.systemUsesDarkTheme as above, which defaults to 0 if the user has not changed the dark-mode preference or if a system does not support a system-wide dark-mode preference), while 1 and 0 will always force light-mode and dark-mode respectively. This setting can also be accessed through the user settings of Firefox under General > Language and Appearance > Website appearance.

Frame rate

If Firefox is unable to automatically detect the right value, it will default to 60 fps. To manually correct this, set layout.frame_rate to the refresh rate of your monitor (e.g. 144 for 144 Hz).

Memory limit

To prevent pages from abusing memory (and possible OOM), we can use Firejail with the rlimit-as option.

New tabs position

To control where new tabs appears (relative or absolute), use browser.tabs.insertAfterCurrent and browser.tabs.insertRelatedAfterCurrent. See [14] for more information.

Screenshot of webpage

You can Take a Screenshot by either using the screenshots button that can be added to the toolbar from the customize screen in the Hamburger menu at More tools > Customize toolbar, by pressing Ctrl+Shift+s or by right-clicking on the webpage. See [15] for more information.

As an alternative, you can use the screenshot button in the developer tools, which can be added through the developer tools Settings menu, under the Available Toolbox Buttons section. The settings for the developer tools are accessible through the three horizontal dots located at the top right of the developer tools pane.

Wayland

Starting with version 121, Firefox defaults to Wayland instead of XWayland and does not require any configuration. Older versions of Firefox support opting into Wayland mode via an environment variable.

$ MOZ_ENABLE_WAYLAND=1 firefox

To make this permanent, see Environment variables#Graphical environment and start Firefox via the desktop launcher like you normally would.

To verify that it worked, look for Window Protocol in about:support. It should say wayland. The presence of x11 means you are running Firefox under Xorg display server, while xwayland means your system is running Wayland but executing Firefox as legacy X11 application.

If it is necessary to be regularly switching between Wayland and X.org, it may be useful to add a conditional to your shell's login startup script, e.g. ~/.bash_profile for Bash:

if [ "$XDG_SESSION_TYPE" = "wayland" ]; then
    export MOZ_ENABLE_WAYLAND=1
fi

Window manager rules

To apply different configurations to Firefox windows, change the WM_CLASS string by using Firefox's --class option, to a custom one.

Profiles

To start new Firefox instances, multiple profiles are required. To create a new profile:

$ firefox [--new-instance] -P

Class can be specified when launching Firefox with a not-in-use profile:

$ firefox [--new-instance] -P profile_name --class=class_name

Firefox Profilemaker can be used to create a Firefox profile with the defaults you like.

Touchscreen gestures and pixel-perfect trackpad scrolling

This article or section is a candidate for merging with Firefox/Tweaks#Enable touchscreen gestures.

Notes: Same solution. (Discuss in Talk:Firefox)

To enable touch gestures (like scrolling and pinch-to-zoom) and one-to-one trackpad scrolling (as can be witnessed with GTK3 applications like Nautilus), set the MOZ_USE_XINPUT2=1 environment variable before starting Firefox. On Wayland, only MOZ_ENABLE_WAYLAND=1 needs to be set.

Kinetic scrolling feels loose on Wayland due to https://bugzilla.mozilla.org/show_bug.cgi?id=1568722, and can be turned off by going to about:config and turning off apz.gtk.kinetic_scroll.enabled. This will make it harder to scroll to the beginning and end of long pages, however.

Multiple home pages

To have multiple tabs opened when starting Firefox, open a new window and then open the sites you want to have as "home tabs".

Now go to Settings > Home and under Homepage and new windows click the Use Current Pages button.

Alternatively, go directly to Settings > Home and now under Homepage and new windows set the first field to Custom URLs.. and enter the pages you want as new home pages in the following format:

https://url1.com|https://url2.com|https://url3.com

View two pages side by side in the PDF viewer

To display two pages at once with the integrated PDF viewer, set pdfjs.spreadModeOnLoad to 1 in in about:config.

Kiosk mode

Firefox supports kiosk mode that shows pages in full screen without browser chrome, context menus, and other features useful for typical desktop browsing. These can be seen on ATMs or information panels where users are not expected to interact with the rest of the system.

To use kiosk mode, start Firefox with:

$ firefox --kiosk url

The startup page can be configured the settings or supplied as a command-line parameter.

If you need printing, you can prevent Firefox from showing paper size configuration dialogs with:

$ firefox --kiosk --kiosk-printing url

Compact mode

Starting with Firefox version 89, the compact mode density option was removed from the Customize panel [16], but you can still use compact density. To do this, set browser.uidensity to 1 in about:config.

The UI can be scaled down even further, see Firefox/Tweaks#Configure the DPI value but use values between 0 and 1 instead.

GNOME search provider

Firefox includes a search provider for GNOME Shell which exposes Firefox bookmarks and history to GNOME Shell search while Firefox is running. However, this provider is disabled by default; to enable it go to about:config and set browser.gnome-search-provider.enabled to true.

Custom date and time format in Library window

The date and time format used in the Library window (the window showing bookmarks, history and downloads, accessible via Ctrl+Shift+o and Ctrl+Shift+h) can be customized by setting intl.date_time.pattern_override.date_short, intl.date_time.pattern_override.time_short, and intl.date_time.pattern_override.connector_short in user.js or about:config. For example, to get a format similar to RFC:3339 ("2022-12-31 22:49"), set the three preferences to yyyy-MM-dd, HH:mm, and {1} {0} , respectively.

Setting the LC_TIME environment variable to en_DK.UTF-8 only worked in old Firefox versions (perhaps 57 and earlier). Mozilla's bug report 1426907 contains further information.

Disable the Ctrl+q keybinding for shutting down Firefox

Create and set the option browser.quitShortcut.disabled to true in about:config.

Troubleshooting

Troubleshoot Mode

The command line switch -safe-mode starts Firefox in Troubleshoot Mode, which disables extensions, themes, hardware acceleration, the JIT and some other features for this session.

This mode can also be enabled by pressing on the hamburger menu while Firefox is open, clicking Help, selecting Troubleshoot Mode and confirming this on the modal dialog that appears. Please note this will require a browser restart.

This mode was previously named Safe Mode until Firefox 88.

Firefox refresh

Some issues experienced by users in Firefox may be caused by profile issues, such as corruption.

If you have ruled out other causes, it may be worth trying a new Firefox profile for testing purposes to see if this will resolve your issue. More information on how to create a new profile and switch between profiles can be found on the Firefox support page.

If this resolves your issue, you should switch back to your original profile and consider refreshing your Firefox.

Refreshing your profile will retain all browsing and download history, bookmarks, web form auto-fill data, cookies, personal dictionary and passwords, and will transfer them to a brand new profile without extensions, themes, extension data and preferences, among other data. A backup of your old profile will also be retained.

To refresh your profile, navigate to about:support, press Refresh Firefox and confirm this on the modal dialog that appears. about:support can also be accessed by pressing the Hamburger menu, selecting Help and then clicking More troubleshooting information.

More information on refreshing your Firefox, including further details about what is transferred to the new profile, can be found on the Firefox support page.

Hardware video acceleration issues

If you are having issues with hardware video acceleration in Firefox, e.g. in case of freezes or graphical corruption, start Firefox in Troubleshoot Mode for testing purposes to confirm that this is the issue. If this step resolves the issue, merely set media.ffmpeg.vaapi.enabled to false in about:config to disable hardware video acceleration, and restart Firefox.

Extension X does not work on some Mozilla owned domains

By default, extensions will not affect pages designated by extensions.webextensions.restrictedDomains. If this is not desired, this field can be cleared (special pages such as about:* will not be affected). Then create and set privacy.resistFingerprinting.block_mozAddonManager to true.

Firefox startup takes very long

If Firefox takes much longer to start up than other browsers, it may be due to lacking configuration of the localhost in /etc/hosts. See Network configuration#Local network hostname resolution on how to set it up.

Misbehaving Firefox extensions, or too many extensions, may be another source of slow startup. This can be confirmed through the use of Troubleshoot Mode, which will disable extensions on restart.

A further cause of slow start-up may be a profile issue, such as corruption. For more troubleshooting steps around your Firefox profile, see #Firefox refresh.

Font troubleshooting

See Font configuration.

Firefox has a setting which determines how many replacements it will allow from Fontconfig. To allow it to use all your replacement rules, change gfx.font_rendering.fontconfig.max_generic_substitutions to 127 (the highest possible value).

Firefox ships with the Twemoji Mozilla font. To use the system emoji font, set font.name-list.emoji to emoji in about:config. Additionally, to prevent the Mozilla font interfering with your system emoji font, change gfx.font_rendering.opentype_svg.enabled to false or remove /usr/lib/firefox/fonts/TwemojiMozilla.ttf (see also pacman#Skip files from being installed to system).

Setting an email client

Inside the browser, mailto links by default are opened by a web application such as Gmail or Yahoo Mail. To set an external email program, go to Settings > General > Applications and modify the action corresponding to the mailto content type; the file path will need to be designated (e.g. /usr/bin/kmail for Kmail).

Outside the browser, mailto links are handled by the x-scheme-handler/mailto mime type, which can be easily configured with xdg-mime. See Default applications for details and alternatives.

File association

See Default applications.

Firefox keeps creating ~/Desktop even when this is not desired

Firefox uses ~/Desktop as the default place for download and upload files. To change it to another folder, set the XDG_DESKTOP_DIR option as explained in XDG user directories.

My downloads directory is full of files I do not remember saving

In Firefox version 98, the behavior of opening files in external programs was silently changed. Instead of downloading them into /tmp and giving that file location to the child process, Firefox now downloads the file as if you had chosen to save it, and then gives the child process the location of the file in your downloads directory. As a result, your downloads will be littered with files you only ever intended to open for viewing. This happens both when you select a program to use to open the file in a dialog and for file types you have configured to automatically open in a specific program. Notably this also happens for some file types that are opened internally in Firefox (such as PDF documents if the in-browser pdfJS viewer is enabled).

Due to an oversight, the dialog prompting you for what to do with the file still describes the old choices (either open or save) while it is in reality always going to save the file. Since this behavior could realistically pose a security and privacy risk to certain users who expect the files to not be saved to disk, you might want to disable the new behavior.

To do this, create and set browser.download.start_downloads_in_tmp_dir to true in about:config.

Note: While the name of the option sounds as though it would only cache files in /tmp while downloading them and then move them elsewhere, Mozilla has confirmed that this actually does restore the old behavior:
There is now an enterprise policy (StartDownloadsInTempDirectory) and an about:config pref (browser.download.start_downloads_in_tmp_dir) that will once again cause Firefox to initially put downloads in (a subfolder of) the OS temp folder, instead of the download folder configured in Firefox. Files opened from the "what should Firefox do with this file" dialog, or set to open in helper applications automatically, will stay in this folder. Files saved (not opened as previously mentioned) will still end up in the Firefox download folder.

Additional settings to consider

  • browser.download.forbid_open_with: true (only ask whether to save or cancel in the file saving dialog, never ask to open with another program)
  • browser.download.always_ask_before_handling_new_types: true (same as Preferences > General > Files and Applications > What should Firefox do with other files? > Ask whether to open or save files).
  • Set all known file types in Preferences > General > Files and Applications to Always ask, with the possible exception of the ones set to be opened by Firefox itself.

Changes to userChrome.css and userContent.css are ignored

Set toolkit.legacyUserProfileCustomizations.stylesheets to true in about:config

Middle-click behavior

To disable pasting from the clipboard (PRIMARY selection) when the middle mouse button is clicked, set middlemouse.paste to false in about:config.

To load the contents of the clipboard as a URL when the middle mouse button is clicked, middlemouse.contentLoadURL to true in about:config. This was the default behaviour prior to Firefox 57.

To autoscroll on middle-click (default for Windows browsers), set general.autoScroll to true.

Backspace does not work as the 'Back' button

According to MozillaZine, the Backspace key was mapped based on which platform the browser was running on. As a compromise, this preference was created to allow the Backspace key to either go back/forward, scroll up/down a page, or do nothing.

To make Backspace go back one page in the tab's history and Shift+Backspace go forward, set browser.backspace_action to 0 in about:config.

To have the Backspace key scroll up one page and Shift+Backspace scroll down one page, set browser.backspace_action to 1. Setting this property to any other value will leave the key unmapped (Arch Linux defaults to 2; in other words, it is unmapped by default).

Firefox does not remember login information

It may be due to a corrupted cookies.sqlite file in Firefox's profile folder. In order to fix this, just rename or remove cookie.sqlite while Firefox is not running.

Open a terminal of choice and type the following:

$ rm -f ~/.mozilla/firefox/<profile id>.default/cookies.sqlite

The profile id is a random 8 character string.

Restart Firefox and see if it solved the problem.

If it did not work, check if there exists a cookies.sqlite.bak file that you could use to manually restore the cookies.

Cannot enter/leave fullscreen

If Firefox detects an EWMH/ICCCM compliant window manager, it will try to send a WM_STATE message to the root window to request Firefox be made to enter (or leave) full-screen mode (as defined by the window manager). Window managers are allowed to ignore it, but if they do, Firefox will assume the request got denied and propagate it to the end user which results in nothing happening. This may result in not being able to full screen a video. A general workaround is to set the full-screen-api.ignore-widgets to true in about:config.

Related bug reports: Bugzilla 1189622.

Scrollbar is not hidden/disabled when YouTube is fullscreen

The factual accuracy of this article or section is disputed.

Reason: This is not supposed to happen. Adding a uBlock Origin filter is a hacky workaround something that sounds like a bug (or perhaps another extension meddling with things). (Discuss in Talk:Firefox)

This can be fixed using a uBlock Origin filter. To add a filter, click the uBlock Origin extension icon > Three cogwheels (Open the dashboard) > My Filters. Then, add the following to the text field:

www.youtube.com##ytd-app:style(overflow: hidden !important;)

After applying the changes and reloading the YouTube window, the filter will take effect. Note that you have to have cosmetic filtering enabled for this to work (the middle icon with the eye).

JavaScript context menu does not appear on some sites

You can try setting dom.w3c_touch_events.enabled to 0 in about:config.

Firefox does not remember default spell check language

The default spell checking language can be set as follows:

  1. Type about:config in the address bar.
  2. Set spellchecker.dictionary to your language of choice, for instance en_GB.
  3. Notice that the for dictionaries installed as a Firefox plugin the notation is en-GB, and for hunspell dictionaries the notation is en_GB.

When you only have system wide dictionaries installed with hunspell, Firefox might not remember your default dictionary language settings. This can be fixed by having at least one dictionary installed as a Firefox plugin. Notice that now you will also have a tab Dictionaries in Add-ons. You may have to change the order of preferred language for displaying pages in about:preferences#general to make the spell check default to the language of the addon dictionary.

Related questions on the StackExchange platform: [17], [18], [19]

Related bug reports: Bugzilla 776028, Ubuntu bug 1026869

Firefox does not find system-wide Hunspell spell checking dictionaries

Ensure that the setting spellchecker.dictionary_path exists and is set to the path of the system's Hunspell dictionaries: /usr/share/hunspell.

Some MathML symbols are missing

You need some Math fonts, namely Latin Modern Math and STIX (see this MDN page: [20]), to display MathML correctly.

In Arch Linux, these fonts are provided by texlive-fontsextra, but they are not available to fontconfig by default. See TeX Live#Making fonts available to Fontconfig for details. You can also try other Math fonts. In case you encounter this bug [21], installing otf-latinmodern-math can help.

Videos load but do not play

This may be a PulseAudio issue. See the suggested fix in PulseAudio/Troubleshooting#Browsers load videos but do no play.

Tearing when scrolling

Try disabling smooth scrolling in Settings > General >Browsing. Note that the pages will scroll jerkily.

Firefox WebRTC module cannot detect a microphone

WebRTC applications for instance Firefox WebRTC getUserMedia test page say that microphone cannot be found. Issue is reproducible for both ALSA or PulseAudio setup. Firefox debug logs show the following error:

$ NSPR_LOG_MODULES=MediaManager:5,GetUserMedia:5 firefox
...
[Unnamed thread 0x7fd7c0654340]: D/GetUserMedia  VoEHardware:GetRecordingDeviceName: Failed 1

You can try setting media.navigator.audio.full_duplex property to false at about:config Firefox page and restart Firefox.

This can also help if you are using the PulseAudio module-echo-cancel and Firefox does not recognise the virtual echo canceling source.

WebRTC sharing indicator displays an XML parsing error

After agreeing to share a microphone or web camera, you may then see a window with a tan background and a red border in the top left corner on your primary window, displaying the following error message:

XML Parsing Error: no root element found
Location: chrome://browser/content/webrtcLegacyIndicator.xhtml
Line Number: 1, Column 1:
^

If this is the case for you, performing the following steps should resolve the issue:

  1. Navigate to about:support.
  2. Click on the Clear Startup Cache button and agree to restart the browser.

See Mozilla's bug report for more information.

Cannot login with my Chinese account

Firefox provides a local service for Chinese users, with a local account totally different from the international one. Firefox installed with the firefox package uses the international account system by default, to change into the Chinese local service, you should install the add-on manager on this page, then you can login with your Chinese account now.

No audio on certain videos when using JACK and PulseAudio

If you are using JACK in combination with PulseAudio and cannot hear any sound on some videos, it could be because those videos have mono audio. This happens if your JACK setup uses more than just stereo, but you use normal headphones. To fix this, you simply have to connect the front-center port from the PulseAudio JACK Sink to both playback_1 and playback_2 ports of the system output.

You can also do this automatically using a script:

jack-mono.sh
#!/bin/sh
jack_connect "PulseAudio JACK Sink:front-center" "system:playback_1"
jack_connect "PulseAudio JACK Sink:front-center" "system:playback_2"

Keep in mind that the names for the sink and the ports might be different for you. You can check what your JACK setup looks like with a Patchbay like Catia from cadenceAUR.

Geolocation does not work

Recently, Google limited the use of its location service with Arch Linux, which causes the following error when geolocation is enabled on a website: Geolocation error: Unknown error acquiring position. Region-locked services such as Hulu may display a similar error indicating that your location could not be determined even though you have allowed location services for the site.

To avoid these problems, you can switch to use the Mozilla Location Service. In about:config change the geo.provider.network.url setting to:

https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%

See FS#65241 for more details.

Right mouse button instantly clicks the first option in window managers

This problem has been observed in i3, bspwm and xmonad.

To fix it, navigate to about:config and change ui.context_menus.after_mouseup to true.

See [22]

Firefox window does not repaint after disabling or enabling compositing

Unset the environment variable MOZ_X11_EGL.

Related bug report: Bugzilla 1711039.

Firefox continuously asks to be set as default browser upon launch

There are a couple things you can try: if you are using a desktop environment, check if Firefox is set as the default browser in your system settings. If it is not, then set it, otherwise you can run the following xdg-settings(1) command, provided by the xdg-utils package, to query which browser is set as default on your system:

$ xdg-settings get default-web-browser

If no value is returned or it is not Firefox, then run this command to set it:

$ xdg-settings set default-web-browser firefox.desktop

If Firefox still asks to be set as the default browser, then it may be quieted if it is set to handle http and https URL schemes. To do so, run these xdg-mime(1) commands:

$ xdg-mime default firefox.desktop x-scheme-handler/http
$ xdg-mime default firefox.desktop x-scheme-handler/https

If those do not work either, check if you have set the environment variable GTK_USE_PORTAL (all values trigger the bug), in which case, unset it. Related bug report: Bugzilla 1516290. If that does not work or you did not set it, navigate Firefox to about:config, check if the variable widget.use-xdg-desktop-portal is set to true and, if so, set it to false.

If you wish to disable default browser check entirely, navigate Firefox to about:config and set browser.shell.checkDefaultBrowser to false.

Video stuttering

If you experience video stuttering and you notice that Firefox is only hitting one core at 100% when watching videos (especially higher resolution videos), this might help you.

Go into about:config and search for dom.ipc.processCount and change dom.ipc.processCount.file from 1 to a higher number. An ad hoc method to find a good number is to increase it one at a time until you get good results, but 4 seems to be a good value.

Bengali font broken in some pages

In most cases, installing the noto-fonts and making Noto Sans Bengali as defaults in Fonts and Colors settings solves it. However, in some social media sites, Bengali fonts may still be broken. In those cases, Mozilla provides a detailed guide on how to see all the fonts gets loaded in a page. By using Page Inspector, find out all the fonts that are being loaded on that particular page. Removing fonts other than Noto Sans from the system will resolve the issue permanently.

There will be some fonts that have been installed as dependency of other package. For example, chromium installs ttf-liberation as dependency, which loads itself in some Firefox pages automatically and breaks Bengali fonts on those pages. To solve this issue, use the following rule in your font configuration:

$XDG_CONFIG_HOME/fontconfig/fonts.conf
<match target="pattern">
 <test qual="any" name="family"><string>Liberation</string></test>
 <edit mode="assign" name="family" binding="same"><string>Noto Sans Bengali</string></edit>
</match>

Web Speech API has no voices

Firefox uses for text to speech (tts) speechd. You can use the command spd-say "some test sentence" to test if it reads the text or spd-say -L to get a list of the voices. If there are no voices, too, you can install some with the package espeak-ng. If they do not work out of the box, you maybe have to configure them. You can use the spd-conf command or edit the config file .config/speech-dispatcher/speechd.conf. There should be the following lines active (without # in front of it):

AddModule "espeak-ng"                "sd_espeak-ng" "espeak-ng.conf"
DefaultModule espeak-ng

Narrate/Listen icon missing in Reader Mode

Enable Speech Synthesis

Per https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API/Using_the_Web_Speech_API, speech synthesis must be enabled (it is enabled by default). To enable, set media.webspeech.synth.enabled to true in about:config.

Disable Fingerprinting Protection

Per https://support.mozilla.org/en-US/kb/firefox-protection-against-fingerprinting, Fingerprinting Protection disables the WebSpeech API. If you enabled this option, you will need to disable it for the narrator to work. To disable fingerprinting protection, set privacy.resistFingerprinting to false in about:config.

Disable filter voices

If you do not see the narrator icon, try setting narrate.filter-voices to false in about:config.

This can be used to check whether speech-dispatcher works at all. If it helps, you may miss voices for the language of the article opened in reader mode (check spd-say -L). If you have voices for the reader article language installed, there may be some incorrect settings or defaults related to speech-dispatcher configuration.

File dialogs do not open when downloading files

If no file chooser is shown when downloading files, even with the option "Always ask where to save files" enabled in Firefox's preferences, then you might not have both xdg-desktop-portal and a suitable implementation. Desktop environments usually provide an implementation, but if you are using a standalone window manager such as i3, then you may need to manually install one. Install xdg-desktop-portal and for example xdg-desktop-portal-gtk.

See also