w3m

出自 ArchWiki

w3m 是一个基于文本的网页浏览器,以及像 moreless 这样的分页器。 通过 w3m,您可以通过终端模拟器窗口浏览网页。 此外,w3m 可以用作文本格式化工具,将 HTML 排版为纯文本。

安装

安装 w3m 软件包。

用法

参见 w3m(1)

配置

w3m 可以使用浏览器内设置菜单进行配置,也可以直接修改其配置文件。

一些更高级的选项无法通过设置菜单使用,因此建议编辑配置文件本身。

默认情况下,所有配置文件都位于 ~/.w3m 中。

/etc/w3m/config 未公开,因此使用 o (= 选项设置面板), tab 键直到选中一个未选中的设置 (例如 ( )YES), Enter 键选择它, tab 键向下到 [OK] 并按下 Enter 键离开面板。 现在您将拥有 ~/.w3m/config

技巧和窍门

Vim 快捷键绑定

~/.w3m/keymap 替换为 自定义配置

URL 提示

w3m 支持类似 qutebrowser 的链接导航,只需导航到您的配置文件并将以下行从 display_link_number 0 更改为 display_link_number 1

并将 keymap f COMMAND "RESHAPE ; LINK_BEGIN ; GOTO_LINK"keymap F COMMAND "RESHAPE ; LINK_BEGIN ; TAB_LINK" 添加到 ~/.w3m/keymap

注意: 虽然 qutebrowser 支持多种按键来选择提示,但在 w3m 中,您只能使用数字键选择链接。

使用 kittens 图像协议

kitty 终端模拟器的用户可以选择使用其自身的 图形协议

要这样做,只需更改 ~/.w3m/config 中的以下行

inline_img_protocol 0
imgdisplay w3mimgdisplay

改为

inline_img_protocol 4
imgdisplay kitty

使用 Iterm2 图像协议

wezterm 终端模拟器的用户可以选择使用 WezTerm 支持的 Iterm2 图形协议

要这样做,只需更改 ~/.w3m/config 中的以下行

inline_img_protocol 0
imgdisplay w3mimgdisplay

改为

inline_img_protocol 3
imgdisplay iterm2

搜索

您可以将 wrap_search 设置为 1,以允许搜索在到达页面内所有匹配项的底部后跳转到顶部。

您可以将 ignorecase_search 设置为 1 以启用不区分大小写的搜索。

注意: 与其他浏览器和文本编辑器不同,w3m 没有智能大小写搜索选项。

自定义搜索引擎

您可以映射按键以启动 CGI 脚本,该脚本将捕获您的输入并将其传递到自定义搜索引擎,要这样做,首先在 ~/.w3m/keymap 中创建一个按键绑定以启动您的脚本

keymap s COMMAND "SET_OPTION dictcommand=file:///cgi-bin/omnibar_google.cgi ; DICT_WORD"

并将 omnibar_google.cgi 放在您的 ~/.w3m/cgi-bin 目录中,并赋予它执行权限。

虽然上面的脚本将返回 Google 结果,但您可以使用这些类型的脚本来搜索 StackOverflow、GitHub、DuckDuckGo、Reddit 和许多其他网站。

您可以在 GitHub 上查看类似的脚本。

阅读器模式

某些网页在 w3m 中无法正常工作,这可能是因为它们使用大量 javascript 或 CSS 来显示其大部分内容。 通常,您必须滚动多个页面才能到达文章的开头。

可以通过首先将网页通过阅读器模式程序(例如 rdrview-gitAUR)来缓解这种情况。

要这样做,请将以下内容添加到 ~/.w3m/keymap

keymap R COMMAND "READ_SHELL 'rdrview $W3M_URL -H 2> /dev/null 1> /tmp/readable.html' ; LOAD /tmp/readable.html"

重定向 URL

~/.w3m/siteconf 文件用于设置一些特定于网站的首选项,例如:引用站点和用户代理。

它还可以用于重定向到更轻量级(在布局和带宽方面)且更尊重隐私的网站替代方案。

除此之外,它还可以用于运行某些 CGI 脚本。

~/.w3m/siteconf
url m!^https?://([a-z]+\.)?twitter\.com/!
substitute_url "https://nitter.net/"

url m!^https?://([a-z]+\.)?reddit\.com/!
substitute_url "https://safereddit.com/"

#url m!^https?://([a-z]+\.)?google\.com/!
#substitute_url "https://duckduckgo.com/lite/"

url m!^https?://([a-z]+\.)?imgur\.com/!
substitute_url "https://rimgo.pussthecat.org/"

url m!^https?://([a-z]+\.)?wikipedia\.com/!
substitute_url "https://wl.vern.cc/"

url "https://www.youtube.com/" exact
substitute_url "file:/cgi-bin/video.cgi?"
#substitute_url "https://yewtu.be/"

url "https://stackoverflow.com/" exact
substitute_url "https://ao.bloatcat.tk/"

url "https://www.reuters.com/" exact
substitute_url "https://neuters.de/"

url "https://fandom.com/" exact
substitute_url "https://breezewiki.pussthecat.org/"

url "https://medium.com/" exact
substitute_url "https://scribe.rip/"

url "https://web.archive.org/" exact
substitute_url "https://wayback-classic.net/"

恢复已关闭窗口

默认 w3m 无法重新打开已关闭的选项卡,这可以通过将关闭选项卡按钮绑定到将要关闭的选项卡的当前 URL 回显到一个文本文件,并绑定另一个键来使用 CGI 脚本恢复添加到该文件的最新 URL 来添加此功能。

~/.w3m/keymap 中添加

keymap d COMMAND "EXTERN 'echo %s >> ~/.w3m/RestoreTab.txt' ; CLOSE_TAB"
keymap u COMMAND TAB_GOTO file:/cgi-bin/restore_tab.cgi

然后将以下文件放在 ~/.w3m/cgi-bin 中并使其成为可执行文件

restore_tab.cgi

打开 magnet 链接

magnet.cgi 可用于使 w3m 使用 Transmission 自动打开 magnet 链接。

指纹识别

使用 tor

您可以使用 torify(1) 通过 tor 路由 w3m 流量。

$ torify w3m -v

用户代理和标头

默认情况下,w3m 使用自己的用户代理,这意味着 w3m 用户在其他用户中脱颖而出。

通过使用更通用的用户代理、语言和 http_accept 标头可以减少指纹。

~/.w3m/config
user_agent Mozilla/5.0 (Windows NO 10.0; rev:91.0) Gecko/20100101 Firefox91.0
no_referer 1
cross_origin_referer 0
accept_language en-US,en;q=0.5
accept_encoding gzip, deflate
accept_media text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

禁用 Cookie

要禁用 Cookie,请在 ~/.w3m/config 中将 use_cookie 设置为 0。

禁用缓存

要禁用缓存,请在 ~/.w3m/config 中将 no_cache 设置为 1。

故障排除

图像闪烁/导致卡顿

不幸的是,有时 w3m 在尝试滚动经过图像时会卡顿,甚至浏览器可能会在几秒钟内无响应。

一种解决方案是完全禁用图像,但这会破坏某些网站(例如,Hacker News 依赖 GIF 来进行评论缩进)。

更优雅的解决方案是创建一个按键绑定来切换图像的开启或关闭,要这样做,请将以下行添加到 ~/.w3m/keymap

keymap i COMMAND "SET_OPTION display_image=toggle ; RESHAPE"

参见