2 Kmscon is a simple terminal emulator based on linux kernel mode setting (KMS).
3 It is an attempt to replace the in-kernel VT implementation with a userspace
7 Kmscon requires the following software:
8 - libdrm: accessing the kernel graphics layer
9 - mesa: providing an OpenGL implementation (must be compiled with EGL, gbm
11 - udev: providing input, video, etc. hotplug support
12 - xproto (build time dependency): definition of keysymbols (TODO: remove it)
13 - libxkbcommon: keyboard handling (optional but strongly recommended)
14 Without libxkbcommon, basic US-ASCII input is provided.
15 - glib: only for Unicode handling (TODO: remove it)
17 - freetype2: drawing generic text
18 - pango: drawing text with pango (use --enable-pango)
19 Pango requires: glib, cairo, pangocairo, pango and freetype2
22 To compile the kmscon binary, run the standard autotools commands:
23 $ ./configure [--enable-debug] [--enable-pango]
25 $ make install (TODO: this is currently not supported)
26 To compile the test applications, run:
30 To get usage information, run:
32 You can then run kmscon with:
33 $ ./kmscon [options] --switchvt
34 The --switchvt option will make your machine switch the active VT directly to
35 kmscon after starting it.
38 This software is licensed under the terms of the MIT license. Please see
39 ./COPYING for further information.
42 === Why didn't you use libvte or similar terminal emulators? ===
43 All existing terminal emulators I found highly depend on X. Also, their code
44 base often is a horrible mess. I haven't had the time to convert them to use
45 other drawing functions than Xlib, yet.
46 If you feel like doing this work, please notify me. I would be glad to adjust
47 my code to work with other terminal emulators.
50 This software is maintained by:
51 David Herrmann <dh.herrmann@googlemail.com>
52 If you have any questions, do not hesitate to contact one of the maintainers.
55 The kmscon code is split into several independent subsystems:
57 This code manages the KMS/DRI output and provides OpenGL framebuffers.
59 This draws the text on the screen and provides an API for any terminal
60 emulator to visualize its contents.
62 Main loop implementation.
66 Provides basic Unicode handling.
68 Font loading, caching and drawing operations.
70 All linux input events are captured here and converted to Unicode
71 characters for input handling.
73 The linux VT subsystem integration. This allows to run the application in
74 a classic linux VT like X does.
76 The terminal emulator library.
78 Connects the console, output, input and vte handling into a real terminal.
80 This connects all subsystems into a usable console application.