Kmscon

Last updated
kmscon
Developer(s) David Herrmann
Initial releaseMarch 27, 2012 (2012-03-27) [1]
Final release
8 / October 29, 2013;9 years ago (2013-10-29)
Written in C
Operating system Linux
Type System console
License ISC license
Website www.freedesktop.org/wiki/Software/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 stopped in March 2015. There was a successor project called systemd-consoled, but this project was also later dropped in July 2015. [2]

Contents

Features

Kmscon supports printing the full set of Unicode glyphs and is not limited by console encoding as the Linux console. [3] 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. [4]

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. [5]

Multiseat support

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/systemd-consoled 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:

Development

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. [3]

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. [6] It was amended with wlterm, an example Wayland terminal emulator. [7]

See also

Related Research Articles

<span class="mw-page-title-main">Terminal emulator</span> Program that emulates a video terminal

A terminal emulator, or terminal application, is a computer program that emulates a video terminal within some other display architecture. Though typically synonymous with a shell or text terminal, the term terminal covers all remote terminals, including graphical interfaces. A terminal emulator inside a graphical user interface is often called a terminal window.

<span class="mw-page-title-main">System console</span> Interface used to control computers or operating systems

One meaning of system console, computer console, root console, operator's console, or simply console is the text entry and display device for system administration messages, particularly those from the BIOS or boot loader, the kernel, from the init system and from the system logger. It is a physical device consisting of a keyboard and a screen, and traditionally is a text terminal, but may also be a graphical terminal. System consoles are generalized to computer terminals, which are abstracted respectively by virtual consoles and terminal emulators. Today communication with system consoles is generally done abstractly, via the standard streams, but there may be system-specific interfaces, for example those used by the system kernel.

freedesktop.org (fd.o) is a project to work on interoperability and shared base technology for free-software desktop environments for the X Window System (X11) and Wayland on Linux and other Unix-like operating systems. It was founded by Havoc Pennington, a GNOME developer working for Red Hat in March 2000. Some of the project's servers are hosted by Portland State University, sponsored by Hewlett-Packard, Intel, and Google.

Fast user switching is a feature of a multi-user operating system which allows users to switch between user accounts without quitting applications and logging out.

X.Org Server is the free and open-source implementation of the X Window System display server stewarded by the X.Org Foundation.

udev is a device manager for the Linux kernel. As the successor of devfsd and hotplug, udev primarily manages device nodes in the /dev directory. At the same time, udev also handles all user space events raised when hardware devices are added into the system or removed from it, including firmware loading as required by certain devices.

The Direct Rendering Manager (DRM) is a subsystem of the Linux kernel responsible for interfacing with GPUs of modern video cards. DRM exposes an API that user-space programs can use to send commands and data to the GPU and perform operations such as configuring the mode setting of the display. DRM was first developed as the kernel-space component of the X Server Direct Rendering Infrastructure, but since then it has been used by other graphic stack alternatives such as Wayland and standalone applications and libraries such as SDL2 and Kodi.

Mesa, also called Mesa3D and The Mesa 3D Graphics Library, is an open source implementation of OpenGL, Vulkan, and other graphics API specifications. Mesa translates these specifications to vendor-specific graphics hardware drivers.

<span class="mw-page-title-main">Linux kernel interfaces</span> An overview and comparison of the Linux kernal APIs and ABIs.

The Linux kernel provides several interfaces to user-space applications that are used for different purposes and that have different properties by design. There are two types of application programming interface (API) in the Linux kernel that are not to be confused: the "kernel–user space" API and the "kernel internal" API.

<span class="mw-page-title-main">Free and open-source graphics device driver</span> Software that controls computer-graphics hardware

A free and open-source graphics device driver is a software stack which controls computer-graphics hardware and supports graphics-rendering application programming interfaces (APIs) and is released under a free and open-source software license. Graphics device drivers are written for specific hardware to work within a specific operating system kernel and to support a range of APIs used by applications to access the graphics hardware. They may also control output to the display if the display driver is part of the graphics hardware. Most free and open-source graphics device drivers are developed by the Mesa project. The driver is made up of a compiler, a rendering API, and software which manages access to the graphics hardware.

evdev

evdev is a generic input event interface in the Linux kernel and FreeBSD. It generalizes raw input events from device drivers and makes them available through character devices in the /dev/input/ directory.

<span class="mw-page-title-main">Virtual console</span> Computer user interface

A virtual console (VC) – also known as a virtual terminal (VT) – is a conceptual combination of the keyboard and display for a computer user interface. It is a feature of some Unix-like operating systems such as Linux, BSD, illumos, UnixWare, and macOS in which the system console of the computer can be used to switch between multiple virtual consoles to access unrelated user interfaces. Virtual consoles date back at least to Xenix and Concurrent CP/M in the 1980s.

<span class="mw-page-title-main">Multiseat configuration</span>

A multiseat, multi-station or multiterminal system is a single computer which supports multiple independent local users at the same time.

General Graphics Interface (GGI) was a project that aimed to develop a reliable, stable and fast computer graphics system that works everywhere. The intent was to allow for any program using GGI to run on any computing platform supported by it, requiring at most a recompilation. GGI is free and open-source software, subject to the requirements of the MIT License.

<span class="mw-page-title-main">Mode setting</span>

Mode setting is a software operation that activates a display mode for a computer's display controller by using VESA BIOS Extensions or UEFI Graphics extensions.

<span class="mw-page-title-main">Wayland (protocol)</span> Display system intended to replace X11

Wayland is a communication protocol that specifies the communication between a display server and its clients, as well as a C library implementation of that protocol. A display server using the Wayland protocol is called a Wayland compositor, because it additionally performs the task of a compositing window manager.

<span class="mw-page-title-main">Linux console</span> Console of the Linux kernel

The Linux console is a system console internal to the Linux kernel. A system console is the device which receives all kernel messages and warnings and which allows logins in single user mode. The Linux console provides a way for the kernel and other processes to send text output to the user, and to receive text input from the user. The user typically enters text with a computer keyboard and reads the output text on a computer monitor. The Linux kernel supports virtual consoles – consoles that are logically separate, but which access the same physical keyboard and display. The Linux console are implemented by the VT subsystem of the Linux kernel, and do not rely on any user space software. This is in contrast to a terminal emulator, which is a user space process that emulates a terminal, and is typically used in a graphical display environment.

systemd Suite of system components for Linux

Systemd is a software suite that provides an array of system components for Linux operating systems. The main aim is to unify service configuration and behavior across Linux distributions. Its primary component is a "system and service manager" – an init system used to bootstrap user space and manage user processes. It also provides replacements for various daemons and utilities, including device management, login management, network connection management, and event logging. The name systemd adheres to the Unix convention of naming daemons by appending the letter d. It also plays on the term "System D", which refers to a person's ability to adapt quickly and improvise to solve problems.

<span class="mw-page-title-main">Lennart Poettering</span> German software engineer

Lennart Poettering is a German software engineer working for Microsoft and the original author of PulseAudio, Avahi and systemd.

systemd-boot UEFI boot manager

systemd-boot is a free and open-source boot manager created by obsoleting the gummiboot project and merging it into systemd in May 2015.

References

  1. Herrmann, David (March 27, 2012), "[ANNOUNCE] kmscon: Lazy-web's DRM based terminal emulator", dri-devel mailing list, freedesktop.org , retrieved April 2, 2012
  2. Herrmann, David (July 29, 2015), "GitHub Systemd - terminal: drop unfinished code", Systemd , GitHub , retrieved September 22, 2016
  3. 1 2 Larabel, Michael (March 28, 2012), "KMSCON: A DRM-Based Terminal Emulator", Phoronix , retrieved April 2, 2012
  4. Larabel, Michael (August 18, 2012), "KMSCON Is Getting Ready To Kick The Kernel Console", Phoronix , retrieved July 5, 2012
  5. Herrmann, David (December 10, 2012), KMSCON Introduction , retrieved May 8, 2013
  6. Herrmann, David (October 29, 2013), "[ANNOUNCE] libtsm-3 release", kmscon-devel mailing list, freedesktop.org , retrieved July 5, 2012
  7. libtsm, freedesktop.org , retrieved July 5, 2012