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.
+console. See kmscon(1) man-page for usage information.
+
+Website:
+ http://www.freedesktop.org/wiki/Software/kmscon
== Requirements ==
Kmscon requires the following software:
- - libudev: providing input, video, etc. device hotplug support
+ - libtsm: terminal emulator state machine
+ http://www.freedesktop.org/wiki/Software/kmscon/libtsm/
+ - libudev: providing input, video, etc. device hotplug support (>=v172)
+ http://www.freedesktop.org/wiki/Software/systemd/
+ - libxkbcommon: providing internationalized keyboard handling
+ http://xkbcommon.org/
+ - libdrm: graphics access to DRM/KMS subsystem
+ - linux-headers: linux kernel headers for ABI definitions
Everything else is optional:
- OpenGLES2: For accelerated video output via OpenGLESv2 the following must
be installed: libdrm, libgbm, egl, glesv2 (i.e., mesa)
- By default a very limited built-in keyboard handling is used. To get other
- keyboard layouts working, the following is required:
- - libxkbcommon: keyboard handling (optional but strongly recommended)
- Without libxkbcommon, basic US-ASCII input is provided.
- libxkbcommon has no public release, yet, but is available on freedesktop.org.
- Use "--disable-xkbcommon" if you have problems due to compile-errors.
-
For font handling the following is required:
- 8x16: The 8x16 font is a static built-in font which does not require
external dependencies.
- - freetype2: The freetype2 font uses libfreetype2 and libfontconfig to
- provide a very basic font backend.
+ - unifont: Static font without external dependencies.
- pango: drawing text with pango
Pango requires: glib, pango, fontconfig, freetype2 and more
For multi-seat support you need the following packages:
- systemd: Actually only the systemd-logind daemon and library is required.
+== Download ==
+
+Released tarballs can be found at:
+ http://www.freedesktop.org/software/kmscon/releases
+
== Install ==
To compile the kmscon binary, run the standard autotools commands:
- $ ./autogen.sh (you need this only when building from git directly)
- $ ./configure [--enable-debug] (debug-mode is strongly recommended)
+ $ test -f ./configure || NOCONFIGURE=1 ./autogen.sh
+ $ ./configure
$ make
- $ make install (TODO: this is currently not supported)
+ $ make install
To compile the test applications, run:
$ make check
If you want only a very basic kmscon program without any major dependencies,
use:
- $ ./configure --disable-debug --disable-drm --disable-xkbcommon --disable-systemd --disable-pango --disable-freetype2
+ $ ./configure --with-video=fbdev,drm2d --with-renderers= --with-fonts=unifont --disable-multi-seat --with-sessions=dummy,terminal
However, you will loose a lot of functionality by dropping all dependencies.
The following configure options are available. If build-time dependencies
cannot be satisfied, an option is automatically turned off, except if you
- explicitely enable it via command line:
- --enable-systemd: This requires the systemd-logind library to provide
- multi-seat support for kmscon. [default: on]
- --enable-udev: This requires libudev for hotplugging support. This is
- currently mandatory and cannot be disabled. [default: on]
- --enable-fbdev: This adds fbdev video output support. [default: on]
- --enable-drm: This adds DRM video output support. [default: on]
- --enable-gles2: This adds OpenGL hardware accelerated font rendering
- [default: on]
- --enable-xkbcommon: Use xkbcommon for internationalized keyboard handling.
- [default: on]
- --enable-f8x16: The 8x16 font is a static built-in fallback font
- [default: on]
- --enable-freetype2: Uses freetype2 and fontconfig as font-backend.
- [default: on]
- --enable-pango: Uses pango as font-backend. [default: on]
- --enable-bblit: Use simply 2D bit-blitting as renderering fallback
- [default: on]
- --enable-debug: Enable debug mode [default: off]
- --enable-optimizations: Use GCC code optimizations [default: on]
+ explicitly enable it via command line:
+ --enable-multi-seat: This requires the systemd-logind library to provide
+ multi-seat support for kmscon. [default: on]
+ --enable-debug: Enable debug mode/messages [default: on]
+ --enable-optimizations: Enable code optimizations [default: on]
+
+ Backends for several subsystems in kmscon can be selected with the following
+ options (all of them take a comma-separated list of backend names):
+ --with-video: Video backens. Available backends are:
+ - fbdev: Linux fbdev video backend
+ - drm2d: Linux DRM software-rendering backend
+ - drm3d: Linux DRM hardware-rendering backend
+ Default is: fbdev,drm2d,drm3d
+ --with-fonts: Font renderers. Available backends are:
+ - unifont: Static built-in non-scalable font (Unicode Unifont)
+ - pango: Pango based scalable font renderer
+ Default is: unifont,pango
+ The 8x16 backend is always built-in.
+ --with-renderers: Console rendering backends. Available are:
+ - bbulk: Simple 2D software-renderer (bulk-mode)
+ - gltex: OpenGLESv2 accelerated renderer
+ - pixman: pixman based renderer
+ Default is: bbulk,gltex
+ The bblit backend is always built-in.
+ --with-sessions: Built in sessions. Available sessions are:
+ - dummy: Dummy fallback session
+ - terminal: Terminal-emulator sessions
== Running ==
You can then run kmscon with:
$ ./kmscon [options]
- For debug output use "--debug". For verbose output use "--verbose". If you
- didn't compile DRM support then you can use "--fbdev" to make kmscon select
- available framebuffer devices.
-
+ For debug output use "--debug". For verbose output use "--verbose".
With "--xkb-layout=<lang>" you can switch the keyboard layout.
+ See "man kmscon" / kmscon(1) for more information.
== License ==
- This software is licensed under the terms of the MIT license. Please see
+ This software is licensed under the terms of an MIT-like license. Please see
./COPYING for further information.
== FAQ ==
- Please see http://github.com/dvdhrm/kmscon/wiki
+ Please see: http://www.freedesktop.org/wiki/Software/kmscon
== Contact ==
This software is maintained by:
- David Herrmann <dh.herrmann@googlemail.com>
+ David Herrmann <dh.herrmann@gmail.com>
If you have any questions, do not hesitate to contact one of the maintainers.
-
-== Code Base ==
-
- The kmscon code is split into several independent subsystems:
- - uterm:
- This code manages the KMS/DRI output and provides OpenGL framebuffers.
- - console:
- This draws the text on the screen and provides an API for any terminal
- emulator to visualize its contents.
- - eloop:
- Main loop implementation.
- - log:
- Log file handling.
- - unicode:
- Provides basic Unicode handling.
- - font:
- Font loading, caching and drawing operations.
- - input:
- All linux input events are captured here and converted to Unicode
- characters for input handling.
- - vt:
- The linux VT subsystem integration. This allows to run the application in
- a classic linux VT like X does.
- - vte:
- The terminal emulator library.
- - terminal:
- Connects the console, output, input and vte handling into a real terminal.
- - main:
- This connects all subsystems into a usable console application.