== Requirements ==
Kmscon requires the following software:
- - udev
- - mesa with:
- - EGL library
- - gbm library
- - GL library
- - pango with:
- - glib
- - cairo
- - pango
+ - libdrm: accessing the kernel graphics layer
+ - mesa: providing an OpenGL implementation (must be compiled with EGL, gbm
+ and GL libraries)
+ - udev: providing input, video, etc. hotplug support
+ - xproto (build time dependency): definition of keysymbols (TODO: remove it)
+ - libxkbcommon: keyboard handling (optional but strongly recommended)
+ Without libxkbcommon, basic US-ASCII input is provided.
+ - glib: only for Unicode handling (TODO: remove it)
+ - One of:
+ - freetype2: drawing generic text
+ - pango: drawing text with pango (use --enable-pango)
+ Pango requires: glib, cairo, pangocairo, pango and freetype2
== Install ==
To compile the kmscon binary, run the standard autotools commands:
- $ ./configure [--enable-debug]
+ $ ./configure [--enable-debug] [--enable-pango]
$ make
- $ make install
+ $ make install (TODO: this is currently not supported)
To compile the test applications, run:
$ make check
+== Running ==
+ To get usage information, run:
+ $ ./kmscon --help
+ You can then run kmscon with:
+ $ ./kmscon [options] --switchvt
+ The --switchvt option will make your machine switch the active VT directly to
+ kmscon after starting it.
+
== License ==
This software is licensed under the terms of the MIT license. Please see
./COPYING for further information.
== Code Base ==
The kmscon code is split into several independent subsystems:
- - output:
+ - 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.
- - evdev:
+ - 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.