I recently dug up my HP Chromebook 11 again
and wanted to install a BSD or Linux on it
to use as a lightweight
and distraction-free development environment.
I used splat to install Arch Linux ARM
which worked flawlessly.
To the distraction-free end,
I decided not to install X.Org
and stick to the console.
It’s not the most comfortable
environment by default,
but it can actually be configured
in many of the same ways
as graphical terminal emulators!
let’s get an annoyance out of the way.
The kernel likes to log message to the console,
for example whenever the wifi card does a thing.
Those messages badly interfere
with curses applications.
This would normally be solved
quiet to the kernel command line,
but in the Chromebook’s case
I’m not sure how to control that.
quiet option does
is set the
console_loglevel is set to 7
for debug logging,
quiet sets it to 4
for warning logging.
The parameter can be set manually
and made permanent in
sysctl kernel.printk='4 5 1 4'
echo 'kernel.printk = 4 5 1 4' > /etc/sysctl.d/printk.conf
Bitmap fonts for the console
can be found in
and can be loaded
A simple shell for loop can be used
to try each font.
-16 option to
selects the 16-pixel high variant
in files which contain several sizes:
for font in *.gz; do
setfont -16 "$font"
Most of the fonts are DOS-nostalgic,
but there are a few quirky ones
and a nice version of Terminus
A few extras might be packaged
in your distribution of choice.
The console font can be set permanently
echo 'FONT=Lat2-Terminus16' >> /etc/vconsole.conf
The palette used by the console
for each of the 16 terminal colours
can be set using escape sequences
The relevant sequence is
ESC ] P nrrggbb,
which sets colour
n to a hex RGB value.
which sets Gruvbox colours
then clears the screen.
the palette would only apply
to newly printed characters.
The easiest way to make these colours permanent
is to add the escape sequences to
which gets printed before the login prompt
on every TTY:
./console.sh > issue.new
cat /etc/issue >> issue.new
sudo install --mode 644 issue.new /etc/issue
the hardware cursor blinks,
which can be annoying.
It can be disabled
It can be made permanent
by writing a file in
echo 'w /sys/class/graphics/fbcon/cursor_blink - - - - 0' > /etc/tmpfiles.d/cursor_blink.conf
The default cursor shape
is an underline,
but can be changed to a block
with an escape sequence.
The terminfo database
defines the capabilities
and “very visible” cursor,
These are loosely defined,
but “very visible” on the console
results in a block cursor.
prints escape sequences
from the terminfo database.
tput cvvis directly on a console
sets the cursor to block temporarily,
but curses applications reset it with
cvvis doesn’t do anything at all.
tmux has an option
for overriding terminfo,
which can be used to set
to the sequence for
set -g terminal-overrides "linux:cnorm=\e[?25h\e[?8c"
how the raw input
from the keyboard
is translated to logical key presses.
Similar to fonts,
default layouts are in
and can be loaded with the
keymaps(5) manual page,
keymaps can inherit from each other
This makes it easy to add overrides,
to the default US QWERTY layout
can be used to observe
the raw keyboard input.
The layout I use
has caps lock mapped to escape
and many keys
swapped with their shifted counterparts.
custom.map file looks like this:
keycode 2 = exclam one
keycode 3 = at two
keycode 4 = numbersign three
keycode 100 = Compose
keycode 125 = Escape
I also mapped right alt
to compose key,
which I didn’t know
was supported on the console.
The default sequences are listed
and more can be added
in keymap files.
In the same way as the font,
the keymap can be set permanently
echo 'KEYMAP=/home/june/Code/dotfiles/custom.map' >> /etc/vconsole.conf
As a final note,
these are the applications
I use on the console: