KMSCON
From the project's git repository:
- Kmscon is a simple terminal emulator based on linux kernel mode setting. It is an attempt to replace the in-kernel VT implementation with a userspace console.
Features
Kmscon can function as a drop-in replacement for the in-kernel linux-console. Features include:
- Full vt220 to vt510 implementation.
- Full internationalization support:
- Kmscon supports printing full Unicode glyphs, including the CJK ones.
- Kmscon provides internationalized keyboard handling through libxkbcommon, thus allowing it to use the full range of keyboard layouts supported in X keyboard.
- Hardware accelerated rendering.
- Multi-seat capability.
pam_securetty
module by removing or commenting out the corresponding line in /etc/pam.d/login
. Installation
Despite its name, KMS is not a hard requirement for kmscon. Kmscon supports the following video backends: fbdev (Linux fbdev video backend), drm2d (Linux DRM software-rendering backend), drm3d (Linux DRM hardware-rendering backend). Make sure one of them is available on your system.
Install the kmscon package or the kmscon-gitAUR package for a development version from the AUR. Alternatively, install kmscon-patched-gitAUR. The patched version, along with its patched dependency (libtsm-patched-gitAUR), includes fixes and improvements (like 24-bit color support) that the canonical version (which has not been updated since 2014) does not.
Normally, there is a special systemd configuration for tty1. To be conservative, you can continue to run the traditional agetty on tty1 and only run kmscon on all the other virtual terminals. Or you can run kmscon on both tty1 and the other VTs.
To enable kmscon on tty1, disable [email protected]
and enable [email protected]
.
To enable kmscon on all virtual terminals, run:
# ln -s /usr/lib/systemd/system/kmsconvt\@.service /etc/systemd/system/autovt\@.service
This will make systemd start kmscon instead of agetty on each VT. More precisely, this will make systemd-logind use [email protected]
instead of [email protected]
for new VTs. Additionally, all other systemd units that use [email protected]
will not be affected by this change.
If kmscon cannot start for whatever reason, this unit will cause [email protected]
to be started instead. Furthermore, if no VTs are available, this unit will not start anything.
CJK support
Kmscon supports rendering CJK characters through the default font engine pango. However, fontconfig has to be globally configured to map the monospace font alias to proper CJK fonts. For Chinese users, the following template is provided and proved to result in satisfactory Chinese characters rendering:
/etc/fonts/conf.d/99-kmscon.conf
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <match> <test name="family"><string>monospace</string></test> <edit name="family" mode="prepend" binding="strong"> <string>DejaVu Sans Mono</string> <string>WenQuanYi Micro Hei Mono</string> </edit> </match> </fontconfig>
Alternatively, we can add the following line to /etc/kmscon/kmscon.conf
for globally configuring kmscon using the fonts:
/etc/kmscon/kmscon.conf
font-name=DejaVu Sans Mono, WenQuanYi Micro Hei Mono font-size=14
See kmscon(1).
You need to have ttf-dejavu and wqy-microhei, both available from the official repositories, installed.
Troubleshooting
Problems with switching between Xorg and kmscon
You may want to add hwaccel
to /etc/kmscon/kmscon.conf
if you have problems with switching between Xorg and kmscon. The file and folder are not part of the package and therefore have to be created manually. Another possibility would be editing the systemd service file.
No audio control
As version 7, if you cannot control the audio, add your user to the audio
user group. Be aware of the shortcomings of this choice.
Vim does not clear terminal output
Vim might open without clearing the terminal output, it is still possible to edit the file but the text will not be visible until it is changed. As a workaround, try setting the environment variable TERM=vt220
. Alternatively, another vim-like editor like vi or Neovim might work.
TERM
is set to vt220
.Automatic login
It is possible to login the user automatically without asking for password by adding this to /etc/kmscon/kmscon.conf
# Modify this command to do what you need # Example: Login an user asking for user and password login=/bin/bash --login # Example: Login an user without asking for password login=/bin/bash -c su <your_username>
HiDPI support
The only thing you have to do is to set the font size in /etc/kmscon/kmscon.conf