fbpad
fbpad 是一个小型的帧缓冲终端,它通过单字符标签管理多个终端。它非常轻量级,使用 C 语言编写,并使用自己的字体格式 tinyfont,避免了 xorg 字体依赖。fbpad 可选地支持 256 色、粗体字体以及将帧缓冲内容保存到内存中,所有这些结合起来使 fbpad 成为许多用途中 X 服务器的可行替代品。
安装
Install fbpad-gitAUR 软件包,默认情况下,它导入 fbpad 的 “bold” 和 “scrsnap” 分支,分别添加了 256 色和粗体字体,以及保存帧缓冲内容的功能。fbpad 通过 config.h
文件进行自定义,并且对 config.h
文件的编辑会在重新编译 fbpad 后被 incorporated 到 fbpad 中,使用命令 makepkg --skipinteg -i
。
配置
用户很可能希望在使用前编辑 config.h
中关于字体(稍后详细介绍)、SHELL
、MAIL
和 EDITOR
的定义,以使用他们偏好的程序。
dwm 用户应该可以毫无问题地适应 fbpad。fbpad 特定的快捷键绑定是通过修饰键启动的,修饰键被硬编码为 Alt
键,就像 dwm 中一样。Alt+j
和 Alt+k
在打开的标签页中的终端之间切换,Alt+o
切换到最后一个打开的标签页,Alt+p
显示打开的标签页列表,仅举几例。习惯手动修补源代码的用户可以编辑 fbpad.c
文件来编辑/添加快捷键绑定。
如果您经常重新编译 fbpad,您可能希望能够重新加载 fbpad 而无需手动重新启动它。以下代码在 tty1 中登录后启动 fbpad,如果您使用 Ctrl+Alt+q
退出 fbpad,它将重新加载它。
if [[ $(tty) = /dev/tty1 ]]; then while true; do fbpad >/dev/null 2>&1 done fi
将此代码放在您的 shellrc 文件的末尾。
标签颜色
标签列表的默认背景硬编码为白色,空标签的前景为黑色,完全占用的标签的前景为绿色(每个标签可能包含两个终端),未完全占用的标签的前景为蓝色。这种配色方案显然不适合所有人,但这可以通过以下补丁轻松解决
--- a/fbpad.c 2011-11-11 13:02:22.834825518 -0500 +++ b/fbpad.c 2011-11-11 13:04:07.016043271 -0500 @@ -110,7 +110,7 @@ static void showtags(void) { - int colors[] = {15, 4, 2}; + int colors[] = {8, 2, 9}; int c = 0; int r = pad_rows() - 1; int i; @@ -128,7 +128,7 @@ nt++; pad_put(i == ctag ? '(' : ' ', r, c++, FGCOLOR, BGCOLOR); if (TERMSNAP(i)) - pad_put(tags[i], r, c++, !nt ? BGCOLOR : colors[nt], 15); + pad_put(tags[i], r, c++, !nt ? 8 : colors[nt], BGCOLOR); else pad_put(tags[i], r, c++, colors[nt], BGCOLOR); pad_put(i == ctag ? ')' : ' ', r, c++, FGCOLOR, BGCOLOR);
要使用,请将 “8” 替换为您想要的空标签颜色(在两个实例中),将 “2” 替换为您想要的未完全占用标签的颜色,将 “9” 替换为您想要的完全占用标签的颜色,颜色 0-15 在 config.h
文件中定义。此补丁还将默认背景颜色设置为您的终端的背景颜色,作者认为这是一个更自然的选择。
请注意,第二个 “8” 是 fbpad 保存帧缓冲内容的标签的颜色。如果您选择将 TAGS_SAVED
定义为 TAGS
,那么您将希望您的默认前景色和保存标签的颜色相同,即在两个实例中都使用 “8”。否则,您可以将 TAGS_SAVED
定义为要保存的标签的连接字符串,并将第二个 “8” 更改为您希望指示已保存标签的颜色。作者本人为了方便起见保存了所有标签。
将补丁另存为 fbpad-tagcolor.diff
,将 'fbpad-tagcolor.diff'
添加到您的 source 数组,并将以下行添加到 PKGBUILD
中,在复制 config.h
文件的行之后
patch -p1 -i "${srcdir}/${_gitname}-tagcolor.diff" || return 1
字体
fbpad 的字体格式是 “tinyfont”,并且存在一个实用程序 fbpad-mkfn-gitAUR,它可以将 TTF 文件转换为 tinyfont 格式。您需要编辑 fbpad-mkfn 构建目录中的 config.h
文件,以指向您想要的字体的 TTF 文件。例如,如果字体文件 MonteCarloFixed.ttf
位于 $HOME/.fonts
目录中,您需要编辑 config.h
的第 10 行,使其看起来像下面这样
{"/home/archie/.fonts/MonteCarloFixed12.ttf", 6},
如果您的用户名是 “archie”,并且您希望创建的 Monte Carlo 字体大小为 6。删除您看到的除此行以外的其他字体行,除非您希望用另一种字体的字形来补充您的字体,在这种情况下,为您的其他 TTF 字体添加像上面这样的行。
然后,使用您的自定义设置重新构建并重新安装软件包。
安装 fbpad-mkfn 后,以下命令创建 tinyfont 文件
$ fbpad-mkfn > MyFont.tf
请记住编辑您的 config.h
以指向您保存 MyFont.tf
的目录。如果您的字体也有粗体,请重复编辑 fbpad-mkfn config.h
文件的过程,这次在 ft2tf config.h
中指定粗体 TTF 文件的位置,使用 makepkg 重新构建,并将最终的粗体 tinyfont 位置添加到您的 fbpad config.h
中。
另请注意,某些字体可能需要修改 WIDTHDIFF
和 HEIGHTDIFF
以分别获得适当的宽度和高度。
颜色支持
默认情况下,AUR 软件包安装了 fbpad 的自定义 terminfo,但是您需要添加
export TERM=fbpad-256
到您的 shellrc 中以利用 256 色支持。显然,不在您的默认 shell 中生成的命令(例如 EDITOR
和 MAIL
的命令)不会读取您的 shellrc 文件,因此您需要编辑 config.h
文件中的定义,以使 EDITOR
和 MAIL
的命令在父 shell 中运行。例如,本文的作者使用 zsh,将 MAIL
的默认命令从
#define MAIL "mailx"
更改为
#define MAIL "zsh -i -c mailx"
此外,为了使 ls
命令具有颜色,“fbpad-256” 需要添加到 ls
知道可以处理颜色的术语列表中。根据 README
,在您的 shell 中运行以下命令
$ dircolors --print-database | sed '/^TERM linux$/aTERM fbpad-256' >$HOME/.dircolors
并将 eval `dircolors ~/.dircolors`
添加到您的 shellrc 文件中,以便加载添加了 fbpad-256 术语的自定义 dircolors 文件。
用法
以下是如何在 fbpad 中实现一些通用桌面需求的示例。
复制文本
由于 fbpad 中的所有操作都是无鼠标的,因此要复制文本,用户可以使用 Alt+s
命令对屏幕上的所有文本进行 “屏幕截图”。这将把所有可见文本保存到文件 /tmp/scr
中。然后,如果您的 shell 支持使用 vim 编辑命令行(例如,zsh 中的 edit-command-line ZLE 函数),您可以将 /tmp/scr
文件作为 vim 中的新缓冲区打开,并使用其复制快捷键将所需的文本粘贴到您的原始缓冲区中。Emacs 用户可能可以采用类似的方案来复制文本。
观看 YouTube
如果有人使用 MPlayer,并将视频输出驱动程序设置为 fbdev2
,则可以使用 youtube-viewerAUR 在 fbpad 的命令行中搜索 YouTube 并使用 MPlayer 观看。或者,可以将以下脚本作为外部浏览器添加到命令行 Web 浏览器 w3m 中,并使用自己选择的媒体播放器从 YouTube 网站启动视频播放。下面的脚本使用了 fbff-gitAUR,这是一个轻量级的媒体播放器,也是由 fbpad 的作者编写的,以及 yturlAUR,这是一个简单的程序,它非常像 UNIX,其功能仅是将 YouTube URL 转换为可以直接观看的 URL。
youtube.sh
#!/bin/sh video=$(yturl $1) fbff -f $video > /dev/null 2>&1
将文件保存在您的 PATH
中,并通过打开 w3m,点击 o
键编辑选项,并在 “外部程序设置” 下编辑 “外部浏览器” 字段,在字段中输入 “youtube.sh” 将其作为外部浏览器添加到 w3m 中。点击 “OK”,就完成了。现在,当想要观看视频时,在 YouTube 打开的情况下,点击 M
键,视频将立即开始在 fbff 中流式传输。
推荐程序
以下是一些增强基于帧缓冲的桌面可用性的程序推荐
- dvtm - 动态虚拟终端管理器(类似于 dwm,但用于控制台)
- fbcatAUR - 帧缓冲屏幕截图抓取器
- fbff-gitAUR - 基于 ffmpeg 的媒体播放器
- fbpdf-gitAUR - 基于 MuPDF 的 PDF 查看器,可选支持 DjVu 或通过 poppler 渲染
- fbvAUR - 图像查看器
- GNU Screen - 终端复用器
- w3m - 命令行 Web 浏览器
外部链接
- fbpdf、fbpad 和 fbff - 最小化帧缓冲软件套件
- litcave,Ali Gholami Rudi 的软件项目主页