surf - WebKit2/GTK+ 极简浏览器¶
suckless.org surf 是一个极简化的浏览器。surf精简到不包括任何图形控制元素(没有任何导航菜单和按钮),是通过 dmenu
快捷键控制的。
在surf浏览器上,只包含浏览器页面以及可选的滚动条。Surf的主要功能是通过第三方 WebKitGTK
库实现,其他程序功能则提供窗口和一系列 XProperties
来控制该浏览器特性。
Surf支持cookies,但是不包含常规浏览器的常用功能,例如 tab
浏览,书签以及广告过滤。不过,surf通过patch,脚本和扩展程序来实现这些功能。surf默认只包含调用demnu程序的快捷键支持,其他大多数配置需要修改源代码头文件,然后重新编译来实现。
备注
我感觉可能还是使用发行版直接提供的 dwm - 动态窗口管理器 和 surf 比较方便。虽然通过源代码能够定制修改,但是大多数情况下通用的配置已经够好,自己编译实在太花费时间精力了。
如果后期搞 LFS(Linux from scratch) 再考虑源代码编译surf
我甚至感觉在 dwm - 动态窗口管理器 环境下使用 firefox 也非常轻量级,速度和兼容性极佳。
安装¶
surf依赖
webkit2gtk
,所以需要安装开发库:sudo apt install libwebkit2gtk-4.0-dev libgcr-3-dev
另外参考Arch Linux的包列表依赖,补充安装
x11-utils
(包含xprop
):sudo apt install x11-utils
下载源代码及编译安装:
git clone https://git.suckless.org/surf cd surf sudo make clean install
surf编译排查¶
编译报错:
Package gcr-3 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gcr-3.pc'
to the PKG_CONFIG_PATH environment variable`
No package 'gcr-3' found
surf.c:9:10: fatal error: glib.h: No such file or directory
9 | #include <glib.h>
| ^~~~~~~~
compilation terminated.
make: *** [Makefile:31: surf.o] Error
参考 Can’t compile surf browser - missing /usr/include/glib.h ,实际上 /usr/include/glib.h
已经移动到 /usr/include/glib-2.0/glib.h
( 根据 dpkg-query -S /usr/include/glib-2.0/glib.h
可以看到系统已经安装了 libglib2.0-dev
: libglib2.0-dev:armhf: /usr/include/glib-2.0/glib.h
)
在上述讨论中建议参考Arch Linux的surf包说明,先确保系统安装好:
gcr - A library for bits of crypto UI and parsing (补充安装)
webkit2gtk (安装 libwebkit2gtk-4.0-dev)
xorg-xprop (安装 x11-utils)
ca-certificates (ca-certificates-utils) (optional) – SSL verification (已经安装)
curl (curl-git, curl-minimal-git) (optional) – default download handler (已经安装)
dmenu (optional) – URL-bar (已经安装)
tabbed (tabbed-git, tabbed-flexipatch-git) (optional) – tabbed frontend (我后续通过编译安装)
xterm (jbxvt-git, xterm-git) (optional) – default download handler (不安装,使用 st - X图形精简终端 )
我经过反复验证发现:
需要安装
libgcr-3-dev
才能在编译时消除No package 'gcr-3' found
需要安装
libwebkit2gtk-4.0-dev
才能使得surf
编译正确找到glib.h
,也就是说这个glib.h
是属于libwebkit2gtk-4.0-dev
而不是系统的glib-2.0-dev
然后编译能够完成
使用¶
surf
没有任何常规浏览器的导航栏、菜单等等,就是一个简介的页面,就像一张画纸铺满整个可用的窗口空间。
是的,屏幕利用率非常高…但是,等等,怎么操作前进后退呢?
默认的快捷键是以 ctrl
引导的:
使用问题排查¶
无法访问google¶
使用 surf
访问 google.com
会出现页面空白,终端输出信息:
child exited with status 2
提示无法读取 default.css
¶
发现访问很多网站时终端信息提示:
Could not read style file: /home/huatai/.surf/styles/default.css