You can install
kmscon which implements kernel mode setting graphics handling in the console. Its developer - David Herrman - is the party in large part responsible for
systemd's multiseat session handling, and this functionality is provided in his own
kmscon package. He's also largely responsible for
wlterm and similar multiseeat session handling in
wayland (which, by the way, might be worth looking into if you find
X is too heavy)...
With this package you get x-fonts in the virtual-terminals, you get ptys and session-switching in same - and all of this is provided by the same service controlling the virtual terminal, because you launch
kmscon instead of a
getty, for instance.
Any terminal multiplexers such as
tmux are fully compatible of course - they're a couple steps below this in terms of control.
kmscon just amounts to a much saner vt config than you'll get otherwise - and it provides as many sessions as you wish.
From the tarball's README:
= KMSCON =
kmscon is a simple terminal emulator based on linux kernel mode setting (KMS). It is an attempt to replace the in-kernel VT implementation with a userspace console. See
man 1 kmscon for usage information.
== Requirements ==
Kmscon requires the following software:
libtsm: terminal emulator state machine
libudev: providing input, video, etc. device hotplug support (>=v172)
libxkbcommon: providing internationalized keyboard handling
libdrm: graphics access to DRM/KMS subsystem
linux-headers: linux kernel headers for ABI definitions
Everything else is optional:
For video output at least one of the following is required:
fbdev: For framebuffer video output the kernel headers must be installed and located in the default include path.
DRM: For unaccelerated drm output the
libdrm library must be installed and accessible via
OpenGLES2: For accelerated video output via OpenGLESv2 the following must be installed:
glesv2 (i.e., mesa)
For font handling the following is required:
8x16: The 8x16 font is a static built-in font which does not require external dependencies.
unifont: Static font without external dependencies.
pango: drawing text with pango
- Pango requires:
freetype2 and more
For multi-seat support you need the following packages:
systemd: Actually only the
systemd-logind daemon and library is required.