跳转至内容

Firefox/Tweaks

来自 ArchWiki

本条目或章节建议与 Firefox#使用技巧 合并。

注:本页面内容与 Firefox#配置 存在重叠;确定某个特定主题应放在此处还是主页上是随意的。这些“调整”是有关 Firefox 内容的支柱,因此它们应该直接放在主页上。如果故障排除章节被认为太长,可以将其拆分为子页面。(请在 Firefox/调整 的讨论页 进行讨论)

本页面包含高级 Firefox 配置选项和性能调整。

性能

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

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

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

更改性能设置

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

可以通过首选项调整这些设置,或者手动在 about:config 中将 dom.ipc.processCount 值设为 1-8,并将 browser.preferences.defaultPerformanceSettings.enabled 设为 false

不过,您可能希望手动调整此设置以进一步提高性能,或在低端设备上减少内存占用。

在这种情况下,当前 用户内容进程限制已被提高到 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.alltrue,从而为所有任务强制启用 GPU 加速的 WebRender。

如果您的设备使用最新驱动程序却遇到渲染问题,可以通过设置 gfx.webrender.softwaretrue 来强制启用软件 WebRender。

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

关闭磁盘缓存

每一个加载的对象(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 disk),为您提供上述两者之间的折中方案。现在,缓存将在 Firefox 运行期间保持(包括 Firefox 崩溃恢复),但在重启(包括 OS 崩溃)时会被丢弃。

要执行此操作,请转到 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 数据库会随时间推移产生碎片并出现空白区域。但是,由于没有管理进程来检查和优化数据库,这些因素最终会导致性能下降。提高启动速度以及某些书签和历史记录相关任务性能的一个好方法是整理这些数据库的碎片并修剪未使用的空间。

您可以在 Firefox 运行时使用 profile-cleaner 来执行此操作

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 将整个配置文件缓存到内存

如果系统内存充足,可以使用 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

外观

字体

参见主条目:字体配置

配置 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 更改为 0。然后,在 about:config 搜索栏中输入 ui.textScaleFactor,选中“数字”旁边的圆圈,点击加号按钮添加该设置键,并将其值编辑为 layout.css.devPixelsPerPx 值的 100 倍。例如,如果前者设置为 1.25,则 ui.textScaleFactor 应设置为 125。

有关 HiDPI 显示器的信息,请参阅 HiDPI#Firefox;计算 DPI 请参阅 [3]

来自 Microsoft Windows 的默认字体设置

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

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 个看似随机字符的字符串,而 profile name 通常是 default)。您可以按照 Firefox 文档 所述,在地址栏输入 about:support,并在“应用程序基础”章节下查找“配置文件夹”字段,从而找到准确名称。

  • 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

或者前往“更多工具”,点击“定制工具栏”,然后在左下角找到名为“标题栏”的复选框并取消勾选。如果找不到该复选框,请确保 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 覆盖输入框颜色
注意 相关错误已从 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。

Web 内容 CSS 设置

本节涉及 userContent.css 文件,您可以在其中为 Web 内容添加自定义 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

像素级精确的触摸板滚动

要启用 1:1 触摸板滚动(如 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

地址栏鼠标点击行为

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

若要例如禁用首次点击即选中地址栏内容的行为,或允许双击 URL 进行全选,请查看用户贡献的脚本,如 https://github.com/SebastianSimon/firefox-omni-tweaks

平滑滚动

为了在 Firefox 中获得平滑的基于物理的滚动,可以更改 general.smoothScroll.msdPhysics 配置,以模拟像其他 Web 浏览器那样更灵敏的行为。为了快速配置,将以下内容附加到 ~/.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 的自然平滑滚动配置

注意 由于 https://bugzilla.mozilla.org/show_bug.cgi?id=1568722,在 Wayland 上动量滚动感觉很松散,可以通过转到 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#退格键不能作为“后退”按钮使用

禁用鼠标中键粘贴剪贴板内容

参见 Firefox#鼠标中键行为

Emacs 键绑定

若要在文本框中启用类似 Emacs/Readline 的按键绑定,请参见 GTK#Emacs 按键绑定

杂项

移除全屏警告

关于全屏模式下显示视频的警告(……现在处于全屏状态)可以通过在 about:config 中将 full-screen-api.warning.timeout 设置为 0 来禁用。

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

  • 打开搜索引擎下拉列表并点击 管理搜索引擎... 条目。
  • 选中您想要移动的搜索引擎,并使用 上移下移 来移动它。或者,您可以使用拖放操作。

“手气不错”模式

一些搜索引擎具有“手气不错”功能。例如,Google 有“I'm Feeling Lucky”。

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

对于 Google,将其设置为

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

使用 DNSSEC 验证器进行安全 DNS 解析

您可以启用 DNSSEC 支持以实现更安全的浏览。

通过 HTTPS 进行安全 DNS 解析 (DoH)

参见 域名解析#应用层 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 中添加

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

~/.config/openbox/rc.xml 文件的 <keyboard> 章节中。

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

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

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

在 nspawn 容器中运行 Firefox

参见 systemd-nspawn#运行 Firefox

禁用 WebRTC 音频后处理

如果您正在使用 PulseAudio 的 PulseAudio#麦克风回声/噪声消除,您可能不希望 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 规则。

强制启用 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 中解释的解决方案 [5]

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

防止下载面板自动打开

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

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

参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.