Fbterm

Related articles
KMSCON
Fbterm
(
F
rame
b
uffer
term
inal emulator) is standalone replacement of Linux kernel terminal that can function outside of graphical environments. It was previously hosted at Google Code,
https://code.google.com/archive/p/fbterm/
, and it is since 2020 maintained by Debian.
It provides support for fontconfig (and draws text with freetype2, same as Qt/Gtk based GUI applications), up to 10 windows with a scroll-back history for each, auto-detect text encoding with current locale, double width scripts like Chinese, Japanese and more: see
https://salsa.debian.org/debian/fbterm/-/blob/master/README
.
Installation
Install
the
fbterm
AUR
package. Pay attention to the instructions and minor changes by the included patches.
After installation, to be able to use fbterm as a non-root user add yourself to the
video
user group
.
To enable keyboard shortcuts for non-root users, use
setcap
to give
fbterm
the
cap_sys_tty_config
capability.
# setcap cap_sys_tty_config+ep /usr/bin/fbterm
Customization
Configuration file
The user configuration file is located in
$XDG_CONFIG_HOME/fbterm/fbtermrc
. The global
/etc/fbterm/fbtermrc.example
is well commented and serves as a good starting point.
Fonts
Fbterm uses
fontconfig
for a list of fonts, trying each sequentially until it is able to render the characters.
To change the fonts that are used, use the
--font-names
option to select favorites from the list given by
fc-list
.
Input method support
Fbterm supports diverse
input methods
by acting as a client for an independent input method framework server. Several such programs are available, see
Internationalization#Input method
.
Tips and tricks
As a non-graphical environment
In the late 2010's, developments in the Linux ecosystem and its framebuffer capabilities, together with cheap and powerful hardware (standard mainstream graphical cards) made things that were difficult in the past possible, and without too much customization or hacking:
256 colorschemes support
display of CJK web pages and documents
access to a much wider variety of TTF fonts
In addition to the modern capabilities of the framebuffer, for example:
Watching movies with
mpv
(e.g. with
--vo=gpu
)
Screenshots and screencasts with (ex: fbgrab, fbdump)
PDF and other complex documents display with (ex: fbpdf, jfbview, fbgs)
Previewing pictures in the ranger file manager (w3mimgdisplay support)
Running some heavy GUI QT Platform applications (ex: qutebrowser, maps)
Fbterm with other modern text-centric tools make an environment without the concept of windows possible. Combined usage of fbterm with a terminal multiplexer like
tmux
allows for a very powerful desktop alternative mimicking the use of a window manager. Some examples of this advanced usage from Arch users:
https://github.com/xlucn/dotfiles
- Examples of a dwm alike desktop with fbterm and tmux
https://github.com/xlucn/fbterm
- Some patch examples
https://github.com/ivanp7/sweet-home
- Custom wallpapers, use with tmux and fbi
Background image
To use a background image, Fbterm can be set to take a screen shot of the frame buffer device when it starts.
The following script (using the
fbv
AUR
image viewer) is recommended in the man page:
#!/bin/bash
# fbterm-bi: a wrapper script to enable background image with fbterm
# usage: fbterm-bi /path/to/image fbterm-options
echo -ne "\e[?25l" # hide cursor
fbv -ciuker "$1" << EOF
q
EOF
shift
export FBTERM_BACKGROUND_IMAGE=1
exec /bin/fbterm "$@"
White font color
By default, fbterm displays the "white" text as a gray color, even using the
-f 7
switch.
It's possible to get a real white color by doing an echo once inside fbterm, like this:
echo -en "\e]P7ffffff"