Firefox/Tweaks
本页面包含高级 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.all 为 true,从而为所有任务强制启用 GPU 加速的 WebRender。
如果您的设备使用最新驱动程序却遇到渲染问题,可以通过设置 gfx.webrender.software 为 true 来强制启用软件 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。
- “自动”大小选择基于一个十年前的表格,该表格仅包含 8GB 或更低系统内存的系统设置。以下公式非常接近此表格,可用于更动态地设置 Firefox 缓存:
此方法有一些缺点
- 如果浏览器崩溃或重启,当前浏览的网页内容将会丢失,这可以通过使用 anything-sync-daemon 或任何类似的周期性同步脚本来避免,以便缓存定期复制到硬盘
- 需要为每个用户单独配置这些设置
将磁盘缓存移动到内存
另一种方法是将“磁盘”缓存移动到内存盘 (RAM disk),为您提供上述两者之间的折中方案。现在,缓存将在 Firefox 运行期间保持(包括 Firefox 崩溃恢复),但在重启(包括 OS 崩溃)时会被丢弃。
要执行此操作,请转到 about:config 并将 browser.cache.disk.parent_directory 设置为 /run/user/UID/firefox,其中 UID 是您的用户 ID,可以通过运行 id -u 获得。
打开 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 来执行此操作
| 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必须设置为truebrowser.low_commit_space_threshold_percent设置为100browser.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.css 和 userContent.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 140.0 起)
- Tree Style Tab
- Sidebery
- Tabby
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_colors 和 widget.content.allow-gtk-dark-theme 已设置为 false。
如果上述修改未能解决问题,可以通过在 about:config 中添加一个名为 widget.content.gtk-theme-override 的新字符串,并将其设置为浅色主题(如 Breeze:light 或 Adwaita:light),从而以浅色 GTK 主题启动 Firefox。
使用 CSS 覆盖输入框颜色
扩展 Text Contrast for Dark Themes 可以根据需要设置另一种颜色以保持对比度。
或者,在 userContent.css 中为所有网页明确设置标准颜色,或使用 stylus 扩展。样式表通常位于配置文件夹(通过访问 about:profiles 查看路径)中的 chrome/userContent.css,如果不存在,您可以在那里创建它。
以下设置将输入框设为标准黑色文字/白色背景;两者都可以被显示的站点覆盖,以便按预期显示颜色
urlbar 和 searchbar 为 白色,请移除前两个 :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)
- 在地址栏中打开
about:config。 - 创建一个新的
widget.content.gtk-theme-override字符串类型条目(右键点击> 新建 > 字符串)。 - 将值设置为用于渲染的浅色主题(例如
Adwaita:light)。 - 重新启动 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;
}
}
在 PDF 文件链接后添加 [pdf] 标记
~/.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设置为所需数值(10到20是常用值)。
或者,要使用系统值(类似于 Chromium 中的滚动方式),将 mousewheel.system_scroll_override.enabled 设置为 false。
Mozilla 关于提高鼠标滚轮滚动速度的建议是
- 将
mousewheel.default.delta_multiplier_y设置为200到500之间(默认: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 的自然平滑滚动配置。
about:config 并关闭 apz.gtk.kinetic_scroll.enabled 来关闭它。不过,这将使滚动到长页面的开头和结尾变得更加困难。滚动卡顿或不流畅
Firefox 中的滚动可能会感觉“卡顿”或“不流畅”。MozillaZine 上的一篇文章提供了适用于 Gentoo 的设置,据报道在 Arch Linux 上也有效
- 将
mousewheel.min_line_scroll_amount设置为 40 - 将
general.smoothScroll和general.smoothScroll.pages设置为 false - 将
image.mem.min_discard_timeout_ms设置为一个非常大的值,例如 2100000000,但不要超过 2140000000。超过此数值,Firefox 将不接受您的输入,并提示错误代码:“您输入的文本不是数字。” - 将
image.mem.max_decoded_image_kb设置为至少 512K
现在滚动应该会变得流畅。
设置退格键行为
禁用鼠标中键粘贴剪贴板内容
参见 Firefox#鼠标中键行为。
Emacs 键绑定
若要在文本框中启用类似 Emacs/Readline 的按键绑定,请参见 GTK#Emacs 按键绑定。
杂项
移除全屏警告
关于全屏模式下显示视频的警告(……现在处于全屏状态)可以通过在 about:config 中将 full-screen-api.warning.timeout 设置为 0 来禁用。
更改 Firefox 搜索栏中搜索引擎的顺序
若要更改搜索引擎显示的顺序
- 打开搜索引擎下拉列表并点击 管理搜索引擎... 条目。
- 选中您想要移动的搜索引擎,并使用 上移 或 下移 来移动它。或者,您可以使用拖放操作。
“手气不错”模式
一些搜索引擎具有“手气不错”功能。例如,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 扩展以防止意外关闭浏览器。
在 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 来禁用此行为。