3 Kmscon is a simple terminal emulator based on linux kernel mode setting (KMS).
4 It is an attempt to replace the in-kernel VT implementation with a userspace
9 Kmscon requires the following software:
10 - libudev: providing input, video, etc. device hotplug support
11 - libxkbcommon: providing internationalized keyboard handling
12 libxkbcommon has no public release, yet, but is available on freedesktop.org.
13 Building libxkbcommon from Git without root:
14 - You can fetch it from Git using: git clone git://anongit.freedesktop.org/xorg/lib/libxkbcommon
15 - You can then ``./autogen.sh && make`` in its directory
16 - You configure kmscon using:
17 PKG_CONFIG_PATH="libxkbcommon/" ./configure --enable-debug
18 assuming you cloned it into a subfolder of kmscon called libxkbcommon.
20 Everything else is optional:
22 For video output at least one of the following is required:
23 - fbdev: For framebuffer video output the kernel headers must be installed
24 and located in the default include path.
25 - DRM: For unaccelerated drm output the "libdrm" library must be installed
26 and accessible via pkg-config.
27 - OpenGLES2: For accelerated video output via OpenGLESv2 the following must
28 be installed: libdrm, libgbm, egl, glesv2 (i.e., mesa)
30 For font handling the following is required:
31 - 8x16: The 8x16 font is a static built-in font which does not require
32 external dependencies.
33 - freetype2: The freetype2 font uses libfreetype2 and libfontconfig to
34 provide a very basic font backend.
35 - pango: drawing text with pango
36 Pango requires: glib, pango, fontconfig, freetype2 and more
38 For multi-seat support you need the following packages:
39 - systemd: Actually only the systemd-logind daemon and library is required.
43 To compile the kmscon binary, run the standard autotools commands:
44 $ ./autogen.sh (you need this only when building from git directly)
45 $ ./configure [--enable-debug] (debug-mode is strongly recommended)
47 $ make install (TODO: this is currently not supported)
48 To compile the test applications, run:
51 If you want only a very basic kmscon program without any major dependencies,
53 $ ./configure --disable-debug --disable-drm --disable-xkbcommon --disable-systemd --disable-pango --disable-freetype2
54 However, you will loose a lot of functionality by dropping all dependencies.
56 The following configure options are available. If build-time dependencies
57 cannot be satisfied, an option is automatically turned off, except if you
58 explicitely enable it via command line:
59 --enable-systemd: This requires the systemd-logind library to provide
60 multi-seat support for kmscon. [default: on]
61 --enable-udev: This requires libudev for hotplugging support. This is
62 currently mandatory and cannot be disabled. [default: on]
63 --enable-fbdev: This adds fbdev video output support. [default: on]
64 --enable-drm: This adds DRM video output support. [default: on]
65 --enable-gles2: This adds OpenGL hardware accelerated font rendering
67 --enable-f8x16: The 8x16 font is a static built-in fallback font
69 --enable-freetype2: Uses freetype2 and fontconfig as font-backend.
71 --enable-pango: Uses pango as font-backend. [default: on]
72 --enable-bblit: Use simply 2D bit-blitting as renderering fallback
74 --enable-debug: Enable debug mode [default: off]
75 --enable-optimizations: Use GCC code optimizations [default: on]
79 To get usage information, run:
81 You can then run kmscon with:
84 For debug output use "--debug". For verbose output use "--verbose". If you
85 didn't compile DRM support then you can use "--fbdev" to make kmscon select
86 available framebuffer devices.
88 With "--xkb-layout=<lang>" you can switch the keyboard layout.
92 This software is licensed under the terms of the MIT license. Please see
93 ./COPYING for further information.
97 Please see http://github.com/dvdhrm/kmscon/wiki
101 This software is maintained by:
102 David Herrmann <dh.herrmann@googlemail.com>
103 If you have any questions, do not hesitate to contact one of the maintainers.
107 The kmscon code is split into several independent subsystems:
109 This code manages the KMS/DRI output and provides OpenGL framebuffers.
111 This draws the text on the screen and provides an API for any terminal
112 emulator to visualize its contents.
114 Main loop implementation.
118 Provides basic Unicode handling.
120 Font loading, caching and drawing operations.
122 All linux input events are captured here and converted to Unicode
123 characters for input handling.
125 The linux VT subsystem integration. This allows to run the application in
126 a classic linux VT like X does.
128 The terminal emulator library.
130 Connects the console, output, input and vte handling into a real terminal.
132 This connects all subsystems into a usable console application.