qutebrowser
qutebrowser 是一个以键盘为中心、用 Python 和 Qt 编写的网络浏览器。它使用 Chromium 网页引擎。
安装
安装 qutebrowser 包。
基本用法
使用 : 访问命令提示符。您可以使用 Tab 进行自动补全。
首次使用 qutebrowser 时,会显示一个快速入门页面。之后可以通过 :help 访问。有关键盘快捷键,请参阅 备忘单。
用户配置
qutebrowser 可以通过用户界面、命令行或 Python 脚本进行配置。请参阅 上游配置指南。
通过用户界面进行的配置将自动保存在 autoconfig.yml (请勿手动编辑)。对于手动配置,用户可以编写 config.py。这两个文件都位于 $XDG_CONFIG_HOME/qutebrowser 或备用的 $HOME/.config/qutebrowser。
qutebrowser 中的配置
config.py 文件,通过用户界面进行的配置 (:set, :bind, :unbind) 将不会自动加载。要加载它,请在 config.py 中放置 config.load_autoconfig() [1]。要设置单个配置项,您可以直接键入 :set,后跟配置项的名称和您想要设置的新值。例如,您可以键入
:set auto_save.session true
在重新打开 qutebrowser 时打开您之前的标签页。
要打开 qutebrowser 的用户界面设置页面,请键入
:set
而不带任何其他参数。在那里,您可以在用户界面中编辑不同的设置。完成后,再次键入 :set 以存储您的配置。
例如,在 url.searchengines 下,您可以配置您的搜索引擎,它们被存储为键值对列表。如果您还没有更改此设置,它应该看起来像这样
{"DEFAULT": "https://duckduckgo.com/?q={}"}
这将把 DuckDuckGo 配置为您的默认搜索引擎,而占位符 {} 将被您的搜索词替换。要添加一个用于快速搜索 Arch Linux wiki 的快捷方式,您可以使用
{"DEFAULT": "https://duckduckgo.com/?q={}", "wa": "https://wiki.archlinux.org.cn/?search={}"}
然后,正如 qutebrowser 用户界面中的注释所述,您可以通过键入 o wa <searchterm> 来搜索 Arch Linux wiki。请注意,执行搜索所需的参数因搜索引擎而异。例如,要设置 Google,请使用 https://www.google.com/search?hl=en&q={}。或者设置 Brave Search,请使用 https://search.brave.com/search?q={}。
如果您的系统已安装并运行 Tor,并且您希望使用 DuckDuckGo 的 onion 页面而不是普通页面,该设置应如下所示
{"DEFAULT": "https://duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion/?q={}", "wa": "https://wiki.archlinux.org.cn/?search={}"}
按键绑定
您可以使用命令 :bind key command 直接从浏览器编辑按键绑定,也可以直接从文件进行编辑。请注意,已有大量按键绑定。如果您注意到某个按键绑定有延迟,那是因为其他按键绑定也以相同的按键开头。
有关示例,请参阅 文档。
视频播放
您可以在 config.py 中添加一个选项,在 mpv 中打开视频。以下示例显示按 Ctrl+/ 会显示页面上所有可用的视频链接,然后只需按所需视频链接的相应组合键,它就会在 mpv 中打开它。
config.py
...
config.bind('<Ctrl+/>', 'hint links spawn --detach mpv {hint-url}')
...
技巧与提示
导入快速标记/书签
qutebrowser 支持通过 Python 脚本 /usr/share/qutebrowser/scripts/importer.py 从多种格式导入书签。默认输出格式为 qutebrowser 的快速标记格式。有关书签和快速标记之间差异的简要说明,请参阅 qutebrowser FAQ。
从 Chromium/Chrome 导入
运行上述脚本,将 chromium 指定为第一个参数,将包含书签文件的目录指定为第二个参数。对于 Chromium,该目录为 ~/.config/chromium/Default;对于 Chrome,该目录为 ~/.config/google-chrome/Default。脚本的输出可以附加到 ~/.config/qutebrowser/quickmarks。下面解释了一些输入格式。通过向 importer.py 提供 -h 标志可以找到更多信息。
$ python /usr/share/qutebrowser/scripts/importer.py chromium ~/.config/chromium/Default >> ~/.config/qutebrowser/quickmarks
从 Firefox 导入
将 Firefox 书签导出到 HTML 文件 (参见 [2])。然后,使用脚本进行导入。
$ python /usr/share/qutebrowser/scripts/importer.py bookmarks.html >> ~/.config/qutebrowser/quickmarks
从 bookmarks.html 文件导入
从 bookmarks.html 文件导入需要安装 python-beautifulsoup4 包。要导入,只需将您的 bookmarks.html 文件提供给 importer.py,并将输出附加到 ~/.config/qutebrowser/quickmarks。
$ python /usr/share/qutebrowser/scripts/importer.py ~/.config/chromium/Default >> ~/.config/qutebrowser/quickmarks
作为书签而不是快速标记导入
您可以使用上述任何一种方法,并提供一个额外的 -b 标志来将脚本的输出格式更改为书签。然后,输出应附加到 ~/.config/qutebrowser/bookmarks/urls。
$ python /usr/share/qutebrowser/scripts/importer.py -b chromium ~/.config/chromium/Default >> ~/.config/qutebrowser/bookmarks/urls
请注意,必须在浏览器规范之前添加该标志。
自动输入登录信息
您可以使用 qute-pass 用户脚本 自动输入存储在您的 Pass 密码管理器中的登录信息。您需要一个 dmenu 兼容的 应用程序启动器 和 python-tldextract。设置一个执行 :spawn --userscript qute-pass 的按键绑定。
摘录自脚本的描述
The domain of the site has to appear as a segment in the pass path, for example: "github.com/cryzed" or "websites/github.com". How the username and password are determined is freely configurable using the CLI arguments. The login information is inserted by emulating key events using qutebrowser's fake-key command in this manner: [USERNAME]<Tab>[PASSWORD], which is compatible with almost all login forms.
为进一步说明,默认使用的 pass 结构应该看起来像这样
user@computer$ pass
Password Store ├── example.site1.com │ └── username ├── example.site2.com │ └── username1 │ └── username2
这意味着每个网站都是您 `~/.password-store` 文件夹中的一个目录。在每个网站名称的目录中,文件被命名为 `username.gpg`, `username2.pgp` 等,每个文件包含与网站上每个用户名的相关密码。对于从 Firefox 迁移过来的用户,修改版的 firefox_decrypt 应该会以这种格式迁移数据。
用户脚本提供了许多选项来适应大多数工作流程和特殊情况 (例如,只想插入密码,或者常规的插入用户名和密码方法不起作用)。
开启拼写检查
首先,使用 qutebrowser 自带的 dictcli.py 脚本下载相应的字典。
例如,用于英语 (美国)
$ /usr/share/qutebrowser/scripts/dictcli.py install en-US
该脚本还有其他功能,可以通过使用 --help 显示。
然后,在 qutebrowser 中设置以下内容
:set spellcheck.languages ["en-US"]
最小化指纹识别
网站可能会通过结合屏幕尺寸、用户代理、HTTP_ACCEPT 头部等信息来识别您。有关更多信息以及测试您的浏览器独特性,请参阅 [3]。以下是一些可以采取的步骤,使您的 qutebrowser 安装更加“通用”。
此外,请参阅 Firefox/Privacy#Configuration 以获取更多想法。
设置通用的用户代理
使用 set content.headers.user_agent 时,有几个用户代理可供选择。另一个可能更通用的用户代理是
Mozilla/5.0 (Windows NT 10.0; rv:68.0) Gecko/20100101 Firefox/68.0
- 您可能想将
Windows NT 10.0更改为X11; Linux x86_64,因为网站也可以通过 Javascript 收集您的平台类型,而此设置无法在 qutebrowser 中更改。 - 将您的用户代理更改为非默认值可能会导致某些网站无法正常工作。例如,如果用户代理被列为过时的浏览器,验证码会提示您的浏览器不受支持。
设置通用的 HTTP_ACCEPT 头部
以下是一个通用的 HTTP_ACCEPT 头部 (Firefox 默认)。只需在提示符处键入以下命令
set content.headers.accept_language en-US,en;q=0.5
set content.headers.custom '{"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"}'
禁用从 Canvas 读取
set content.canvas_reading false
禁用 WebGL
将 content.webgl 设置为 false 以禁用 WebGL。
禁用网站
创建 ~/.config/qutebrowser/blocked-hosts 并每行输入您想要阻止的网站;例如 www.youtube.com。这将保留内置的广告拦截列表,并添加您在文件中输入的网站。重启 qutebrowser,然后运行 :adblock-update。
启用 Brave 浏览器广告拦截器
安装 python-adblock 包并在 qutebrowser 中启用广告拦截器
:set content.blocking.method both
在 mpv 中打开一些链接
将某些特定链接 (如 YouTube、reddit 等) 在 mpv 中打开,而不是加载网页。这可以用来绕过广告、跟踪等。当然,您可以将 mpv 替换为您选择的视频播放器。
:bind M hint links spawn mpv {hint-url}
全局启用暗黑主题
:set colors.webpage.darkmode.enabled true
禁用 JavaScript
:set content.javascript.enabled false
通过 Tor 路由流量
这需要 Tor 已启用并正在运行。请注意,这仅使用 Tor 代理,但不会为您提供 Tor 浏览器可能带来的任何指纹识别保护。
:set content.proxy socks://:9050/
更改上下文菜单主题
要更改上下文菜单主题,请找到 config.py 的相关部分,并设置 适当的设置。例如
config.py
... c.colors.contextmenu.disabled.fg = '#808080' c.colors.contextmenu.menu.bg = '#353535' c.colors.contextmenu.menu.fg = '#ffffff' c.colors.contextmenu.selected.bg = '#909090' ...
与 KeePassXC 集成
qutebrowser 附带 qute-keepassxc,用于与 KeePassXC 集成。
与 KeePassXC 集成
- 在 KeepassXC 配置中启用 KeepassXC-Browser 扩展。
从 KeePassXC 进入 工具->设置->浏览器集成,并勾选 "启用浏览器集成"。 - 确保您的 GPG 密钥环中有一个工作的公钥-私钥对。
使用gpg --list-secret-keys --keyid-format=long查找您的秘密密钥。密钥必须受信任,例如,它应该在 "uid" 字段中包含 "[ultimate]"。
如果它不受信任,您可以使用gpg --edit-key KEYID进行信任,然后输入trust,5(最高信任级别) 并确认。
最后,复制密钥 ID。 - 安装 python-pynacl 包
- 修改您的 qutebrowser 配置。
例如,您可以将以下行添加到您的~/.config/qutebrowser/config.py中。请记住将 `ABC1234` 替换为您实际的 GPG 密钥 ID。
config.py
config.bind('<Alt-Shift-u>', 'spawn --userscript qute-keepassxc --key ABC1234', mode='insert')
config.bind('pw', 'spawn --userscript qute-keepassxc --key ABC1234', mode='normal')
要管理多个账户,您还需要安装 rofi。
故障排除
无法读取的工具提示
根据您的 Qt 主题,工具提示可能难以阅读。为了解决这个问题,请创建一个 Qt 样式表文件。例如
~/.local/share/qutebrowser/fix-tooltips.qss
QToolTip {
background-color: palette(highlight);
border: 2px solid palette(highlight);
color: palette(text);
}
然后,在启动 qutebrowser 时加载样式表
qutebrowser --qt-arg stylesheet ~/.local/share/qutebrowser/fix-tooltips.qss
有关详细信息,请参阅 bug 报告。
该 bug 报告提供了 另一种方法,使用 qt5ctl,该方法不需要在启动时传递参数。
- 在 qutebrowser 中,设置
qt.force_platformtheme qt5ctl - 在
qt5ct中,设置样式:gtk2,标准对话框:gtk2,调色板:默认 - 切换到“样式表”选项卡,创建一个新文件 (我称之为
tooltip-gtk2.qss,但这并不重要) - 将以下内容放入其中
QToolTip{ background: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 0, stop: 0 palette(window), stop: 1 palette(alternate-window)); border-radius: 3px; border: 1px solid #000000; padding: 1px; color: palette(text); } - 点击保存,然后点击确定
- 确保选中此新文件旁边的复选框,以便它将被应用于主题
- 点击应用