Firefox (简体中文)
Firefox(火狐)是Mozilla(谋智网络)出品的一款图形界面网络浏览器。
安装
安装 软件包 firefox.中文界面请安装简体中文语言包 firefox-i18n-zh-cn。
其它变种:
- Firefox Developer Edition — 开发者版本
- Firefox Extended Support Release — 长期支持版本
- Firefox Beta — 前沿版本
- Firefox Nightly — 每日构建的测试版本(experimental features)
- Firefox KDE — OpenSUSE 打过补丁的、具有更好的 KDE 集成的 Firefox 版本。
- 除了不同的编译渠道,有些特殊的分支版本提供了一些特殊功能,参考 List of applications#Gecko-based.
附加组件
参见: 浏览器插件
Firefox 广为人知的一点是它的大量的附加组件,可以用来添加新功能或更改 Firefox 中已有功能。你可以在 Firefox 中的“附加组件管理器”中查找新附加组件或管理已安装的附加组件。
增加搜索引擎
将搜索页建立一个书签,搜索的关键词用%s
替代,就像这样:
Location: https://duckduckgo.com/html/?q=%s Keyword: d
也可以通过扩展程序添加搜索引擎到Firefox,有关可用搜索工具和引擎的列表,请参见 这个页面。
可以在以下网址找到大量搜索引擎列表:Mycroft Project.
你也可以用 add-to-searchbar 扩展来把搜索引擎添加到浏览器搜索框中,只需右键单击该网站的搜索字段,然后选择 Add to Search Bar...
firefox-extension-arch-search
firefox-extension-arch-searchAUR为Firefox搜索框添加Arch相关内容的搜索引擎(AUR、wiki、论坛……):
插件
Firefox 85 中移除了对所有插件的支持,包括 Flash Player。[1][2]
配置
Firefox提供不少配置项。要查看或者配置它们,在Firefox地址栏中输入:
about:config
注意:一旦在about:config
里改变了一些配置项的值,它们就会立刻影响用户当前的配置文件,其中一些配置项可能通过 Firefox Sync 跨设备同步。
不是所有在about:config
中修改的配置项都可以通过 Firefox Sync 同步;要知道到底哪一些配置项会被 Firefox Sync 同步,只需在about:config
中检索services.sync.prefs
即可了解。
同时,你也可以创建新的布尔项来同步其他配置项和第三方配置项(详见Mozilla官方文档[失效链接 2021-11-10 ⓘ])。
关于对扩展程序 NoScript 的白名单进行同步的方法,请使用这个配置项:
services.sync.prefs.sync.capability.policy.maonoscript.sites
NoScript的其他偏好设置也可以用 Firefox Sync同步,只需将配置项noscript.sync.enabled
设置为true
。
Firefox还允许你用user.js
进行一些配置。
user.js
文件保存在配置文件文件夹中(通常是~/.mozilla/firefox/xxxxxxx.default/
)。推荐想要修改这个文件的人看一看custom user.js,它对追求隐私和安全意识高的用户很是有用。
user.js
有一个缺点就是它不能在系统范围内见效。而且user.js
也不能用于预配置,因为user.js
所在的配置文件目录是在首次启动浏览器之后才创建的。解决此问题的一个方法是先让 Firefox创建一个新的配置文件,然后在关闭它之后,把已经创建好的配置文件文件夹的内容复制进去。(详见Mozilla官方文档)
有时可能需要锁定某些配置项,对一些用户来讲实乃一个非常有用的功能(特别是进行定制部署之时)。要创建系统范围的配置,按照 Locking preferences的步骤操作吧!
1.创建/usr/lib/firefox/defaults/pref/local-settings.js
文件:
pref(“general.config.obscure_value”,0); pref(“general.config.filename”,“mozilla.cfg”);
2.创建/usr/lib/firefox/mozilla.cfg(在这里写入配置项):
// //...your settings... // e.g to disable Pocket, uncomment the following line // lockPref("browser.pocket.enabled", false);
请注意,文件第一行必须包含//
;此外,其语法与user.js的语法很相似。
多媒体播放
Firefox用FFmpeg来播放HTML5中<audio>
和<video>
标签内的多媒体内容,所以要放多媒体的话。你要先安装ffmpeg。
你可以到这个用来测试视频播放的网页 和 这个用来测试音频播放的网页 来看看你的Firefox是否支持多媒体播放,以及如果支持,支持了哪一些格式。
Firefox用PulseAudio 来播放音频. 所以如果要让Firefox发出声音,你要安装 pulseaudio 这个软件包.
如果你不用 PulseAudio, 也可以换用 apulse. 为此你必须要把 /dev/snd/
从Firefox沙箱中排除,具体方法是把/dev/snd/
添加到about:config
中的security.sandbox.content.write_path_whitelist
配置项里去(注:若此配置项的值包含多个内容,请把它们用逗号分隔。)
/dev/snd/
里最后那个斜杠/
一定要加,否则会报“权限不足”的错误假如你在用apulse时发现没有声音, 试着把 16
加进 about:config
页中的security.sandbox.content.syscall_whitelist
里头。
HTML5 DRM/Widevine
Widevine是Netflix,Amazon Prime Video和其他公司用来保护其视频内容的数字版权管理工具。你可以在“首选项>常规>数字版权管理(DRM)内容”中把它启用。 如果在禁用此设置的情况下访问启用了Widevine的页面,则Firefox将在地址栏下方显示提示,询问是否允许安装DRM。选择允许并等待安装过程完成之后,就可以在被Widevine保护的站点观看视频了。
Widevine要求你在观看保护的视频内容时,不要开启隐私浏览模式,否则视频可能不会正常播放。
“打开方式”(Open With ...)扩展程序
- 安装 Open With 扩展程序.
- 进入 附加组件 > Open With > 首选项.
- 按照说明在系统中安装文件并测试安装。
- 单击 Add browser.
- 在对话框中,输入此菜单项的名称和用于启动播放器的命令 (e.g. /usr/bin/mpv).
- (选做) 向播放器添加所需的参数 (比方说,在mpv中,你可能需要
--force-window --ytdl
) - 右键或访问包含视频的链接. 从“打开方式”菜单中选择新创建的条目,如果支持该站点,则播放器将按预期方式打开。
可以使用类似方法来关联视频下载器,例如 youtube-dl.
视频硬解
使用VA-API进行视频硬解已经在 Wayland (详见 Firefox gets VA-API on Wayland) 和 X.org 上可用了 (详见 bugzilla X11 implement VAAPI 和Phoronix news VA API X11).
CONFIG_CHECKPOINT_RESTORE=y
选项rebuild一下 linux-hardened,因为 mesa 需要 kcmp syscall.为Firefox启用 VA-API :
- 确保你的显卡正确配置了 VA-API:
- 如果需要,从 Hardware video acceleration 查看验证和安装 VA-API 驱动的步骤.
- 使用支持硬解的合成器, 例如:
- WebRender 来自新的 Servo 浏览器引擎 Firefox/Tweaks#Enable WebRender compositor. 这在GNOME或者其他一些桌面环境默认启用 [3]. 确保你没有运行Software WebRender,因为从2021年8月起,它将无法工作。 [4].
- Gecko's 传统 OpenGL 后端, Firefox/Tweaks#Enable Legacy OpenGL compositor.
- 在
about:config
里设置下面的flags:- 设置
media.ffmpeg.vaapi.enabled
为true
启用 VA-API with FFmpeg. - 设置
media.ffvpx.enabled
为false
禁用 VP8/VP9 的内部解码器. 这是必要的,虽然this bug being fixed [5][6]. - 设置
media.navigator.mediadatadecoder_vpx_enabled
为true
启用WebRTC的 VA-API 硬件解码 [7]. - 设置
media.rdd-vpx.enabled
为false
禁用VP8/VP9的remote data decoder 处理 . Firefox 会尝试为VP8/VP9使用 RDD 处理但是 RDD 沙盒会禁用 VA-API 访问 [8]. 禁用VP8/VP9进程的远程数据解码器意味着VA-API将改在content process中运行。最好的解决办法是将VA-API移到GPU进程中。 [9].- 另一个解决办法是通过设置
media.rdd-process.enabled
为false
完全禁用 RDD 处理 , 而不是像上面那样只禁用 VP8/VP9.
- 另一个解决办法是通过设置
- 在Intel上, 有些时候VA-API 可能在Intel iHD 驱动 intel-media-driver上不工作. 可以通过使用 Intel i965 驱动 libva-intel-driver解决. 这个方法不对只支持intel-media-driver驱动的Intel Iris Xe 显卡适用, 唯一的方法就是等待 Firefox实现X11/Wayland的GPU处理 (planned FF94) [10] [11] [12].
- 设置
- 以下列environment variable 启动Firefox:
- 您可以通过以下方式运行Firefox来验证是否已启用VA-API:添加环境变量
MOZ_LOG="PlatformDecoderModule:5"
,用浏览器播放一段视频,并检查日志输出(查询字符串"VA-API")。请注意这些日志,因为它们可以表明前面描述的两个可能的合成器(OpenGL或WebRender)中究竟哪一个被使用了。 - Intel GPU用户, intel-gpu-tools 中的
intel_gpu_top
可以被用来在播放视频时监控GPU活动. - 要在YouTube中使用硬件解码,硬件必须支持所使用的视频编解码器。 您的GPU支持的配置文件可以通过 Hardware video acceleration#Verifying VA-API找到;YouTube 使用的解码器由h264ify 或 enhanced-h264ify 扩展所控制. 或者,你也可以安装firefox-h264ifyAUR.
拼写检查字典
选择任意文本,右键为该语言添加字典,重启浏览器即可。
或者从 官方软件仓库安装软件包hunspell和其它语言例如 hunspell-fr (法语) or hunspell-he (希伯来语)。
默认情况下,Firefox 会在 /usr/lib/firefox/dictionaries
生成指向到 hunspell 字典的软链接。如果你不想使用所有语言的字典,可以删掉一部分。注意,Firefox 升级可能会还原这些软链接。
Gnome Keyring 整合
要整合 Firefox 与 GNOME Keyring,安装 Javascript 实现的 mozilla-extension-gnome-keyring-gitAUR[损坏的链接:package not found]。要让 firefox-gnome-keyring 使用你的登录 keychain,在 about:config 中设置 extensions.gnome-keyring.keyringName 为 "login" (不含引号)。注意 "login" 的首字母应为小写。
KDE 整合
- 在 Firefox 中使用 GTK 外观。安装 breeze-gtk 和 kde-gtk-config。然后进入系统设置 -> 程序外观 -> GTK,GTK2/GTK3 主题选择为 Breeze,勾选显示 GTK 按钮的图标。
- 使用 KDE's KParts 嵌入文件查看器,可以安装 kpartsplugin[损坏的链接:package not found]。
- 可以使用 AUR 中的 firefox-kde-opensuseAUR Firefox 变种来集成 KDE 的文件关联系统和文件对话框。
- 有些插件也提供了其它整合,比如集成 KWallet[失效链接 2020-08-02 ⓘ], Unityfox Revived[失效链接 2020-08-02 ⓘ], 和 Plasma 通知[失效链接 2020-08-02 ⓘ].
小技巧
如果只是一般的改进可以参看Firefox/Tweaks, 隐私上的改进则可以参看 Firefox/Privacy.
暗黑主题
如果你使用了暗黑 GTK主题 (比方说:Arc Dark), 建议你用亮色主题打开 Firefox (比方说:Adwaita). 参看 GTK#Themes 和 Firefox/Tweaks#Unreadable input fields with dark GTK themes 来了解更多.
另外,从Firefox 68开始,您可以使所有Firefox界面甚至其他网站都遵循暗黑主题。方法是在about:config
中设定 browser.in-content.dark-mode
为true
并把ui.systemUsesDarkTheme
设定为 1
[15].
帧率
如果Firefox无法自动检测到正确的帧率,则默认为60 fps。 要手动更正,请将layout.frame_rate
设置为显示器的刷新率(例如144 Hz)。
限制内存使用
防止页面滥用内存 (或者 OOM), 我们可以用 Firejail 的 rlimit-as
选项.
新标签页的位置
要控制新标签的显示位置(相对或绝对),请使用 browser.tabs.insertAfterCurrent
和 browser.tabs.insertRelatedAfterCurrent
。详见 [16] 来了解更多信息.
网页截图
您可以通过单击地址栏中的“页面动作”按钮(就是那三个水平点)来截屏。 有关更多信息,请参见[17]
此外Developer Tools也不失为一种可行的办法
Wayland 支持
较新版本的Firefox支持通过环境变量启用Wayland支持。
$ MOZ_ENABLE_WAYLAND=1 firefox
要使该选项永久启用,请参见 Environment variables#Graphical environment 然后像通常一样通过桌面启动器启动Firefox。 为了验证它是否有效,再次检查“窗口协议”。
方法是,在 about:support
中检查 窗口协议. 值应该是wayland/drm 而非x11.
窗口管理器规则
要将不同的配置应用于Firefox窗口,请使用Firefox的--class
选项将WM_CLASS字符串更改为自定义选项。
配置文件
要启动新的Firefox实例,需要“多个配置文件”。至于如何创建新的配置文件:
$ firefox [--new-instance] -P
使用未在使用的配置文件启动Firefox时可指定class:
$ firefox [--new-instance] -P profile_name --class=class_name
触摸屏手势和触控板滚动
要启用触摸手势(如滚动和缩放),以及良好的触控板滚动,请在启动Firefox之前设置此环境变量。
MOZ_USE_XINPUT2=1
设定多个主页
要在启动Firefox时打开多个选项卡,请打开一个新窗口,然后打开那些想要设为主页的网站。
然后转到“首选项>主页”,然后在“主页和新窗口”下,单击“使用当前页面”按钮。
或者,直接转到“首选项>主页”,然后在“主页和新窗口”下,将第一个字段设置为“自定义URL。”,然后以以下格式输入要作为主页的页面:
https://url1.com|https://url2.com|https://url3.com
疑难解答
某些扩展不能在 Mozilla 拥有的域名中工作
一般来说,扩展不会对 extensions.webextensions.restrictedDomains
中的域名起效。 如果想更改这个设置,可以清除该字段。 (注意这对像about:*
这样的特殊页面没有影响).
Firefox 启动时间太长
如果 Firefox 启动时间比其它浏览器更长,这可能是因为 /etc/hosts
里没有设置 localhost。查看 Network configuration#Local network hostname resolution 了解怎么设置。
字体问题
Firefox 有一个设置用于决定允许从 fontconfig 替换多少次。要允许它使用你所有的替换规则,请更改gfx.font_rendering.fontconfig.max_generic_substitutions
为 127
(注:127是该字段可填写的最大值).
Firefox 附带了 Twemoji Mozilla 字体. 如果你想使用系统的 emoji 字体请在about:config
将font.name-list.emoji
设置为 emoji
.
Firefox 在 Emoji 显示上有问题。 [18]. 要解决此问题,可以将gfx.font_rendering.fontconfig.max_generic_substitutions
设定为 0
.
设置 email 客户端
一般地,Firefox 会使用像 Gmail 或 Yahoo Mail 这样的 Web 程序打开 mailto
链接。要使 Firefox 用你的email 客户端打开 mailto
链接,找到 选项 > 应用程序 并将 mailto
对应的动作修改为你的 email 客户端的准确路径,如 /usr/bin/kmail
。
mailto
链接由x-scheme-handler/mailto
mime类型处理,可以使用xdg-mime
轻松配置。 有关详细信息和备选方法,请参阅『默认应用程序』
文件关联
Firefox 自动创建 ~/Desktop,但我不需要
Firefox 默认使用 ~/Desktop
作为上传和下载目录。按 XDG user directories 中的说明修改 XDG_DESKTOP_DIR
.
禁止插件弹窗
有些插件,如Flash,会忽略浏览器设置,弹出窗口。要阻止这种弹窗:
- 打开 about:config。
- 右键添加新的整数项目。
- 命名为 privacy.popups.disable_from_plugins。
- 设置为2。
可用值如下:
- 0: 允许所有插件弹窗。
- 1: 允许弹窗,但限制在dom.popup_maximum数值内。
- 2: 禁止插件弹窗。
- 3: 禁止插件弹窗,即使是可信站点。
对userChrome.css和userContent.css的修改不起效
在 about:config
中将 toolkit.legacyUserProfileCustomizations.stylesheets
设定为 true
中键点击问题
! 此 URL 无效,无法载入,
许多人使用中键点击时会莫名跳转到某页面,或者出现上述错误。
问题的原因是,许多类UNIX操作系统设置鼠标中键执行粘贴操作。这与Firefox的功能冲突了(在新窗口打开链接)。可以关闭Firefox的这项功能:
在浏览器地址栏输入:
about:config
打开并找到middlemouse.contentLoadURL项,设置为false。
此外,如果要打开中键点击出现滚轮的功能(Windows默认启用),设置general.autoScroll为true。
Backspace 键无法实现“后退”功能
根据 MozillaZine上的链接, Backspace
键执行的操作是基于运行浏览器的平台而决定的。不过,有一个首选项可以用于配置Backspace
键返回/前进、上/下滚动页面或不执行任何操作。
要想使Backspace
用于返回上一页, Shift+Backspace
用于前进一页, 可以在about:config
中将browser.backspace_action
设定为 0
.
要想使Backspace
用于向上滚动页面,Shift+Backspace
用于向下滚动页面,将 browser.backspace_action
设定为 1
.
若将此属性设置为上文所述之外的其他值,Backspace
将不执行任何操作。(Arch Linux默认为2
, 换句话说,Arch Linux 中的 Firefox 默认不对Backspace
做出任何反应).
无法记录登录信息
有可能是Firefox profile文件夹中的cookies.sqlite
损坏了。关闭浏览器后删除cookie.sqlite即可:
打开终端输入:
$ cd ~/.mozilla/firefox/xxxxxxxx.default/ $ rm -f cookies.sqlite
重启Firefox检查问题是否解决。
如果没解决,可以检查一下是否存在cookies.sqlite.bak
文件。如果存在,你可以用它手动恢复 Cookies 信息。
不能进入/退出全屏模式
如果 Firefox 检测到了EWMH/ICCCM 兼容的窗口管理器, 它就会尝试发送一个 WM_STATE 消息到根窗口来请求进入(或退出)全屏模式(由窗口管理器所定义). 窗口管理器可以忽略它们, 但是一旦它们忽略, Firefox会假设请求被拒绝,并将其告知给最终用户,结果什么都没有发生。 这可能导致的现象之一就是没法全屏查看视频。一种解决方案是在about:config
中将full-screen-api.ignore-widgets
设定为true
.
Firefox 错误地认为插件过时
关闭Firefox时,后者会将当前的时间戳和插件版本保存在配置文件文件夹中的pluginreg.dat中,通常在 ~/.mozilla/firefox/some name.default/
中。
如果Firefox在运行时升级了插件,则会在该文件中包含错误的信息。 当你下一次重启 Firefox 时,会报告一个错误『Firefox已经阻止了过时的插件“插件名称”在运行』。这个问题通常出现在官方的Adobe Flash Player插件上,而Firefox在运行时已经升级。
解决方案是从您的配置文件中删除文件pluginreg.dat。事实上,Firefox不会由于丢失的文件而停止运行,因为下次Firefox关闭时,它将被重新创建。 [19]
在一些网页中,Javascript 上下文菜单不显示
在 about:config
将 dom.w3c_touch_events.enabled
设置为 0.
Firefox 不保存默认的拼写检查语言
默认的拼写检查语言可以用下面的方式设置:
- 在地址栏中打开
about:config
. - 把
spellchecker.dictionary
设置为你的语言,例如en_GB
. - 注意对于 Firefox 安装的词典插件来说,符号是
en-GB
,而对于 hunspell 词典来说,符号是en_GB
.
当你只有 hunspell 词典时, Firefox 可能不会保存你默认的词典语言设置。要解决这个问题,你可以添加至少一个 词典 插件. 注意现在附加组件中也会有词典栏.
StackExchange 上的相关问题: [20], [21], [22]
相关的漏洞报告: Bugzilla 776028, Ubuntu bug 1026869
一些 MathML 符号消失了
你需要一些数学字体,比如 Latin Modern Math 和 STIX (查看这个 MDN 页面: [23]) 以正确的显示 MathML。
在 Arch Linux 中,texlive-core 和 texlive-fontsextra 提供了这些字体,但是默认情况下设置字体却无法使用它们。详情参见 TeX Live#Making fonts available to Fontconfig。你也可以尝试 Math fonts。
全屏模式下视频断裂
如果你使用 Xorg Intel 或者 Nouveau 驱动并且感觉全屏模式下视频有撕裂感,试试 Firefox/Tweaks#Enable Legacy OpenGL compositor。
滚动时屏幕撕裂
在首选项 > 浏览中关闭平滑滚动.
Firefox WebRTC 模块不能侦测到麦克风
Firefox WebRTC getUserMedia 测试页面声称找不到麦克风,ALSA或PulseAudio都会出现问题。Firefox调试日志显示以下错误:
$ NSPR_LOG_MODULES=MediaManager:5,GetUserMedia:5 firefox
... [Unnamed thread 0x7fd7c0654340]: D/GetUserMedia VoEHardware:GetRecordingDeviceName: Failed 1
你可以尝试在about:config
中将media.navigator.audio.full_duplex
设定为false
然后重启Firefox.
如果你在用PulseAudio module-echo-cancel且不能识别Virtual Echo Canceling Source时这也很有用
使用中国版火狐通行证账号同步
火狐除了全球同步服务外,在中国大陆地区,谋智公司也提供了一个单独的中国版火狐通行证同步服务,为中国大陆地区的用户提供了更加稳定的同步服务器。
软件源中的 firefox 软件包默认仅支持全球同步服务。安装这个来自火狐中文社区的扩展 便可以启用中国版火狐通行证的同步服务。
JACK和PulseAudio用户播放视频没有声音
可能是因为这些视频有单声道音频。
如果JACK配置不仅仅使用立体声, 但你用的是普通耳机,便有可能出现此问题。 可以通过从PulseAudio JACK Sink连接 front-center
端口到系统输出的playback_1
和playback_2
端口来简单地修复此问题.
这里有一个用于自动化处理该问题的脚本,但要注意这脚本中的端口等信息可能因人而异:
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"
地理定位功能不能用
最近,Google限制了Arch Linux的定位服务的使用,当在网站上启用地理定位时,会导致以下错误: Geolocation error: Unknown error acquiring position
. 地区限制的服务如 Hulu 可能会显示一个类似的错误,提示你即使已允许站点的位置服务,也无法确定您的位置。
要解决此问题,可以换用 Mozilla Location Service. 方法是在 about:config
将geo.provider.network.url
修改为
https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%
参考FS#65241获得细节信息.
鼠标右键单击了窗口管理器中的第一个选项
要解决此问题,在about:config
修改ui.context_menus.after_mouseup
为 true
.
另见 [24]