跳转至内容

Firefox/Tweaks

来自 ArchWiki

本文档或部分内容建议合并至 Firefox#Tips and tricks

注意:也与Firefox#Configuration有重叠;关于某个特定主题应在此处还是主页面上,是任意决定的。"Tweaks"是与Firefox相关内容的基础,因此应直接放在主页面上。如果结果过长,可以将故障排除部分拆分为一个子页面。(在 Talk:Firefox/Tweaks 讨论)

本页包含高级Firefox配置选项和性能优化。

性能

提高Firefox性能的方法分为两种:一种是通过运行Firefox时输入的参数或开发者意图修改其配置,另一种是涉及外部程序或脚本的高级过程。

注意 列出的选项可能仅适用于最新版本的Firefox。

本节包含用于性能优化的Firefox高级选项。更多信息请参阅这些MozillaZine文章

更改性能设置

Firefox会根据计算机的硬件规格自动使用设置[1]

可以通过“首选项”进行这些设置的调整,或者在about:config中手动更改dom.ipc.processCount值为1-8以及browser.preferences.defaultPerformanceSettings.enabledfalse

然而,您可能希望手动调整此设置以进一步提高性能,或降低低端设备的内存使用。

在这种情况下,当前用户内容进程限制已增加到4

$ ps -e | grep 'Web Content'
13991 tty1     00:00:04 Web Content
14027 tty1     00:00:09 Web Content
14031 tty1     00:00:20 Web Content
14040 tty1     00:00:26 Web Content

WebRender

WebRender是一个高性能、GPU加速的2D渲染引擎,用Rust编写。它是驱动Firefox和Servo浏览器引擎项目的合成器。截至Firefox 93,它已默认启用,并且如果运行它的硬件支持至少OpenGL 3.0或OpenGL ES 3.0(截至2021-04)并且满足最低驱动要求,则默认使用硬件渲染。如果您的系统不满足这些要求,它将回退到使用软件WebRender的软件渲染。

您可以通过在about:config中将gfx.webrender.all偏好设置为true来为所有任务强制GPU加速的WebRender。

如果您在使用最新驱动程序时遇到渲染问题,可以通过将gfx.webrender.software偏好设置为true来强制启用软件WebRender。

警告 由于稳定性、渲染输出和性能的关键问题,WebRender硬件渲染在许多GPU和驱动程序上被禁用。如果它在您的硬件上被禁用,不建议强制启用硬件渲染。

关闭磁盘缓存

加载的每个对象(html页面、jpeg图像、css样式表、gif横幅)都将保存在Firefox缓存中以供将来使用,无需再次下载。据估计,只有一小部分对象会被重用,通常约为30%。这是因为对象过期时间很短、更新或仅仅是用户行为(加载新页面而不是返回已访问的页面)。Firefox缓存分为内存缓存和磁盘缓存,后者会导致频繁的磁盘写入:新加载的对象被写入内存,旧对象被移除。

一种替代方法是使用about:config设置

  • browser.cache.disk.enable设置为false
  • 验证browser.cache.memory.enable是否设置为true,有关此选项的更多信息可以在browser.cache.memory Mozilla文章中找到。
  • 添加条目browser.cache.memory.capacity并将其设置为您要分配的KB量,或设置为-1以实现自动缓存大小选择(跳过此步骤效果与设置为-1相同)。
    • “自动”大小选择基于一个十年前的表,该表仅包含内存低于或等于8GB的系统设置。以下公式非常接近地近似了这个表,并可用于更动态地设置Firefox缓存:41297 - (41606 / (1 + ((RAM / 1.16) ^ 0.75))),其中RAM以GB为单位,结果以KB为单位。

此方法存在一些缺点

  • 如果浏览器崩溃或重启后,当前浏览网页的内容将丢失;这可以通过使用anything-sync-daemon或任何类似的定期同步脚本来避免,以便缓存定期复制到驱动器上。
  • 设置需要为每个用户单独配置。

将磁盘缓存移至RAM

另一种方法是将“磁盘”缓存移至RAM磁盘,提供介于上述两种方法之间的解决方案。缓存将在Firefox运行之间得以保留(包括Firefox崩溃恢复),但在重启时将被丢弃(包括操作系统崩溃)。

为此,请转到about:config并将browser.cache.disk.parent_directory设置为/run/user/UID/firefox,其中UID是您的用户ID,可以通过运行id -u获得。

注意 目录将在浏览器重启后创建。另请参阅[2]

打开about:cache以验证新的磁盘缓存位置。

延长会话信息记录间隔

Firefox定期将当前会话状态(打开的URL、Cookie、历史记录和表单数据)保存到磁盘。它用于在崩溃时恢复之前的会话。默认设置是每15秒保存一次会话,导致频繁的磁盘访问。

例如,要将保存间隔增加到10分钟(600000毫秒),请在about:config中将browser.sessionstore.interval的设置更改为600000

要完全禁用此功能,请将browser.sessionstore.resume_from_crash设置为false

碎片整理配置文件中的SQLite数据库

警告 此过程可能会损坏数据库,导致会话无法正确保存。

Firefox将书签、历史记录、密码保存在SQLite数据库中。SQLite数据库会随着时间的推移而碎片化,并在周围出现空白。但是,由于没有管理进程来检查和优化数据库,这些因素最终会导致性能下降。一种改进启动速度和其他书签和历史记录相关任务的好方法是碎片整理和修剪这些数据库中的未使用空间。

您可以使用profile-cleaner来执行此操作,前提是Firefox运行。

profile-cleaner使用示例
SQLite数据库 之前大小 之后大小 % 变化
urlclassifier3.sqlite 37 M 30 M 19 %
places.sqlite 16 M 2.4 M 85 %

Firefox提供了一个工具来碎片整理和优化places数据库,该数据库是导致大多数性能下降和配置文件损坏的原因。要访问此工具,请打开about:support页面,搜索Places Database,然后点击Verify Integrity按钮。

通过tmpfs将整个配置文件缓存到RAM中

如果系统有空闲内存,可以使用tmpfs整个配置文件目录缓存起来,这可能会提高Firefox的响应速度。

强制启用硬件视频解码

虽然media.hardware-video-decoding.enabled默认启用,但可能需要通过将media.hardware-video-decoding.force-enabled设置为true来强制启用硬件视频解码。

自动卸载不活跃标签页

要仅卸载至少1小时不活跃的标签页,请在about:config中设置以下项:

  • browser.tabs.unloadOnLowMemory必须设置为true
  • browser.low_commit_space_threshold_percent设置为100
  • browser.tabs.min_inactive_duration_before_unload设置为3600000

外观

字体

另请参阅主文章:Font configuration

配置DPI值

如果系统DPI低于96,修改以下值可以帮助改善Firefox中字体的显示效果。Firefox默认使用96,并且仅在DPI值更高时才使用系统DPI。要强制使用系统DPI,无论其值如何,请在地址栏输入about:config,并将layout.css.dpi设置为0

请注意,上述方法仅影响Firefox用户界面的DPI设置。网页内容仍然使用96的DPI值,这可能看起来很丑,或者在高分辨率显示器上,可能显示得太小而无法阅读。解决方案是更改layout.css.devPixelsPerPx为系统DPI除以96。例如,如果您的系统DPI是144,那么要添加的值是144/96 = 1.5。将layout.css.devPixelsPerPx更改为1.5使网页内容使用144的DPI,看起来效果更好。

如果在Firefox 103之后的版本中,这会导致字体过大,请将browser.display.os-zoom-behavior更改为零。然后,在about:config搜索栏中输入ui.textScaleFactor,选择“数字”旁边的圆圈,点击加号按钮添加设置键,并将其值编辑为您的layout.css.devPixelsPerPx值的100倍。例如,如果该值设置为1.25,则ui.textScaleFactor应设置为125。

另请参阅HiDPI#Firefox了解HiDPI显示器信息,以及[3]用于计算DPI。

Microsoft Windows的默认字体设置

以下是Firefox在Microsoft Windows中安装时的默认字体首选项。许多网站使用Microsoft字体。

Proportional: Serif Size (pixels): 16
Serif: Times New Roman
Sans-serif: Arial
Monospace: Courier New Size (pixels): 13

通用用户界面CSS设置

可以通过编辑~/.mozilla/firefox/profile/chrome/中的userChrome.cssuserContent.css文件来修改Firefox的用户界面(profile_dir的格式为hash.name,其中hash是8个字符、看似随机的字符串,而配置文件name通常是default)。您可以通过在URL栏输入about:support,然后在“Application Basics”部分下查找Profile Directory字段来找出确切的名称,具体描述如Firefox文档所述。

  • chrome/文件夹以及userChrome.css/userContent.css文件可能不一定存在,因此可能需要创建它们。
  • toolkit.legacyUserProfileCustomizations.stylesheets必须在about:config中启用。

本节仅涉及修改Firefox用户界面的userChrome.css文件,而不涉及网页。

更改界面字体

该设置实际上会覆盖全局GTK字体首选项,并且不影响网页,仅影响用户界面本身。

~/.mozilla/firefox/profile/chrome/userChrome.css
* {
    font-family: "FONT_NAME";
}

隐藏按钮图标

启用纯文本按钮。

~/.mozilla/firefox/profile/chrome/userChrome.css
.button-box .button-icon {
    display: none;
}

隐藏各种标签页按钮

这些设置会隐藏出现在标签页栏水平边缘的箭头、切换“所有标签页”下拉列表的按钮以及创建新标签页的加号按钮。

~/.mozilla/firefox/profile/chrome/userChrome.css
/* Tab bar */

toolbarbutton#scrollbutton-up, toolbarbutton#scrollbutton-down {
    /* Hide tab scroll buttons */
    display: none;
}

.browser-toolbar > * #alltabs-button {
    /* Hide tab drop-down list */
    display: none;
}

.browser-toolbar > * #new-tab-button {
    /* Hide new-tab button */
    display: none;
}

垂直/树状标签页

要将标签页栏放置在侧边栏/树状视图中,请使用以下附加组件之一:

Firefox附加组件无法通过其扩展API隐藏原生标签页栏 - 要做到这一点,请按照您的附加组件的设置/高级说明进行操作。

隐藏标题栏和窗口边框

要用标签页栏替换标题栏,请在about:config中将browser.tabs.inTitlebar设置为1

或者转到“更多工具”,然后“自定义工具栏”,然后在左下角找到名为“Title Bar”的复选框。取消选中它。如果复选框丢失,请确保XDG_CURRENT_DESKTOP环境变量设置正确,并且/或者MOZ_GTK_TITLEBAR_DECORATION环境变量设置为“client”。

自动隐藏书签工具栏

~/.mozilla/firefox/profile/chrome/userChrome.css
#PersonalToolbar {
    visibility: collapse !important;
}

#navigator-toolbox:hover > #PersonalToolbar {
    visibility: visible !important;
}

移除侧边栏宽度限制

~/.mozilla/firefox/profile/chrome/userChrome.css
/* remove maximum/minimum  width restriction of sidebar */
#sidebar {
    max-width: none !important;
    min-width: 0px !important;
}

深色GTK主题下不可读的输入框

当使用深色GTK主题时,可能会遇到无法阅读输入框和文本字段的互联网页面(例如,文本输入框为白字白底,或黑字深底)。这可能是因为网站仅设置了背景色或文本颜色,而Firefox从主题中获取了另一者。为防止Firefox在网页中使用主题的颜色和深色主题,请在about:config中确认browser.display.use_system_colorswidget.content.allow-gtk-dark-theme均设置为false

否则,如果上述修改未能解决问题,可以通过在about:config中添加一个名为widget.content.gtk-theme-override的新字符串条目,并将其设置为浅色主题(如Breeze:lightAdwaita:light),来使用浅色GTK主题启动Firefox。

使用CSS覆盖输入框颜色
注意 相关的bug已在68版本后修复。[4]

扩展程序Text Contrast for Dark Themes会根据需要设置另一颜色以保持对比度。

或者,在userContent.css中为所有网页显式设置标准颜色,或使用stylus附加组件。样式表通常位于您的配置文件文件夹中(访问about:profiles以获取路径),在chrome/userContent.css下,如果不存在,您可以将其创建在那里。

以下将输入框设置为标准的黑色文本/白色背景;两者都可以被显示的网站覆盖,以便颜色按预期显示。

注意 如果您希望urlbarsearchbar白色,请删除前两个:not CSS选择器。
input:not(.urlbar-input):not(.textbox-input):not(.form-control):not([type='checkbox']):not([type='radio']), textarea, select {
    -moz-appearance: none !important;
    background-color: white;
    color: black;
}

#downloads-indicator-counter {
    color: white;
}
更改GTK主题

要强制Firefox对网页内容和UI都使用浅色主题(例如Adwaita),请参阅GTK#Themes

仅为内容进程更改GTK主题

要强制Firefox仅对网页内容使用浅色主题(例如Adwaita)。

  1. 在地址栏中打开about:config
  2. 创建一个新的widget.content.gtk-theme-override字符串类型条目(右键单击> 新建 > 字符串)。
  3. 将值设置为用于渲染的浅色主题(例如,Adwaita:light)。
  4. 重新启动 Firefox。

网页内容CSS设置

本节涉及userContent.css文件,您可以在其中添加自定义CSS规则以应用于网页内容。对此文件的更改将在浏览器重启后生效。

此文件可用于进行小的修复或为经常访问的网站应用个人样式。流行的网站的自定义样式表可从userstyles.org等来源获取。您可以安装如superUserContent[死链 2020-03-29—HTTP 404]之类的附加组件来管理主题。此附加组件会创建chrome/userContent.css.d目录,并在刷新页面时将其中的CSS文件应用到。

导入其他CSS文件

~/.mozilla/firefox/profile/chrome/userContent.css
@import url("./imports/some_file.css");

阻止某个域的特定部分

~/.mozilla/firefox/profile/chrome/userContent.css
@-moz-document domain(example.com) {
    div#header {
        background-image: none !important;
    } 
}
~/.mozilla/firefox/profile/chrome/userContent.css
/* add '[pdf]' next to links to PDF files */
a[href$=".pdf"]:after {
    font-size: smaller;
    content: " [pdf]";
}

鼠标和键盘

鼠标滚轮滚动速度

要修改鼠标滚轮滚动速度的默认值(即加速),请转到about:config并搜索mousewheel.acceleration。这将显示可用选项,修改以下项:

  • mousewheel.acceleration.start设置为1
  • mousewheel.acceleration.factor设置为所需数字(1020是常见值)。

或者,要使用系统值(如同Chromium中的滚动方式),请将mousewheel.system_scroll_override.enabled设置为false

Mozilla建议增加鼠标滚轮滚动速度的方法是:

  • mousewheel.default.delta_multiplier_y设置为200500之间(默认值:100)。

像素级触控板滚动

要启用一对一的触控板滚动(如Nautilus等GTK3应用程序中所见),请在启动Firefox之前设置MOZ_USE_XINPUT2=1 环境变量

如果滚动不流畅,请尝试在首选项 > 通用 > 浏览下启用Firefox的使用平滑滚动选项。

启用触摸屏手势

Wayland下,触摸屏手势默认启用。

在X11下,确保dom.w3c_touch_events.enabled设置为1(启用)或2(默认,自动检测),并设置MOZ_USE_XINPUT2=1 环境变量

在某些设备上,可能需要通过运行以下命令来禁用xinput的触摸屏手势:

$ xsetwacom --set device Gesture off

点击URL栏的行为

在较旧版本的Firefox中,可以在about:config中调整地址栏的行为,但这已于2020年3月移除

为了例如禁用第一次点击时选择地址栏内容的行为,或者允许双击URL以完全选中它,请参阅用户贡献的脚本,例如https://github.com/SebastianSimon/firefox-omni-tweaks

平滑滚动

为了在Firefox中获得平滑的基于物理的滚动,可以更改general.smoothScroll.msdPhysics配置,以模拟其他浏览器中更灵敏的行为。为了更快的配置,请将以下内容附加到~/.mozilla/firefox/your-profile/user.js(需要重启):

user_pref("general.smoothScroll.lines.durationMaxMS", 125);
user_pref("general.smoothScroll.lines.durationMinMS", 125);
user_pref("general.smoothScroll.mouseWheel.durationMaxMS", 200);
user_pref("general.smoothScroll.mouseWheel.durationMinMS", 100);
user_pref("general.smoothScroll.msdPhysics.enabled", true);
user_pref("general.smoothScroll.other.durationMaxMS", 125);
user_pref("general.smoothScroll.other.durationMinMS", 125);
user_pref("general.smoothScroll.pages.durationMaxMS", 125);
user_pref("general.smoothScroll.pages.durationMinMS", 125);

此外,还必须更改鼠标滚轮滚动设置,使其做出平滑的响应:

user_pref("mousewheel.min_line_scroll_amount", 30);
user_pref("mousewheel.system_scroll_override_on_root_content.enabled", true);
user_pref("mousewheel.system_scroll_override_on_root_content.horizontal.factor", 175);
user_pref("mousewheel.system_scroll_override_on_root_content.vertical.factor", 175);
user_pref("toolkit.scrollbox.horizontalScrollDistance", 6);
user_pref("toolkit.scrollbox.verticalScrollDistance", 2);

如果您在性能不稳定的机器上遇到问题,请尝试修改mousewheel.min_line_scroll_amount,直到感觉足够灵敏。

对于更高级的配置,修改质量-弹簧-阻尼器参数,请参阅AveYo的自然平滑滚动配置

注意 在Wayland上,由于https://bugzilla.mozilla.org/show_bug.cgi?id=1568722,动量滚动感觉松散,可以通过转到about:config并关闭apz.gtk.kinetic_scroll.enabled来禁用它。然而,这将使得滚动到长页面的开头和结尾更加困难。

滚动卡顿或不流畅

Firefox中的滚动可能感觉“卡顿”或“不流畅”。MozillaZine上的一个帖子提供了在Gentoo上有效但据说也在Arch Linux上有效的设置

  1. mousewheel.min_line_scroll_amount设置为40。
  2. general.smoothScrollgeneral.smoothScroll.pages设置为false
  3. image.mem.min_discard_timeout_ms设置为一个非常大的值,例如2100000000,但不要超过2140000000。超过此值,Firefox将无法接受您的输入并显示错误代码:“您输入的文本不是一个数字。”
  4. image.mem.max_decoded_image_kb至少设置为512K。

现在滚动应该会流畅进行。

设置退格键的行为

请参阅Firefox#Backspace does not work as the 'Back' button

禁用鼠标中键剪贴板粘贴

请参阅Firefox#Middle-click behavior

Emacs 键绑定

要在文本字段中启用类似Emacs/Readline的按键绑定,请参阅GTK#Emacs key bindings

杂项

移除全屏警告

全屏显示视频时的警告(… is now fullscreen)可以通过在about:config中将full-screen-api.warning.timeout设置为0来禁用。

要更改搜索引擎的显示顺序:

  • 打开搜索引擎下拉列表,然后点击管理搜索引擎...条目。
  • 高亮显示您要移动的引擎,然后使用上移下移按钮进行移动。或者,您也可以使用拖放操作。

"我手气不错"模式

一些搜索引擎具有“手气不错”功能。例如,Google有“我手气不错”。

要激活它们,请在about:config中搜索keyword.url并修改其值(如果存在)为搜索引擎的URL。

对于Google,将其设置为:

https://www.google.com/search?btnI=I%27m+Feeling+Lucky&q=

使用DNSSEC验证器保护DNS

您可以启用DNSSEC支持以提高浏览安全性。

使用DNS over HTTPS保护DNS

请参阅Domain name resolution#Application-level DNS

添加磁力链接协议关联

about:config中将network.protocol-handler.expose.magnet设置为false。如果它不存在,则需要创建它,右键单击空白区域,选择新建 > 布尔值,输入network.protocol-handler.expose.magnet并将其设置为false

下次打开磁力链接时,将弹出一个启动应用程序对话框。在那里,您只需选择您选择的BitTorrent客户端。此技术也可用于其他协议:network.protocol-handler.expose.<protocol>

防止意外关闭

有不同的方法来处理这个问题。

可以通过在about:config中将browser.quitShortcut.disabled属性设置为true来禁用此行为。

另一种方法是在您的窗口管理器配置文件中添加一个规则。例如,在Openbox中,在您的~/.config/openbox/rc.xml文件的<keyboard>部分添加:

 <keybind key="C-q">
   <action name="Execute">
     <execute>false</execute>
   </action>
 </keybind>

in the <keyboard> section of your ~/.config/openbox/rc.xml file.

注意 这将对图形服务器下使用的所有应用程序生效。

可以安装Disable Ctrl-Q and Cmd-Q扩展程序来防止意外关闭浏览器。

注意 由于一个bug,此扩展在Linux上不再有效。

在nspawn容器内运行Firefox

请参阅systemd-nspawn#Run Firefox

禁用WebRTC音频后处理

如果您正在使用PulseAudioPulseAudio#Microphone echo/noise cancellation,您可能不希望Firefox进行额外的音频后处理。

要禁用音频后处理,请将以下首选项的值设置为false

  • media.getusermedia.audio.processing.aec.enabled(声学回声消除)
  • media.getusermedia.audio.processing.agc.enabled (自动增益控制)
  • media.getusermedia.audio.processing.noise.enabled (降噪)
  • media.getusermedia.audio.processing.hpf.enabled (高通滤波器)

Fido U2F 认证

Firefox 支持 Fido U2F 认证协议。安装 libfido2 以获取所需的 udev 规则。

让 ALSA 恢复工作

本文或本节正考虑移除。

原因: 如果它默认就能工作,为什么还要保留这一节?(请在 Talk:Firefox/Tweaks 中讨论)

只要 Arch 一直使用 ac_add_options --enable-alsa 构建 Firefox,那么 Firefox 在系统中就可以在没有 PulseAudio 的情况下正常工作,无需任何特殊配置,也无需 apulse(除非你在系统上使用 PulseAudio 并希望 Firefox 避免使用它)。过去,你不得不允许 Firefox 沙盒默认阻止的 ioctl 系统调用,并在 about:config 中使用 security.sandbox.content.syscall_whitelist 设置正确的 ioctl 系统调用号(对于 x86-64 是 *16*,对于 x86-32 是 *54*),但这已经不再需要了。有关参考,请参见

[5] [6]

强制启用 WebGL

在某些平台上,即使用户希望使用 WebGL,它也可能被 禁用。要强制启用 WebGL,请将 webgl.force-enabled 设置为 true;要强制启用 WebGL 抗锯齿,请将 webgl.msaa-force 设置为 true

如果你遇到类似的错误

libGL error: MESA-LOADER: failed to retrieve device information
libGL error: image driver extension not found
libGL error: failed to load driver: i915
libGL error: MESA-LOADER: failed to retrieve device information
...

那么你可以尝试在 Firefox Bug 1480755 [7] 中解释的解决方案

security.sandbox.content.read_path_whitelist 设置为 /sys/

阻止下载面板自动打开

从 Firefox 98 开始,下载面板(显示进行中/最近的下载)会在每次下载开始时自动打开。

你可以在 about:config 中将 browser.download.alwaysOpenPanel 首选项设置为 false 来禁用此行为。

参见