kmscon
DeveloperDavid Herrmann
Release27 March 2012; 14 years ago (2012-03-27)[1]
Stable release
10.0.0[2] Edit this on Wikidata / 21 May 2026; 27 days ago (21 May 2026)
Written inC
Operating systemLinux
TypeSystem console
LicenseISC license
Websitewww.freedesktop.org/wiki/Software/kmscon
Repositorygithub.com/kmscon/kmscon

Kmscon is a virtual console that runs in userspace which David Hermann created to replace the Linux console, a terminal built into the Linux kernel. Kmscon uses the KMS driver for its output, it is multiseat-capable, and supports internationalized keyboard input and UTF-8 terminal output. The input support is implemented using X 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 called systemd-consoled but that project was later dropped in July 2015.[4]

Features

edit

Kmscon supports printing the full set of Unicode glyphs and is not limited by console encoding as the Linux console.[5] While the only hard dependency is udev, kmscon can optionally be compiled to use Mesa for hardware acceleration of the console, and the pango library for improved font rendering.[6]

The adoption of XKB for input allows kmscon to accept the full range of available keyboard layouts for the X.Org Server and Wayland compositors for input and makes it possible to use the same layout both in graphical environment and in terminal.[7]

It has mouse support including select/copy/paste and scrolling.[8][9]

Multiseat support

edit

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 multiseat out-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:

  • Associate all display servers with the same VT: any user can switch VTs and in that case all users switch to the new VT. This makes VT switching (and thus fast user switching) impractical. X.Org Server command-line option -sharevts
  • Don't associate any display server with a VT: fast user switching is impossible in this case. Text-based console logins are only possible if an input and display device are reserved for this purpose.
  • Associate only one of the display servers with a VT: the other display servers can't do VT switching, but the display server associated with a VT can. VT switching on that one seat won't affect the other seats. This is the approach favored and assumed by systemd. command-line option vt7 for user 1 and -novtswitch for all other users.

Development

edit

In 2011, Jesse Barnes wrote in his blog about the possible userspace DRM-based implementation of the virtual terminal, that would dissolve the need for the Linux framebuffer and virtual 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 for DEC VT100VT520 compatible terminal emulators, was split out of kmscon and made available separately.[10] It was amended with wlterm, an example Wayland terminal emulator.[11]

See also

edit

References

edit
  1. ^ Herrmann, David (27 March 2012). "[ANNOUNCE] kmscon: Lazy-web's DRM based terminal emulator". dri-devel (Mailing list). freedesktop.org. Retrieved 2 April 2012.
  2. ^ "v10.0.0". 21 May 2026. Retrieved 21 May 2026.
  3. ^ kmscon/kmscon, kmscon, 4 December 2025, retrieved 4 December 2025, This project was maintained in Aetf's fork for 11 years, before coming back here in 2025
  4. ^ Herrmann, David (29 July 2015). "terminal: drop unfinished code". GitHub. Retrieved 22 September 2016.
  5. ^ a b Larabel, Michael (28 March 2012), "KMSCON: A DRM-Based Terminal Emulator", Phoronix, retrieved 2 April 2012
  6. ^ Larabel, Michael (18 August 2012), "KMSCON Is Getting Ready To Kick The Kernel Console", Phoronix, retrieved 5 July 2012
  7. ^ Herrmann, David (10 December 2012). "KMSCON Introduction". dvdhrm.wordpress.com. Retrieved 8 May 2013.
  8. ^ kmscon. "Release v9.2.0 · kmscon/kmscon". GitHub. Retrieved 16 March 2026.
  9. ^ "Changes/UseKmsconVTConsole - Fedora Project Wiki". fedoraproject.org. Retrieved 16 March 2026.
  10. ^ Herrmann, David (29 October 2013). "[ANNOUNCE] libtsm-3 release". kmscon-devel (Mailing list). freedesktop.org. Retrieved 5 July 2012.
  11. ^ libtsm, freedesktop.org, retrieved 5 July 2012

📚 Artikel Terkait di Wikipedia

Linux console

2013-09-03. David Herrmann (2012-08-11). "KMSCON: Linux KMS/DRM based Virtual Console". Michael Larabel (2013-03-28). "KMSCON: A DRM-Based Terminal Emulator".

Rust for Linux

FUSE hugetlbfs pipefs procfs securityfs sockfs sysfs tmpfs systemd udev Kmscon binfmt_misc Wrapper libraries C standard library glibc uClibc Bionic libhybris

Freedesktop.org

consistent cross-operating system layer; deprecated and replaced by udev kmscon, a userspace virtual console to replace the Linux console; uses the KMS

X keyboard extension

the core protocol by default. XKB is also used by Wayland compositors and kmscon. XKB allows a modifier to be locked or latched, other than being in its

Wayland (protocol)

virtual keyboards used as an input method framework that run under Wayland. kmscon supports Wayland with wlterm. Mesa has Wayland support integrated. Eclipse

Direct Rendering Manager

by several Wayland compositors, including Weston reference compositor. kmscon is a virtual console implementation that runs in user space using DRM KMS

Mode setting

the nouveau driver, it is required. Wayland compositors (e.g. Weston) and kmscon depend on kernel mode setting via ioctl. FreeBSD has support for both kernel-based

Fast user switching

simultaneously. The most straight forward solution to elegant multi-seat are kmscon/systemd-consoled in combination with systemd-logind. The available desktop