| kmscon | |
|---|---|
| Developer | David Herrmann |
| Initial release | 27 March 2012 (2012-03-27)[1] |
| Stable release | 9.3.0[2] |
| Written in | C |
| Operating system | Linux |
| Type | System console |
| License | ISC license |
| Website | www |
| Repository | github |
Kmscon is avirtual console that runs inuserspace which David Hermann created to replace theLinux console, a terminal built into theLinux kernel. Kmscon uses theKMS driver for its output, it ismultiseat-capable, and supports internationalized keyboard input andUTF-8 terminal output. The input support is implemented usingX keyboard extension (XKB). Development of Kmscon was halted in March 2015. The project officially resumed in 2025, adopting the codebase from a fork maintained by Aetf since 2011.[3] There was a successor project calledsystemd-consoled but that project was later dropped in July 2015.[4]
Kmscon supports printing the full set ofUnicodeglyphs and is not limited by console encoding as the Linux console.[5] While the only hard dependency isudev, kmscon can optionally be compiled to useMesa forhardware acceleration of the console, and thepango library for improved font rendering.[6]
The adoption ofXKB for input allows kmscon to accept the full range of availablekeyboard layouts for theX.Org Server andWayland compositors for input and makes it possible to use the same layout both in graphical environment and in terminal.[7]
The VT system in the Linux kernel dates to 1993, and does not implement out-of-the-box multiseat support. It supports up to 63 VTs, but only one VT can be active at any given time. This necessitates additional steps to configure multiseat support. kmscon will[clarification needed] enable multiseatout-of-the-box.
If one seat's display server is running on VT 7 and another seat's display server is running on VT 8, then only one of these two seats can be used at a time. To use the other seat, a VT switch must be initiated.
To make all seats usable at the same time, there are a few options:
-sharevtsvt7 for user 1 and-novtswitch for all other users.In 2011, Jesse Barnes wrote in his blog about the possible userspaceDRM-based implementation of the virtual terminal, that would dissolve the need for theLinux framebuffer andvirtual terminal (VT) subsystems in the Linux kernel. Motivated by this blog post, David Herrmann implemented the basic functionality of virtual terminal.[5]
In October 2013, terminal emulator state machine (libtsm) library, a state machine forDEC VT100–VT520 compatible terminal emulators, was split out of kmscon and made available separately.[8] It was amended withwlterm, an exampleWayland terminal emulator.[9]
This project was maintained in Aetf's fork for 11 years, before coming back here in 2025